diff --git a/lib/codegen/dart/dio.dart b/lib/codegen/dart/dio.dart index fcaa8314..1c6a42d3 100644 --- a/lib/codegen/dart/dio.dart +++ b/lib/codegen/dart/dio.dart @@ -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, ); diff --git a/lib/codegen/js/axios.dart b/lib/codegen/js/axios.dart index 21c99c8b..bc338945 100644 --- a/lib/codegen/js/axios.dart +++ b/lib/codegen/js/axios.dart @@ -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({ diff --git a/lib/codegen/js/fetch.dart b/lib/codegen/js/fetch.dart index 2d57d290..bc15b7dd 100644 --- a/lib/codegen/js/fetch.dart +++ b/lib/codegen/js/fetch.dart @@ -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({ diff --git a/lib/codegen/others/curl.dart b/lib/codegen/others/curl.dart index 5405ee1a..673014aa 100644 --- a/lib/codegen/others/curl.dart +++ b/lib/codegen/others/curl.dart @@ -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({ diff --git a/lib/codegen/others/har.dart b/lib/codegen/others/har.dart index f540cf76..77d78f58 100644 --- a/lib/codegen/others/har.dart +++ b/lib/codegen/others/har.dart @@ -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; diff --git a/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart b/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart index 312307ad..1637f265 100644 --- a/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart +++ b/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart @@ -127,7 +127,9 @@ class EditRequestHeadersState extends ConsumerState { seed = random.nextInt(kRandMax); if (rows.length == 1) { setState(() { - rows = [kNameValueEmptyModel]; + rows = [ + kNameValueEmptyModel, + ]; isRowEnabledList = [true]; }); } else { diff --git a/lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart b/lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart index e4e0ebb4..18b17e58 100644 --- a/lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart +++ b/lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart @@ -129,7 +129,9 @@ class EditRequestURLParamsState extends ConsumerState { seed = random.nextInt(kRandMax); if (rows.length == 1) { setState(() { - rows = [kNameValueEmptyModel]; + rows = [ + kNameValueEmptyModel, + ]; isRowEnabledList = [true]; }); } else { diff --git a/lib/utils/har_utils.dart b/lib/utils/har_utils.dart index 2bf30731..0ec7714d 100644 --- a/lib/utils/har_utils.dart +++ b/lib/utils/har_utils.dart @@ -74,6 +74,7 @@ Map requestModelToHARJsonRequest( RequestModel requestModel, { defaultUriScheme = kDefaultUriScheme, bool exportMode = false, + bool useEnabled = false, }) { Map json = {}; bool hasBody = false; @@ -125,9 +126,12 @@ Map requestModelToHARJsonRequest( } } - var headersList = requestModel.enabledRequestHeaders; + var headersList = useEnabled + ? requestModel.enabledRequestHeaders + : requestModel.requestHeaders; if (headersList != null || hasBody) { - var headers = requestModel.enabledHeadersMap; + var headers = + useEnabled ? requestModel.enabledHeadersMap : requestModel.headersMap; if (headers.isNotEmpty || hasBody) { if (hasBody) { var m = { diff --git a/lib/utils/header_utils.dart b/lib/utils/header_utils.dart index 63a456ef..7d0728dd 100644 --- a/lib/utils/header_utils.dart +++ b/lib/utils/header_utils.dart @@ -15,6 +15,7 @@ Map headers = { "Indicates the encoding transformations that have been applied to the entity body of the response.", "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 media type of the entity body.", "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.", diff --git a/test/codegen/curl_codegen_test.dart b/test/codegen/curl_codegen_test.dart index b67c8fa2..73bc8e85 100644 --- a/test/codegen/curl_codegen_test.dart +++ b/test/codegen/curl_codegen_test.dart @@ -100,6 +100,7 @@ void main() { expect(curlCodeGen.getCode(requestModelPost3, "https"), expectedCode); }); }); + group('PUT Request', () { test('PUT 1', () { const expectedCode = r"""curl --request PUT \ @@ -144,4 +145,40 @@ void main() { expect(curlCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + const expectedCode = + r"""curl --url 'https://api.foss42.com/humanize/social?num=8700000&add_space=true'"""; + expect(curlCodeGen.getCode(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + const expectedCode = + r"""curl --url 'https://api.foss42.com/humanize/social' \ + --header 'User-Agent: Test Agent'"""; + expect( + curlCodeGen.getCode( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + const expectedCode = + r"""curl --url 'https://api.foss42.com/humanize/social?num=8700000&digits=3' \ + --header 'User-Agent: Test Agent'"""; + expect( + curlCodeGen.getCode(requestModelEnabledRows, "https"), expectedCode); + }); + + test('Disabled Headders and Params', () { + const expectedCode = + r"""curl --url 'https://api.foss42.com/humanize/social'"""; + expect( + curlCodeGen.getCode(requestModelDisabledRows, "https"), expectedCode); + }); + }); } diff --git a/test/codegen/dart_dio_codegen_test.dart b/test/codegen/dart_dio_codegen_test.dart index 6f1e3149..fba58e8c 100644 --- a/test/codegen/dart_dio_codegen_test.dart +++ b/test/codegen/dart_dio_codegen_test.dart @@ -340,6 +340,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; @@ -455,4 +456,118 @@ void main() async { dartDioCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), + expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/codegen/dart_http_codegen_test.dart b/test/codegen/dart_http_codegen_test.dart index b28018c5..faa1f6bf 100644 --- a/test/codegen/dart_http_codegen_test.dart +++ b/test/codegen/dart_http_codegen_test.dart @@ -356,6 +356,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; @@ -481,4 +482,120 @@ void main() async { dartHttpCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), + expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/codegen/har_codegen_test.dart b/test/codegen/har_codegen_test.dart index cd9be868..e3c89961 100644 --- a/test/codegen/har_codegen_test.dart +++ b/test/codegen/har_codegen_test.dart @@ -240,6 +240,7 @@ void main() { expect(harCodeGen.getCode(requestModelPost3, "https"), expectedCode); }); }); + group('PUT Request', () { test('PUT 1', () { const expectedCode = r"""{ @@ -316,4 +317,86 @@ void main() { expect(harCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), expectedCode); + }); + + test('Disabled Headders and Params', () { + const expectedCode = r"""{ + "method": "GET", + "url": "https://api.foss42.com/humanize/social", + "httpVersion": "HTTP/1.1", + "queryString": [], + "headers": [] +}"""; + expect( + harCodeGen.getCode(requestModelDisabledRows, "https"), expectedCode); + }); + }); } diff --git a/test/codegen/js_axios_codegen_test.dart b/test/codegen/js_axios_codegen_test.dart index d809a122..49dce93b 100644 --- a/test/codegen/js_axios_codegen_test.dart +++ b/test/codegen/js_axios_codegen_test.dart @@ -324,6 +324,7 @@ axios(config) expect(axiosCodeGen.getCode(requestModelPost3, "https"), expectedCode); }); }); + group('PUT Request', () { test('PUT 1', () { const expectedCode = r"""let config = { @@ -425,4 +426,112 @@ axios(config) expect(axiosCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/codegen/js_fetch_codegen_test.dart b/test/codegen/js_fetch_codegen_test.dart index 589f59e7..9153c789 100644 --- a/test/codegen/js_fetch_codegen_test.dart +++ b/test/codegen/js_fetch_codegen_test.dart @@ -366,6 +366,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'; @@ -486,4 +487,124 @@ fetch(url, options) expect(fetchCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/codegen/kotlin_okhttp_codegen_test.dart b/test/codegen/kotlin_okhttp_codegen_test.dart index f2205a1b..d20177f9 100644 --- a/test/codegen/kotlin_okhttp_codegen_test.dart +++ b/test/codegen/kotlin_okhttp_codegen_test.dart @@ -369,6 +369,7 @@ fun main() { expectedCode); }); }); + group('PUT Request', () { test('PUT 1', () { const expectedCode = r'''import okhttp3.OkHttpClient @@ -497,4 +498,116 @@ fun main() { expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), + expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/codegen/nodejs_axios_codegen_test.dart b/test/codegen/nodejs_axios_codegen_test.dart index 180edb8a..b39d571e 100644 --- a/test/codegen/nodejs_axios_codegen_test.dart +++ b/test/codegen/nodejs_axios_codegen_test.dart @@ -350,6 +350,7 @@ axios(config) expect(axiosCodeGen.getCode(requestModelPost3, "https"), expectedCode); }); }); + group('PUT Request', () { test('PUT 1', () { const expectedCode = r"""import axios from 'axios'; @@ -459,4 +460,120 @@ axios(config) expect(axiosCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/codegen/nodejs_fetch_codegen_test.dart b/test/codegen/nodejs_fetch_codegen_test.dart index 1a82d8a1..d6bfbe29 100644 --- a/test/codegen/nodejs_fetch_codegen_test.dart +++ b/test/codegen/nodejs_fetch_codegen_test.dart @@ -386,6 +386,7 @@ fetch(url, options) expect(fetchCodeGen.getCode(requestModelPost3, "https"), expectedCode); }); }); + group('PUT Request', () { test('PUT 1', () { const expectedCode = r"""import fetch from 'node-fetch'; @@ -514,4 +515,128 @@ fetch(url, options) expect(fetchCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/codegen/python_http_client_codegen_test.dart b/test/codegen/python_http_client_codegen_test.dart index f95d265d..c97777c7 100644 --- a/test/codegen/python_http_client_codegen_test.dart +++ b/test/codegen/python_http_client_codegen_test.dart @@ -285,6 +285,7 @@ print(data.decode("utf-8")) expectedCode); }); }); + group('PUT Request', () { test('PUT 1', () { const expectedCode = r"""import http.client @@ -383,4 +384,95 @@ print(data.decode("utf-8")) expectedCode); }); }); + + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), + expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/codegen/python_requests_codegen_test.dart b/test/codegen/python_requests_codegen_test.dart index 67e1f629..aaeb6c45 100644 --- a/test/codegen/python_requests_codegen_test.dart +++ b/test/codegen/python_requests_codegen_test.dart @@ -248,6 +248,7 @@ print('Response Body:', response.text) expectedCode); }); }); + group('PUT Request', () { test('PUT 1', () { const expectedCode = r"""import requests @@ -324,4 +325,83 @@ print('Response Body:', response.text) expectedCode); }); }); + group('Request with enabled Rows', () { + test('Enabled Params', () { + 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(requestModelEnabledParams, "https"), + expectedCode); + }); + + test('Enabled Headers', () { + 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( + requestModelEnabledHeaders, + "https", + ), + expectedCode); + }); + + test('Enabled Headers and Params', () { + 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(requestModelEnabledRows, "https"), + expectedCode); + }); + + test('Disabled Headders and Params', () { + 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(requestModelDisabledRows, "https"), + expectedCode); + }); + }); } diff --git a/test/request_models.dart b/test/request_models.dart index ede411bb..b51acaa3 100644 --- a/test/request_models.dart +++ b/test/request_models.dart @@ -180,3 +180,91 @@ const requestModelDelete2 = RequestModel( }""", requestBodyContentType: ContentType.json, ); + +/// Request model with enabled params +const requestModelEnabledParams = 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, + ], +); + +/// Request model with enabled headers +const requestModelEnabledHeaders = 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, + ], +); + +/// Request model with enabled rows +const requestModelEnabledRows = 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 disabled rows +const requestModelDisabledRows = 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, + ], +);