Merge branch 'main' into add-feature-http-headers-suggestions

This commit is contained in:
Ashita Prasad
2024-01-06 06:11:44 +05:30
committed by GitHub
33 changed files with 1398 additions and 37 deletions

View File

@ -18,8 +18,8 @@ class DartDioCodeGen {
final next = generatedDartCode(
url: url,
method: requestModel.method,
queryParams: requestModel.paramsMap,
headers: requestModel.headersMap,
queryParams: requestModel.enabledParamsMap,
headers: requestModel.enabledHeadersMap,
body: requestModel.requestBody,
contentType: requestModel.requestBodyContentType,
);

View File

@ -20,8 +20,8 @@ class DartHttpCodeGen {
final next = generatedDartCode(
url: url,
method: requestModel.method,
queryParams: requestModel.paramsMap,
headers: requestModel.headersMap,
queryParams: requestModel.enabledParamsMap,
headers: requestModel.enabledHeadersMap,
body: requestModel.requestBody,
contentType: requestModel.requestBodyContentType,
);
@ -55,8 +55,11 @@ class DartHttpCodeGen {
final strContent = CodeExpression(Code('r\'\'\'$body\'\'\''));
dataExp = declareVar('body', type: refer('String')).assign(strContent);
composeHeaders.putIfAbsent(HttpHeaders.contentTypeHeader,
final hasContentTypeHeader = composeHeaders.keys.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
if (!hasContentTypeHeader) {
composeHeaders.putIfAbsent(HttpHeaders.contentTypeHeader,
() => kContentTypeMap[contentType] ?? '');
}
}
Expression? queryParamExp;

View File

@ -60,7 +60,7 @@ axios(config)
}
var rM = requestModel.copyWith(url: url);
var harJson = requestModelToHARJsonRequest(rM);
var harJson = requestModelToHARJsonRequest(rM, useEnabled: true);
var templateStart = jj.Template(kTemplateStart);
result += templateStart.render({

View File

@ -61,7 +61,7 @@ fetch(url, options)
}
var rM = requestModel.copyWith(url: url);
var harJson = requestModelToHARJsonRequest(rM);
var harJson = requestModelToHARJsonRequest(rM, useEnabled: true);
var templateStart = jj.Template(kTemplateStart);
result += templateStart.render({

View File

@ -77,7 +77,10 @@ import okhttp3.MediaType.Companion.toMediaType""";
url = "$defaultUriScheme://$url";
}
var rec = getValidRequestUri(url, requestModel.requestParams);
var rec = getValidRequestUri(
url,
requestModel.enabledRequestParams,
);
Uri? uri = rec.$1;
if (uri != null) {
@ -120,9 +123,9 @@ import okhttp3.MediaType.Companion.toMediaType""";
result = stringStart + result;
result += kStringRequestStart;
var headersList = requestModel.requestHeaders;
var headersList = requestModel.enabledRequestHeaders;
if (headersList != null) {
var headers = requestModel.headersMap;
var headers = requestModel.enabledHeadersMap;
if (headers.isNotEmpty) {
hasHeaders = true;
result += getHeaders(headers);

View File

@ -28,7 +28,7 @@ class cURLCodeGen {
}
var rM = requestModel.copyWith(url: url);
var harJson = requestModelToHARJsonRequest(rM);
var harJson = requestModelToHARJsonRequest(rM, useEnabled: true);
var templateStart = jj.Template(kTemplateStart);
result += templateStart.render({

View File

@ -9,8 +9,10 @@ class HARCodeGen {
) {
try {
var harString = kEncoder.convert(requestModelToHARJsonRequest(
requestModel,
defaultUriScheme: defaultUriScheme));
requestModel,
defaultUriScheme: defaultUriScheme,
useEnabled: true,
));
return harString;
} catch (e) {
return null;

View File

@ -71,7 +71,10 @@ print(data.decode("utf-8"))
}
result += kTemplateStart;
var rec = getValidRequestUri(url, requestModel.requestParams);
var rec = getValidRequestUri(
url,
requestModel.enabledRequestParams,
);
Uri? uri = rec.$1;
if (uri != null) {
@ -97,12 +100,14 @@ print(data.decode("utf-8"))
}
}
var headersList = requestModel.requestHeaders;
var headersList = requestModel.enabledRequestHeaders;
if (headersList != null || hasBody) {
var headers = requestModel.headersMap;
var headers = requestModel.enabledHeadersMap;
if (headers.isNotEmpty || hasBody) {
hasHeaders = true;
if (hasBody) {
bool hasContentTypeHeader = headers.keys.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
if (hasBody && !hasContentTypeHeader) {
headers[HttpHeaders.contentTypeHeader] =
kContentTypeMap[requestModel.requestBodyContentType] ?? "";
}

View File

@ -75,7 +75,10 @@ print('Response Body:', response.text)
url = "$defaultUriScheme://$url";
}
var rec = getValidRequestUri(url, requestModel.requestParams);
var rec = getValidRequestUri(
url,
requestModel.enabledRequestParams,
);
Uri? uri = rec.$1;
if (uri != null) {
var templateStartUrl = jj.Template(kTemplateStart);
@ -109,9 +112,9 @@ print('Response Body:', response.text)
}
}
var headersList = requestModel.requestHeaders;
var headersList = requestModel.enabledRequestHeaders;
if (headersList != null || hasBody) {
var headers = requestModel.headersMap;
var headers = requestModel.enabledHeadersMap;
if (headers.isNotEmpty || hasBody) {
hasHeaders = true;
if (hasBody) {

View File

@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:apidash/consts.dart';
import 'package:apidash/utils/utils.dart' show mapToRows, rowsToMap;
import 'package:apidash/utils/utils.dart'
show mapToRows, rowsToMap, getEnabledRows;
import 'name_value_model.dart';
import 'response_model.dart';
@ -15,6 +16,8 @@ class RequestModel {
this.requestTabIndex = 0,
this.requestHeaders,
this.requestParams,
this.isHeaderEnabledList,
this.isParamEnabledList,
this.requestBodyContentType = ContentType.json,
this.requestBody,
this.responseStatus,
@ -30,12 +33,23 @@ class RequestModel {
final int requestTabIndex;
final List<NameValueModel>? requestHeaders;
final List<NameValueModel>? requestParams;
final List<bool>? isHeaderEnabledList;
final List<bool>? isParamEnabledList;
final ContentType requestBodyContentType;
final String? requestBody;
final int? responseStatus;
final String? message;
final ResponseModel? responseModel;
List<NameValueModel>? get enabledRequestHeaders =>
getEnabledRows(requestHeaders, isHeaderEnabledList);
List<NameValueModel>? get enabledRequestParams =>
getEnabledRows(requestParams, isParamEnabledList);
Map<String, String> get enabledHeadersMap =>
rowsToMap(enabledRequestHeaders) ?? {};
Map<String, String> get enabledParamsMap =>
rowsToMap(enabledRequestParams) ?? {};
Map<String, String> get headersMap => rowsToMap(requestHeaders) ?? {};
Map<String, String> get paramsMap => rowsToMap(requestParams) ?? {};
@ -50,6 +64,10 @@ class RequestModel {
description: description,
requestHeaders: requestHeaders != null ? [...requestHeaders!] : null,
requestParams: requestParams != null ? [...requestParams!] : null,
isHeaderEnabledList:
isHeaderEnabledList != null ? [...isHeaderEnabledList!] : null,
isParamEnabledList:
isParamEnabledList != null ? [...isParamEnabledList!] : null,
requestBodyContentType: requestBodyContentType,
requestBody: requestBody,
);
@ -64,6 +82,8 @@ class RequestModel {
int? requestTabIndex,
List<NameValueModel>? requestHeaders,
List<NameValueModel>? requestParams,
List<bool>? isHeaderEnabledList,
List<bool>? isParamEnabledList,
ContentType? requestBodyContentType,
String? requestBody,
int? responseStatus,
@ -72,6 +92,8 @@ class RequestModel {
}) {
var headers = requestHeaders ?? this.requestHeaders;
var params = requestParams ?? this.requestParams;
var enabledHeaders = isHeaderEnabledList ?? this.isHeaderEnabledList;
var enabledParams = isParamEnabledList ?? this.isParamEnabledList;
return RequestModel(
id: id ?? this.id,
method: method ?? this.method,
@ -81,6 +103,8 @@ class RequestModel {
requestTabIndex: requestTabIndex ?? this.requestTabIndex,
requestHeaders: headers != null ? [...headers] : null,
requestParams: params != null ? [...params] : null,
isHeaderEnabledList: enabledHeaders != null ? [...enabledHeaders] : null,
isParamEnabledList: enabledParams != null ? [...enabledParams] : null,
requestBodyContentType:
requestBodyContentType ?? this.requestBodyContentType,
requestBody: requestBody ?? this.requestBody,
@ -106,6 +130,8 @@ class RequestModel {
final description = data["description"] as String?;
final requestHeaders = data["requestHeaders"];
final requestParams = data["requestParams"];
final isHeaderEnabledList = data["isHeaderEnabledList"] as List<bool>?;
final isParamEnabledList = data["isParamEnabledList"] as List<bool>?;
try {
requestBodyContentType =
ContentType.values.byName(data["requestBodyContentType"] as String);
@ -136,6 +162,8 @@ class RequestModel {
requestParams: requestParams != null
? mapToRows(Map<String, String>.from(requestParams))
: null,
isHeaderEnabledList: isHeaderEnabledList,
isParamEnabledList: isParamEnabledList,
requestBodyContentType: requestBodyContentType,
requestBody: requestBody,
responseStatus: responseStatus,
@ -153,6 +181,8 @@ class RequestModel {
"description": description,
"requestHeaders": rowsToMap(requestHeaders),
"requestParams": rowsToMap(requestParams),
"isHeaderEnabledList": isHeaderEnabledList,
"isParamEnabledList": isParamEnabledList,
"requestBodyContentType": requestBodyContentType.name,
"requestBody": requestBody,
"responseStatus": includeResponse ? responseStatus : null,
@ -171,7 +201,9 @@ class RequestModel {
"Request Description: $description",
"Request Tab Index: ${requestTabIndex.toString()}",
"Request Headers: ${requestHeaders.toString()}",
"Enabled Headers: ${isHeaderEnabledList.toString()}",
"Request Params: ${requestParams.toString()}",
"Enabled Params: ${isParamEnabledList.toString()}",
"Request Body Content Type: ${requestBodyContentType.toString()}",
"Request Body: ${requestBody.toString()}",
"Response Status: $responseStatus",
@ -192,6 +224,8 @@ class RequestModel {
other.requestTabIndex == requestTabIndex &&
listEquals(other.requestHeaders, requestHeaders) &&
listEquals(other.requestParams, requestParams) &&
listEquals(other.isHeaderEnabledList, isHeaderEnabledList) &&
listEquals(other.isParamEnabledList, isParamEnabledList) &&
other.requestBodyContentType == requestBodyContentType &&
other.requestBody == requestBody &&
other.responseStatus == responseStatus &&
@ -211,6 +245,8 @@ class RequestModel {
requestTabIndex,
requestHeaders,
requestParams,
isHeaderEnabledList,
isParamEnabledList,
requestBodyContentType,
requestBody,
responseStatus,

View File

@ -123,6 +123,8 @@ class CollectionStateNotifier
int? requestTabIndex,
List<NameValueModel>? requestHeaders,
List<NameValueModel>? requestParams,
List<bool>? isHeaderEnabledList,
List<bool>? isParamEnabledList,
ContentType? requestBodyContentType,
String? requestBody,
int? responseStatus,
@ -137,12 +139,13 @@ class CollectionStateNotifier
requestTabIndex: requestTabIndex,
requestHeaders: requestHeaders,
requestParams: requestParams,
isHeaderEnabledList: isHeaderEnabledList,
isParamEnabledList: isParamEnabledList,
requestBodyContentType: requestBodyContentType,
requestBody: requestBody,
responseStatus: responseStatus,
message: message,
responseModel: responseModel);
//print(newModel);
var map = {...state!};
map[id] = newModel;
state = map;
@ -175,7 +178,6 @@ class CollectionStateNotifier
responseModel: responseModel,
);
}
//print(newRequestModel);
ref.read(sentRequestIdStateProvider.notifier).state = null;
var map = {...state!};
map[id] = newRequestModel;

View File

@ -16,6 +16,7 @@ class EditRequestHeaders extends ConsumerStatefulWidget {
class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
late List<NameValueModel> rows;
late List<bool> isRowEnabledList;
final random = Random.secure();
late int seed;
@ -26,9 +27,11 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
}
void _onFieldChange(String activeId) {
ref
.read(collectionStateNotifierProvider.notifier)
.update(activeId, requestHeaders: rows);
ref.read(collectionStateNotifierProvider.notifier).update(
activeId,
requestHeaders: rows,
isHeaderEnabledList: isRowEnabledList,
);
}
@override
@ -42,10 +45,31 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
kNameValueEmptyModel,
]
: rH;
isRowEnabledList =
ref.read(activeRequestModelProvider)?.isHeaderEnabledList ??
List.filled(rows.length, true, growable: true);
DaviModel<NameValueModel> model = DaviModel<NameValueModel>(
rows: rows,
columns: [
DaviColumn(
name: 'Checkbox',
width: 36,
cellBuilder: (_, row) {
int idx = row.index;
return CheckBox(
keyId: "$activeId-$idx-headers-c-$seed",
value: isRowEnabledList[idx],
onChanged: (value) {
setState(() {
isRowEnabledList[idx] = value!;
});
_onFieldChange(activeId!);
},
colorScheme: Theme.of(context).colorScheme,
);
},
),
DaviColumn(
name: 'Header Name',
grow: 1,
@ -106,9 +130,11 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
rows = [
kNameValueEmptyModel,
];
isRowEnabledList = [true];
});
} else {
rows.removeAt(row.index);
isRowEnabledList.removeAt(row.index);
}
_onFieldChange(activeId!);
},
@ -143,6 +169,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
child: ElevatedButton.icon(
onPressed: () {
rows.add(kNameValueEmptyModel);
isRowEnabledList.add(true);
_onFieldChange(activeId!);
},
icon: const Icon(Icons.add),

View File

@ -17,6 +17,7 @@ class EditRequestURLParams extends ConsumerStatefulWidget {
class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
late List<NameValueModel> rows;
late List<bool> isRowEnabledList;
final random = Random.secure();
late int seed;
@ -27,9 +28,11 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
}
void _onFieldChange(String activeId) {
ref
.read(collectionStateNotifierProvider.notifier)
.update(activeId, requestParams: rows);
ref.read(collectionStateNotifierProvider.notifier).update(
activeId,
requestParams: rows,
isParamEnabledList: isRowEnabledList,
);
}
@override
@ -43,10 +46,32 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
kNameValueEmptyModel,
]
: rP;
isRowEnabledList =
ref.read(activeRequestModelProvider)?.isParamEnabledList ??
List.filled(rows.length, true, growable: true);
DaviModel<NameValueModel> model = DaviModel<NameValueModel>(
rows: rows,
columns: [
DaviColumn(
name: 'Checkbox',
width: 36,
cellBuilder: (_, row) {
int idx = row.index;
return CheckBox(
keyId: "$activeId-$idx-params-c-$seed",
value: isRowEnabledList[idx],
onChanged: (value) {
setState(() {
isRowEnabledList[idx] = value!;
});
_onFieldChange(activeId!);
},
colorScheme: Theme.of(context).colorScheme,
);
},
),
DaviColumn(
name: 'URL Parameter',
grow: 1,
@ -107,9 +132,11 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
rows = [
kNameValueEmptyModel,
];
isRowEnabledList = [true];
});
} else {
rows.removeAt(row.index);
isRowEnabledList.removeAt(row.index);
}
_onFieldChange(activeId!);
},
@ -144,6 +171,7 @@ class EditRequestURLParamsState extends ConsumerState<EditRequestURLParams> {
child: ElevatedButton.icon(
onPressed: () {
rows.add(kNameValueEmptyModel);
isRowEnabledList.add(true);
_onFieldChange(activeId!);
},
icon: const Icon(Icons.add),

View File

@ -12,12 +12,12 @@ Future<(http.Response?, Duration?, String?)> request(
}) async {
(Uri?, String?) uriRec = getValidRequestUri(
requestModel.url,
requestModel.requestParams,
requestModel.enabledRequestParams,
defaultUriScheme: defaultUriScheme,
);
if (uriRec.$1 != null) {
Uri requestUrl = uriRec.$1!;
Map<String, String> headers = requestModel.headersMap;
Map<String, String> headers = requestModel.enabledHeadersMap;
http.Response response;
String? body;
try {
@ -28,8 +28,11 @@ Future<(http.Response?, Duration?, String?)> request(
if (contentLength > 0) {
body = requestBody;
headers[HttpHeaders.contentLengthHeader] = contentLength.toString();
headers[HttpHeaders.contentTypeHeader] =
final hasContentTypeHeader = headers.keys.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
if (!hasContentTypeHeader) {
headers[HttpHeaders.contentTypeHeader] =
kContentTypeMap[requestModel.requestBodyContentType] ?? "";
}
}
}
Stopwatch stopwatch = Stopwatch()..start();

View File

@ -109,3 +109,13 @@ Uint8List jsonMapToBytes(Map<String, dynamic>? map) {
return bytes;
}
}
List<NameValueModel>? getEnabledRows(
List<NameValueModel>? rows, List<bool>? isRowEnabledList) {
if (rows == null || isRowEnabledList == null) {
return rows;
}
List<NameValueModel> finalRows =
rows.where((element) => isRowEnabledList[rows.indexOf(element)]).toList();
return finalRows == [] ? null : finalRows;
}

View File

@ -1,4 +1,5 @@
import 'dart:convert';
import 'dart:io';
import 'package:apidash/consts.dart';
import 'package:apidash/utils/utils.dart' show getValidRequestUri;
import 'package:apidash/models/models.dart' show RequestModel;
@ -74,13 +75,14 @@ Map<String, dynamic> requestModelToHARJsonRequest(
RequestModel requestModel, {
defaultUriScheme = kDefaultUriScheme,
bool exportMode = false,
bool useEnabled = false,
}) {
Map<String, dynamic> json = {};
bool hasBody = false;
var rec = getValidRequestUri(
requestModel.url,
requestModel.requestParams,
requestModel.enabledRequestParams,
defaultUriScheme: defaultUriScheme,
);
@ -125,11 +127,16 @@ Map<String, dynamic> requestModelToHARJsonRequest(
}
}
var headersList = requestModel.requestHeaders;
var headersList = useEnabled
? requestModel.enabledRequestHeaders
: requestModel.requestHeaders;
if (headersList != null || hasBody) {
var headers = requestModel.headersMap;
var headers =
useEnabled ? requestModel.enabledHeadersMap : requestModel.headersMap;
if (headers.isNotEmpty || hasBody) {
if (hasBody) {
bool hasContentTypeHeader = headers.keys.any((k) => k.toLowerCase() == HttpHeaders.contentTypeHeader);
if (hasBody && !hasContentTypeHeader) {
var m = {
"name": "Content-Type",
"value": kContentTypeMap[requestModel.requestBodyContentType] ?? ""

View File

@ -32,7 +32,7 @@ Map<String, String> headers = {
"Content-Security-Policy":
"Controls the sources from which content can be loaded on a web page to mitigate various types of attacks.",
"Content-Type":
"Indicates the original media type of the resource before any content-encoding applied for sending.",
"Indicates the original media type of the resource (prior to any content encoding applied for sending)",
"Cookie": "Used to send previously stored cookies back to the server.",
"Cross-Origin-Embedder-Policy":
"Controls whether a document is allowed to be embedded in another document.",

41
lib/widgets/checkbox.dart Normal file
View File

@ -0,0 +1,41 @@
import 'package:flutter/material.dart';
class CheckBox extends StatelessWidget {
final String keyId;
final bool value;
final ValueChanged<bool?> onChanged;
final ColorScheme? colorScheme;
const CheckBox({
super.key,
required this.keyId,
required this.value,
required this.onChanged,
this.colorScheme,
});
@override
Widget build(BuildContext context) {
var colorScheme = this.colorScheme ?? Theme.of(context).colorScheme;
return Checkbox(
key: Key(keyId),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(3),
),
side: BorderSide(
color: colorScheme.surfaceVariant,
width: 1.5,
),
splashRadius: 0,
value: value,
onChanged: onChanged,
checkColor: colorScheme.onPrimary,
fillColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.selected)) {
return colorScheme.primary;
}
return null;
},
));
}
}

View File

@ -1,5 +1,6 @@
export 'buttons.dart';
export 'cards.dart';
export 'checkbox.dart';
export 'code_previewer.dart';
export 'codegen_previewer.dart';
export 'dropdowns.dart';

View File

@ -54,6 +54,37 @@ void main() {
--header 'User-Agent: Test Agent'""";
expect(curlCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social?num=8700000&add_space=true'""";
expect(curlCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social' \
--header 'User-Agent: Test Agent'""";
expect(
curlCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social?num=8700000&digits=3' \
--header 'User-Agent: Test Agent'""";
expect(curlCodeGen.getCode(requestModelGet11, "https"), expectedCode);
});
test('GET 12', () {
const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social'""";
expect(curlCodeGen.getCode(requestModelGet12, "https"), expectedCode);
});
});
group('HEAD Request', () {
@ -100,6 +131,7 @@ void main() {
expect(curlCodeGen.getCode(requestModelPost3, "https"), expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""curl --request PUT \

View File

@ -208,6 +208,115 @@ void main() async {
""";
expect(dartDioCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
void main() async {
try {
final queryParams = {
'num': '8700000',
'add_space': 'true',
};
final response = await dio.Dio.get(
'https://api.foss42.com/humanize/social',
queryParameters: queryParams,
);
print(response.statusCode);
print(response.data);
} on DioException catch (e, s) {
print(e.response?.statusCode);
print(e.response?.data);
print(s);
} catch (e, s) {
print(e);
print(s);
}
}
""";
expect(dartDioCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
void main() async {
try {
final headers = {'User-Agent': 'Test Agent'};
final response = await dio.Dio.get(
'https://api.foss42.com/humanize/social',
options: Options(headers: headers),
);
print(response.statusCode);
print(response.data);
} on DioException catch (e, s) {
print(e.response?.statusCode);
print(e.response?.data);
print(s);
} catch (e, s) {
print(e);
print(s);
}
}
""";
expect(
dartDioCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
void main() async {
try {
final queryParams = {
'num': '8700000',
'digits': '3',
};
final headers = {'User-Agent': 'Test Agent'};
final response = await dio.Dio.get(
'https://api.foss42.com/humanize/social',
queryParameters: queryParams,
options: Options(headers: headers),
);
print(response.statusCode);
print(response.data);
} on DioException catch (e, s) {
print(e.response?.statusCode);
print(e.response?.data);
print(s);
} catch (e, s) {
print(e);
print(s);
}
}
""";
expect(dartDioCodeGen.getCode(requestModelGet11, "https"), expectedCode);
});
test('GET 12', () {
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
void main() async {
try {
final response = await dio.Dio.get('https://api.foss42.com/humanize/social');
print(response.statusCode);
print(response.data);
} on DioException catch (e, s) {
print(e.response?.statusCode);
print(e.response?.data);
print(s);
} catch (e, s) {
print(e);
print(s);
}
}
""";
expect(dartDioCodeGen.getCode(requestModelGet12, "https"), expectedCode);
});
});
group('HEAD Request', () {
@ -340,6 +449,7 @@ void main() async {
expect(dartDioCodeGen.getCode(requestModelPost3, "https"), expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""import 'package:dio/dio.dart' as dio;

View File

@ -213,6 +213,117 @@ void main() async {
""";
expect(dartHttpCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social');
var queryParams = {
'num': '8700000',
'add_space': 'true',
};
uri = uri.replace(queryParameters: queryParams);
final response = await http.get(uri);
int statusCode = response.statusCode;
if (statusCode >= 200 && statusCode < 300) {
print('Status Code: $statusCode');
print('Response Body: ${response.body}');
} else {
print('Error Status Code: $statusCode');
print('Error Response Body: ${response.body}');
}
}
""";
expect(dartHttpCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social');
var headers = {'User-Agent': 'Test Agent'};
final response = await http.get(
uri,
headers: headers,
);
int statusCode = response.statusCode;
if (statusCode >= 200 && statusCode < 300) {
print('Status Code: $statusCode');
print('Response Body: ${response.body}');
} else {
print('Error Status Code: $statusCode');
print('Error Response Body: ${response.body}');
}
}
""";
expect(
dartHttpCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social');
var queryParams = {
'num': '8700000',
'digits': '3',
};
uri = uri.replace(queryParameters: queryParams);
var headers = {'User-Agent': 'Test Agent'};
final response = await http.get(
uri,
headers: headers,
);
int statusCode = response.statusCode;
if (statusCode >= 200 && statusCode < 300) {
print('Status Code: $statusCode');
print('Response Body: ${response.body}');
} else {
print('Error Status Code: $statusCode');
print('Error Response Body: ${response.body}');
}
}
""";
expect(dartHttpCodeGen.getCode(requestModelGet11, "https"), expectedCode);
});
test('GET 12', () {
const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social');
final response = await http.get(uri);
int statusCode = response.statusCode;
if (statusCode >= 200 && statusCode < 300) {
print('Status Code: $statusCode');
print('Response Body: ${response.body}');
} else {
print('Error Status Code: $statusCode');
print('Error Response Body: ${response.body}');
}
}
""";
expect(dartHttpCodeGen.getCode(requestModelGet12, "https"), expectedCode);
});
});
group('HEAD Request', () {
@ -356,6 +467,7 @@ void main() async {
expect(dartHttpCodeGen.getCode(requestModelPost3, "https"), expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""import 'package:http/http.dart' as http;

View File

@ -149,6 +149,83 @@ void main() {
}""";
expect(harCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode = r"""{
"method": "GET",
"url": "https://api.foss42.com/humanize/social?num=8700000&add_space=true",
"httpVersion": "HTTP/1.1",
"queryString": [
{
"name": "num",
"value": "8700000"
},
{
"name": "add_space",
"value": "true"
}
],
"headers": []
}""";
expect(harCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode = r"""{
"method": "GET",
"url": "https://api.foss42.com/humanize/social",
"httpVersion": "HTTP/1.1",
"queryString": [],
"headers": [
{
"name": "User-Agent",
"value": "Test Agent"
}
]
}""";
expect(
harCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""{
"method": "GET",
"url": "https://api.foss42.com/humanize/social?num=8700000&digits=3",
"httpVersion": "HTTP/1.1",
"queryString": [
{
"name": "num",
"value": "8700000"
},
{
"name": "digits",
"value": "3"
}
],
"headers": [
{
"name": "User-Agent",
"value": "Test Agent"
}
]
}""";
expect(harCodeGen.getCode(requestModelGet11, "https"), expectedCode);
});
test('GET 12', () {
const expectedCode = r"""{
"method": "GET",
"url": "https://api.foss42.com/humanize/social",
"httpVersion": "HTTP/1.1",
"queryString": [],
"headers": []
}""";
expect(harCodeGen.getCode(requestModelGet12, "https"), expectedCode);
});
});
group('HEAD Request', () {
@ -240,6 +317,7 @@ void main() {
expect(harCodeGen.getCode(requestModelPost3, "https"), expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""{

View File

@ -201,6 +201,109 @@ axios(config)
""";
expect(axiosCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social',
method: 'get',
params: {
"num": "8700000",
"add_space": "true"
}
};
axios(config)
.then(function (response) {
// handle success
console.log(response.status);
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
console.log(error);
});
""";
expect(axiosCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social',
method: 'get',
headers: {
"User-Agent": "Test Agent"
}
};
axios(config)
.then(function (response) {
// handle success
console.log(response.status);
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
console.log(error);
});
""";
expect(
axiosCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social',
method: 'get',
params: {
"num": "8700000",
"digits": "3"
},
headers: {
"User-Agent": "Test Agent"
}
};
axios(config)
.then(function (response) {
// handle success
console.log(response.status);
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
console.log(error);
});
""";
expect(axiosCodeGen.getCode(requestModelGet11, "https"), expectedCode);
});
test('GET 12', () {
const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social',
method: 'get'
};
axios(config)
.then(function (response) {
// handle success
console.log(response.status);
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
console.log(error);
});
""";
expect(axiosCodeGen.getCode(requestModelGet12, "https"), expectedCode);
});
});
group('HEAD Request', () {
@ -324,6 +427,7 @@ axios(config)
expect(axiosCodeGen.getCode(requestModelPost3, "https"), expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""let config = {

View File

@ -220,6 +220,121 @@ fetch(url, options)
""";
expect(fetchCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social?num=8700000&add_space=true';
let options = {
method: 'GET'
};
let status;
fetch(url, options)
.then(res => {
status = res.status;
return res.json()
})
.then(body => {
console.log(status);
console.log(body);
})
.catch(err => {
console.log(status);
console.error('error:' + err);
});
""";
expect(fetchCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social';
let options = {
method: 'GET',
headers: {
"User-Agent": "Test Agent"
}
};
let status;
fetch(url, options)
.then(res => {
status = res.status;
return res.json()
})
.then(body => {
console.log(status);
console.log(body);
})
.catch(err => {
console.log(status);
console.error('error:' + err);
});
""";
expect(
fetchCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social?num=8700000&digits=3';
let options = {
method: 'GET',
headers: {
"User-Agent": "Test Agent"
}
};
let status;
fetch(url, options)
.then(res => {
status = res.status;
return res.json()
})
.then(body => {
console.log(status);
console.log(body);
})
.catch(err => {
console.log(status);
console.error('error:' + err);
});
""";
expect(fetchCodeGen.getCode(requestModelGet11, "https"), expectedCode);
});
test('GET 12', () {
const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social';
let options = {
method: 'GET'
};
let status;
fetch(url, options)
.then(res => {
status = res.status;
return res.json()
})
.then(body => {
console.log(status);
console.log(body);
})
.catch(err => {
console.log(status);
console.error('error:' + err);
});
""";
expect(fetchCodeGen.getCode(requestModelGet12, "https"), expectedCode);
});
});
group('HEAD Request', () {
@ -366,6 +481,7 @@ fetch(url, options)
expect(fetchCodeGen.getCode(requestModelPost3, "https"), expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""let url = 'https://reqres.in/api/users/2';

View File

@ -219,6 +219,116 @@ fun main() {
expect(
kotlinOkHttpCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode = r"""import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.HttpUrl.Companion.toHttpUrl
fun main() {
val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social".toHttpUrl().newBuilder()
.addQueryParameter("num", "8700000")
.addQueryParameter("add_space", "true")
.build()
val request = Request.Builder()
.url(url)
.get()
.build()
val response = client.newCall(request).execute()
println(response.code)
println(response.body?.string())
}
""";
expect(
kotlinOkHttpCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode = r"""import okhttp3.OkHttpClient
import okhttp3.Request
fun main() {
val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social"
val request = Request.Builder()
.url(url)
.addHeader("User-Agent", "Test Agent")
.get()
.build()
val response = client.newCall(request).execute()
println(response.code)
println(response.body?.string())
}
""";
expect(
kotlinOkHttpCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.HttpUrl.Companion.toHttpUrl
fun main() {
val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social".toHttpUrl().newBuilder()
.addQueryParameter("num", "8700000")
.addQueryParameter("digits", "3")
.build()
val request = Request.Builder()
.url(url)
.addHeader("User-Agent", "Test Agent")
.get()
.build()
val response = client.newCall(request).execute()
println(response.code)
println(response.body?.string())
}
""";
expect(kotlinOkHttpCodeGen.getCode(requestModelGet11, "https"),
expectedCode);
});
test('GET 12', () {
const expectedCode = r"""import okhttp3.OkHttpClient
import okhttp3.Request
fun main() {
val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social"
val request = Request.Builder()
.url(url)
.get()
.build()
val response = client.newCall(request).execute()
println(response.code)
println(response.body?.string())
}
""";
expect(kotlinOkHttpCodeGen.getCode(requestModelGet12, "https"),
expectedCode);
});
});
group('HEAD Request', () {
@ -369,6 +479,7 @@ fun main() {
expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r'''import okhttp3.OkHttpClient

View File

@ -217,6 +217,117 @@ axios(config)
""";
expect(axiosCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode = r"""import axios from 'axios';
let config = {
url: 'https://api.foss42.com/humanize/social',
method: 'get',
params: {
"num": "8700000",
"add_space": "true"
}
};
axios(config)
.then(function (response) {
// handle success
console.log(response.status);
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
console.log(error);
});
""";
expect(axiosCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode = r"""import axios from 'axios';
let config = {
url: 'https://api.foss42.com/humanize/social',
method: 'get',
headers: {
"User-Agent": "Test Agent"
}
};
axios(config)
.then(function (response) {
// handle success
console.log(response.status);
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
console.log(error);
});
""";
expect(
axiosCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""import axios from 'axios';
let config = {
url: 'https://api.foss42.com/humanize/social',
method: 'get',
params: {
"num": "8700000",
"digits": "3"
},
headers: {
"User-Agent": "Test Agent"
}
};
axios(config)
.then(function (response) {
// handle success
console.log(response.status);
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
console.log(error);
});
""";
expect(axiosCodeGen.getCode(requestModelGet11, "https"), expectedCode);
});
test('GET 12', () {
const expectedCode = r"""import axios from 'axios';
let config = {
url: 'https://api.foss42.com/humanize/social',
method: 'get'
};
axios(config)
.then(function (response) {
// handle success
console.log(response.status);
console.log(response.data);
})
.catch(function (error) {
// handle error
console.log(error.response.status);
console.log(error);
});
""";
expect(axiosCodeGen.getCode(requestModelGet12, "https"), expectedCode);
});
});
group('HEAD Request', () {
@ -350,6 +461,7 @@ axios(config)
expect(axiosCodeGen.getCode(requestModelPost3, "https"), expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""import axios from 'axios';

View File

@ -230,6 +230,125 @@ fetch(url, options)
""";
expect(fetchCodeGen.getCode(requestModelGet8, "https"), expectedCode);
});
test('GET 9', () {
const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social?num=8700000&add_space=true';
let options = {
method: 'GET'
};
let status;
fetch(url, options)
.then(res => {
status = res.status;
return res.json()
})
.then(body => {
console.log(status);
console.log(body);
})
.catch(err => {
console.log(status);
console.error('error:' + err);
});
""";
expect(fetchCodeGen.getCode(requestModelGet9, "https"), expectedCode);
});
test('GET 10', () {
const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social';
let options = {
method: 'GET',
headers: {
"User-Agent": "Test Agent"
}
};
let status;
fetch(url, options)
.then(res => {
status = res.status;
return res.json()
})
.then(body => {
console.log(status);
console.log(body);
})
.catch(err => {
console.log(status);
console.error('error:' + err);
});
""";
expect(
fetchCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social?num=8700000&digits=3';
let options = {
method: 'GET',
headers: {
"User-Agent": "Test Agent"
}
};
let status;
fetch(url, options)
.then(res => {
status = res.status;
return res.json()
})
.then(body => {
console.log(status);
console.log(body);
})
.catch(err => {
console.log(status);
console.error('error:' + err);
});
""";
expect(fetchCodeGen.getCode(requestModelGet11, "https"), expectedCode);
});
test('GET 12', () {
const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social';
let options = {
method: 'GET'
};
let status;
fetch(url, options)
.then(res => {
status = res.status;
return res.json()
})
.then(body => {
console.log(status);
console.log(body);
})
.catch(err => {
console.log(status);
console.error('error:' + err);
});
""";
expect(fetchCodeGen.getCode(requestModelGet12, "https"), expectedCode);
});
});
group('HEAD Request', () {
@ -386,6 +505,7 @@ fetch(url, options)
expect(fetchCodeGen.getCode(requestModelPost3, "https"), expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""import fetch from 'node-fetch';

View File

@ -174,6 +174,94 @@ print(data.decode("utf-8"))
expect(pythonHttpClientCodeGen.getCode(requestModelGet8, "https"),
expectedCode);
});
test('GET 9', () {
const expectedCode = r"""import http.client
from urllib.parse import urlencode
queryParams = {
"num": "8700000",
"add_space": "true"
}
queryParamsStr = '?' + urlencode(queryParams)
conn = http.client.HTTPSConnection("api.foss42.com")
conn.request("GET", "/humanize/social" + queryParamsStr)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(pythonHttpClientCodeGen.getCode(requestModelGet9, "https"),
expectedCode);
});
test('GET 10', () {
const expectedCode = r"""import http.client
headers = {
"User-Agent": "Test Agent"
}
conn = http.client.HTTPSConnection("api.foss42.com")
conn.request("GET", "/humanize/social",
headers= headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(
pythonHttpClientCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""import http.client
from urllib.parse import urlencode
queryParams = {
"num": "8700000",
"digits": "3"
}
queryParamsStr = '?' + urlencode(queryParams)
headers = {
"User-Agent": "Test Agent"
}
conn = http.client.HTTPSConnection("api.foss42.com")
conn.request("GET", "/humanize/social" + queryParamsStr,
headers= headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(pythonHttpClientCodeGen.getCode(requestModelGet11, "https"),
expectedCode);
});
test('GET 12', () {
const expectedCode = r"""import http.client
conn = http.client.HTTPSConnection("api.foss42.com")
conn.request("GET", "/humanize/social")
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(pythonHttpClientCodeGen.getCode(requestModelGet12, "https"),
expectedCode);
});
});
group('HEAD Request', () {
@ -285,6 +373,7 @@ print(data.decode("utf-8"))
expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""import http.client

View File

@ -153,6 +153,84 @@ print('Response Body:', response.text)
expect(pythonRequestsCodeGen.getCode(requestModelGet8, "https"),
expectedCode);
});
test('GET 9', () {
const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social'
params = {
"num": "8700000",
"add_space": "true"
}
response = requests.get(url, params=params)
print('Status Code:', response.status_code)
print('Response Body:', response.text)
""";
expect(pythonRequestsCodeGen.getCode(requestModelGet9, "https"),
expectedCode);
});
test('GET 10', () {
const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social'
headers = {
"User-Agent": "Test Agent"
}
response = requests.get(url, headers=headers)
print('Status Code:', response.status_code)
print('Response Body:', response.text)
""";
expect(
pythonRequestsCodeGen.getCode(
requestModelGet10,
"https",
),
expectedCode);
});
test('GET 11', () {
const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social'
params = {
"num": "8700000",
"digits": "3"
}
headers = {
"User-Agent": "Test Agent"
}
response = requests.get(url, params=params, headers=headers)
print('Status Code:', response.status_code)
print('Response Body:', response.text)
""";
expect(pythonRequestsCodeGen.getCode(requestModelGet11, "https"),
expectedCode);
});
test('GET 12', () {
const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social'
response = requests.get(url)
print('Status Code:', response.status_code)
print('Response Body:', response.text)
""";
expect(pythonRequestsCodeGen.getCode(requestModelGet12, "https"),
expectedCode);
});
});
group('HEAD Request', () {
@ -248,6 +326,7 @@ print('Response Body:', response.text)
expectedCode);
});
});
group('PUT Request', () {
test('PUT 1', () {
const expectedCode = r"""import requests

View File

@ -106,7 +106,9 @@ void main() {
'content-length': '18',
'content-type': 'application/json; charset=utf-8'
},
'isHeaderEnabledList': null,
'requestParams': null,
'isParamEnabledList': null,
"requestBodyContentType": 'json',
"requestBody": '''{
"text":"WORLD"
@ -140,7 +142,9 @@ void main() {
"Request Description: ",
"Request Tab Index: 0",
"Request Headers: [NameValueModel(name: content-length, value: 18), NameValueModel(name: content-type, value: application/json; charset=utf-8)]",
"Enabled Headers: null",
"Request Params: null",
"Enabled Params: null",
"Request Body Content Type: ContentType.json",
'Request Body: {\n"text":"WORLD"\n}',
"Response Status: null",

View File

@ -90,6 +90,94 @@ const requestModelGet8 = RequestModel(
],
);
/// GET request model with some params enabled
const requestModelGet9 = RequestModel(
id: 'enabledParams',
url: 'https://api.foss42.com/humanize/social',
method: HTTPVerb.get,
requestParams: [
NameValueModel(name: 'num', value: '8700000'),
NameValueModel(name: 'digits', value: '3'),
NameValueModel(name: 'system', value: 'SS'),
NameValueModel(name: 'add_space', value: 'true'),
],
isParamEnabledList: [
true,
false,
false,
true,
],
);
/// GET Request model with some headers enabled
const requestModelGet10 = RequestModel(
id: 'enabledParams',
url: 'https://api.foss42.com/humanize/social',
method: HTTPVerb.get,
requestHeaders: [
NameValueModel(name: 'User-Agent', value: 'Test Agent'),
NameValueModel(name: 'Content-Type', value: 'application/json'),
],
isHeaderEnabledList: [
true,
false,
],
);
/// GET Request model with some headers & URL parameters enabled
const requestModelGet11 = RequestModel(
id: 'enabledRows',
url: 'https://api.foss42.com/humanize/social',
method: HTTPVerb.get,
requestParams: [
NameValueModel(name: 'num', value: '8700000'),
NameValueModel(name: 'digits', value: '3'),
NameValueModel(name: 'system', value: 'SS'),
NameValueModel(name: 'add_space', value: 'true'),
],
requestHeaders: [
NameValueModel(name: 'User-Agent', value: 'Test Agent'),
NameValueModel(name: 'Content-Type', value: 'application/json'),
],
isParamEnabledList: [
true,
true,
false,
false,
],
isHeaderEnabledList: [
true,
false,
],
);
/// Request model with all headers & URL parameters disabled
const requestModelGet12 = RequestModel(
id: 'disabledRows',
url: 'https://api.foss42.com/humanize/social',
method: HTTPVerb.get,
requestParams: [
NameValueModel(name: 'num', value: '8700000'),
NameValueModel(name: 'digits', value: '3'),
NameValueModel(name: 'system', value: 'SS'),
NameValueModel(name: 'add_space', value: 'true'),
],
requestHeaders: [
NameValueModel(name: 'User-Agent', value: 'Test Agent'),
NameValueModel(name: 'Content-Type', value: 'application/json'),
],
isParamEnabledList: [
false,
false,
false,
false,
],
isHeaderEnabledList: [
false,
false,
],
);
/// Basic HEAD request model
const requestModelHead1 = RequestModel(
id: 'head1',

View File

@ -127,4 +127,39 @@ Easily manipulate and play around with request inputs like headers, query parame
expect(padMultilineString(text1, 10), text1FirstLineNotPaddedExpected);
});
});
group("Test getEnabledRows", () {
test('Testing for null', () {
expect(getEnabledRows(null, null), null);
});
test('Testing for empty list', () {
expect(getEnabledRows([], []), []);
});
const kvRow1 = NameValueModel(name: "code", value: "IN");
const kvRow2 = NameValueModel(name: "lang", value: "eng");
const kvRow3 = NameValueModel(name: "version", value: 0.1);
const kvRow4 = NameValueModel(name: "month", value: 4);
test('Testing with isRowEnabledList null', () {
expect(getEnabledRows([kvRow1, kvRow2, kvRow3, kvRow4], null),
[kvRow1, kvRow2, kvRow3, kvRow4]);
});
test('Testing for list with all enabled', () {
expect(
getEnabledRows(
[kvRow1, kvRow2, kvRow3, kvRow4], [true, true, true, true]),
[kvRow1, kvRow2, kvRow3, kvRow4]);
});
test('Testing for list with all disabled', () {
expect(
getEnabledRows(
[kvRow1, kvRow2, kvRow3, kvRow4], [false, false, false, false]),
[]);
});
test('Testing for list with some disabled', () {
expect(
getEnabledRows(
[kvRow1, kvRow2, kvRow3, kvRow4], [true, false, true, false]),
[kvRow1, kvRow3]);
});
});
}