diff --git a/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap b/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap
new file mode 100644
index 000000000..4b173f825
--- /dev/null
+++ b/helpers/codegen/__tests__/__snapshots__/codegen.spec.js.snap
@@ -0,0 +1,863 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`generate request for Golang Native generate GET request 1`] = `
+"req, err := http.NewRequest(\\"GET\\", \\"https://httpbin.org/path/to?a=b\\")
+req.Header.Set(\\"Authorization\\", \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\")
+req.Header.Set(\\"h1\\", \\"h1v\\")
+req.Header.Set(\\"h2\\", \\"h2v\\")
+if err != nil {
+ log.Fatalf(\\"An Error Occured %v\\", err)
+}
+
+client := &http.Client{}
+resp, err := client.Do(req)
+if err != nil {
+ log.Fatalf(\\"An Error Occured %v\\", err)
+}
+
+defer resp.Body.Close()
+body, err := ioutil.ReadAll(resp.Body)
+if err != nil {
+ log.Fatalln(err)
+}
+"
+`;
+
+exports[`generate request for Golang Native generate POST request for JSON 1`] = `
+"var reqBody = []byte(\`{\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}\`)
+
+req, err := http.NewRequest(\\"POST\\", \\"https://httpbin.org/path/to?a=b\\", bytes.NewBuffer(reqBody))
+req.Header.Set(\\"Content-Type\\", \\"application/json\\")
+req.Header.Set(\\"Authorization\\", \\"Bearer abcdefghijklmn\\")
+req.Header.Set(\\"h1\\", \\"h1v\\")
+req.Header.Set(\\"h2\\", \\"h2v\\")
+if err != nil {
+ log.Fatalf(\\"An Error Occured %v\\", err)
+}
+
+client := &http.Client{}
+resp, err := client.Do(req)
+if err != nil {
+ log.Fatalf(\\"An Error Occured %v\\", err)
+}
+
+defer resp.Body.Close()
+body, err := ioutil.ReadAll(resp.Body)
+if err != nil {
+ log.Fatalln(err)
+}
+"
+`;
+
+exports[`generate request for Golang Native generate POST request for XML 1`] = `
+"req.Header.Set(\\"Content-Type\\", \\"application/xml\\")
+req.Header.Set(\\"Authorization\\", \\"Bearer abcdefghijklmn\\")
+req.Header.Set(\\"h1\\", \\"h1v\\")
+req.Header.Set(\\"h2\\", \\"h2v\\")
+if err != nil {
+ log.Fatalf(\\"An Error Occured %v\\", err)
+}
+
+client := &http.Client{}
+resp, err := client.Do(req)
+if err != nil {
+ log.Fatalf(\\"An Error Occured %v\\", err)
+}
+
+defer resp.Body.Close()
+body, err := ioutil.ReadAll(resp.Body)
+if err != nil {
+ log.Fatalln(err)
+}
+"
+`;
+
+exports[`generate request for Golang Native generate PUT request for www-form-urlencoded 1`] = `
+"req, err := http.NewRequest(\\"PUT\\", \\"https://httpbin.org/path/to?a=b\\", strings.NewReader(\\"foo=bar&baz=qux\\"))
+req.Header.Set(\\"Content-Type\\", \\"application/x-www-form-urlencoded\\")
+if err != nil {
+ log.Fatalf(\\"An Error Occured %v\\", err)
+}
+
+client := &http.Client{}
+resp, err := client.Do(req)
+if err != nil {
+ log.Fatalf(\\"An Error Occured %v\\", err)
+}
+
+defer resp.Body.Close()
+body, err := ioutil.ReadAll(resp.Body)
+if err != nil {
+ log.Fatalln(err)
+}
+"
+`;
+
+exports[`generate request for JavaScript Axios generate GET request 1`] = `
+"axios.get('https://httpbin.org/path/to?a=b',{
+ headers : { \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\",
+ \\"Authorization\\": \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\"}
+}.then(response => {
+ console.log(response);
+}).catch(error => {
+ console.log(error);
+})
+"
+`;
+
+exports[`generate request for JavaScript Axios generate POST request for JSON 1`] = `
+"axios.post('https://httpbin.org/path/to?a=b',{
+ headers : { \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\",
+\\"Content-Type\\": \\"application/json; charset=utf-8\\",
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\"}
+}.then(response => {
+ console.log(response);
+}).catch(error => {
+ console.log(error);
+})
+"
+`;
+
+exports[`generate request for JavaScript Axios generate POST request for XML 1`] = `
+"axios.post('https://httpbin.org/path/to?a=b',{
+ headers : { \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\",
+\\"Content-Type\\": \\"application/xml; charset=utf-8\\",
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\"}
+}.then(response => {
+ console.log(response);
+}).catch(error => {
+ console.log(error);
+})
+"
+`;
+
+exports[`generate request for JavaScript Axios generate PUT request for www-form-urlencoded 1`] = `
+"axios.put('https://httpbin.org/path/to?a=b', foo=bar&baz=qux,{
+ headers : {\\"Content-Type\\": \\"application/x-www-form-urlencoded; charset=utf-8\\"}
+}.then(response => {
+ console.log(response);
+}).catch(error => {
+ console.log(error);
+})
+"
+`;
+
+exports[`generate request for JavaScript Fetch generate GET request 1`] = `
+"fetch(\\"https://httpbin.org/path/to?a=b\\", {
+ method: \\"GET\\",
+ headers: {
+ \\"Authorization\\": \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ },
+ credentials: \\"same-origin\\"
+}).then(function(response) {
+ response.status
+ response.statusText
+ response.headers
+ response.url
+
+ return response.text()
+}).catch(function(error) {
+ error.message
+})"
+`;
+
+exports[`generate request for JavaScript Fetch generate POST request for JSON 1`] = `
+"fetch(\\"https://httpbin.org/path/to?a=b\\", {
+ method: \\"POST\\",
+ body: JSON.stringify({\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}),
+ headers: {
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\",
+ \\"Content-Type\\": \\"application/json; charset=utf-8\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ },
+ credentials: \\"same-origin\\"
+}).then(function(response) {
+ response.status
+ response.statusText
+ response.headers
+ response.url
+
+ return response.text()
+}).catch(function(error) {
+ error.message
+})"
+`;
+
+exports[`generate request for JavaScript Fetch generate POST request for XML 1`] = `
+"fetch(\\"https://httpbin.org/path/to?a=b\\", {
+ method: \\"POST\\",
+ body:
+
+
+,
+ headers: {
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\",
+ \\"Content-Type\\": \\"application/xml; charset=utf-8\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ },
+ credentials: \\"same-origin\\"
+}).then(function(response) {
+ response.status
+ response.statusText
+ response.headers
+ response.url
+
+ return response.text()
+}).catch(function(error) {
+ error.message
+})"
+`;
+
+exports[`generate request for JavaScript Fetch generate PUT request for www-form-urlencoded 1`] = `
+"fetch(\\"https://httpbin.org/path/to?a=b\\", {
+ method: \\"PUT\\",
+ body: \\"foo=bar&baz=qux\\",
+ headers: {
+ \\"Content-Type\\": \\"application/x-www-form-urlencoded; charset=utf-8\\"
+ },
+ credentials: \\"same-origin\\"
+}).then(function(response) {
+ response.status
+ response.statusText
+ response.headers
+ response.url
+
+ return response.text()
+}).catch(function(error) {
+ error.message
+})"
+`;
+
+exports[`generate request for JavaScript XHR generate GET request 1`] = `
+"const xhr = new XMLHttpRequest()
+xhr.open('GET', 'https://httpbin.org/path/to?a=b', true, 'mockUser', 'mockPassword')
+xhr.setRequestHeader('h1', 'h1v')
+xhr.setRequestHeader('h2', 'h2v')
+xhr.send()"
+`;
+
+exports[`generate request for JavaScript XHR generate POST request for JSON 1`] = `
+"const xhr = new XMLHttpRequest()
+xhr.open('POST', 'https://httpbin.org/path/to?a=b', true, null, null)
+xhr.setRequestHeader('Authorization', 'Bearer abcdefghijklmn')
+xhr.setRequestHeader('h1', 'h1v')
+xhr.setRequestHeader('h2', 'h2v')
+xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8')
+xhr.send(JSON.stringify({\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}))"
+`;
+
+exports[`generate request for JavaScript XHR generate POST request for XML 1`] = `
+"const xhr = new XMLHttpRequest()
+xhr.open('POST', 'https://httpbin.org/path/to?a=b', true, null, null)
+xhr.setRequestHeader('Authorization', 'Bearer abcdefghijklmn')
+xhr.setRequestHeader('h1', 'h1v')
+xhr.setRequestHeader('h2', 'h2v')
+xhr.setRequestHeader('Content-Type', 'application/xml; charset=utf-8')
+xhr.send(
+
+
+)"
+`;
+
+exports[`generate request for JavaScript XHR generate PUT request for www-form-urlencoded 1`] = `
+"const xhr = new XMLHttpRequest()
+xhr.open('PUT', 'https://httpbin.org/path/to?a=b', true, null, null)
+xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8')
+xhr.send(\\"foo=bar&baz=qux\\")"
+`;
+
+exports[`generate request for JavaScript jQuery generate GET request 1`] = `
+"jQuery.ajax({
+ url: \\"https://httpbin.org/path/to?a=b\\",
+ method: \\"GET\\",
+ headers: {
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\",
+ \\"Authorization\\": \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\"
+ }
+}).then(response => {
+ console.log(response);
+}).catch(error => {
+ console.log(error);
+})
+"
+`;
+
+exports[`generate request for JavaScript jQuery generate POST request for JSON 1`] = `
+"jQuery.ajax({
+ url: \\"https://httpbin.org/path/to?a=b\\",
+ method: \\"POST\\",
+ body: {\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"},
+ contentType: \\"application/json; charset=utf-8\\",
+ headers: {
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\",
+ \\"Content-Type\\": \\"application/json; charset=utf-8\\",
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\"
+ }
+}).then(response => {
+ console.log(response);
+}).catch(error => {
+ console.log(error);
+})
+"
+`;
+
+exports[`generate request for JavaScript jQuery generate POST request for XML 1`] = `
+"jQuery.ajax({
+ url: \\"https://httpbin.org/path/to?a=b\\",
+ method: \\"POST\\",
+ body:
+
+
+,
+ contentType: \\"application/xml; charset=utf-8\\",
+ headers: {
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\",
+ \\"Content-Type\\": \\"application/xml; charset=utf-8\\",
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\"
+ }
+}).then(response => {
+ console.log(response);
+}).catch(error => {
+ console.log(error);
+})
+"
+`;
+
+exports[`generate request for JavaScript jQuery generate PUT request for www-form-urlencoded 1`] = `
+"jQuery.ajax({
+ url: \\"https://httpbin.org/path/to?a=b\\",
+ method: \\"PUT\\",
+ body: foo=bar&baz=qux,
+ contentType: \\"application/x-www-form-urlencoded; charset=utf-8\\",
+ headers: {
+ \\"Content-Type\\": \\"application/x-www-form-urlencoded; charset=utf-8\\"
+ }
+}).then(response => {
+ console.log(response);
+}).catch(error => {
+ console.log(error);
+})
+"
+`;
+
+exports[`generate request for NodeJs Native generate GET request 1`] = `
+"const http = require('http');
+
+const url = 'https://httpbin.org/path/to?a=b';
+const options = {
+ method: 'GET',
+ headers: {
+ \\"Authorization\\": \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ }};
+
+const request = http.request(url, options, (response) => {
+ console.log(response);
+});
+
+request.on('error', (e) => {
+ console.error(e);
+});
+request.end();"
+`;
+
+exports[`generate request for NodeJs Native generate POST request for JSON 1`] = `
+"const http = require('http');
+
+const url = 'https://httpbin.org/path/to?a=b';
+const options = {
+ method: 'POST',
+ headers: {
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\",
+ \\"Content-Type\\": \\"application/json; charset=utf-8\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ }};
+
+const request = http.request(url, options, (response) => {
+ console.log(response);
+});
+
+request.on('error', (e) => {
+ console.error(e);
+});
+
+request.write(JSON.stringify({\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}));
+request.end();"
+`;
+
+exports[`generate request for NodeJs Native generate POST request for XML 1`] = `
+"const http = require('http');
+
+const url = 'https://httpbin.org/path/to?a=b';
+const options = {
+ method: 'POST',
+ headers: {
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\",
+ \\"Content-Type\\": \\"application/xml; charset=utf-8\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ }};
+
+const request = http.request(url, options, (response) => {
+ console.log(response);
+});
+
+request.on('error', (e) => {
+ console.error(e);
+});
+
+request.write(\`
+
+
+\`);
+request.end();"
+`;
+
+exports[`generate request for NodeJs Native generate PUT request for www-form-urlencoded 1`] = `
+"const http = require('http');
+
+const url = 'https://httpbin.org/path/to?a=b';
+const options = {
+ method: 'PUT',
+ headers: {
+ \\"Content-Type\\": \\"application/x-www-form-urlencoded; charset=utf-8\\"
+ }};
+
+const request = http.request(url, options, (response) => {
+ console.log(response);
+});
+
+request.on('error', (e) => {
+ console.error(e);
+});
+
+request.write(\`foo=bar&baz=qux\`);
+request.end();"
+`;
+
+exports[`generate request for NodeJs Request generate GET request 1`] = `
+"const request = require('request');
+const options = {
+ method: 'get',
+ url: 'https://httpbin.org/path/to?a=b',
+ headers: {
+ \\"Authorization\\": \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ }
+}
+request(options, (error, response) => {
+ if (error) throw new Error(error);
+ console.log(response.body);
+});"
+`;
+
+exports[`generate request for NodeJs Request generate POST request for JSON 1`] = `
+"const request = require('request');
+const options = {
+ method: 'post',
+ url: 'https://httpbin.org/path/to?a=b',
+ body: JSON.stringify({\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}),
+ headers: {
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\",
+ \\"Content-Type\\": \\"application/json; charset=utf-8\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ }
+}
+request(options, (error, response) => {
+ if (error) throw new Error(error);
+ console.log(response.body);
+});"
+`;
+
+exports[`generate request for NodeJs Request generate POST request for XML 1`] = `
+"const request = require('request');
+const options = {
+ method: 'post',
+ url: 'https://httpbin.org/path/to?a=b',
+ body: \`
+
+
+\`,
+ headers: {
+ \\"Authorization\\": \\"Bearer abcdefghijklmn\\",
+ \\"Content-Type\\": \\"application/xml; charset=utf-8\\",
+ \\"h1\\": \\"h1v\\",
+ \\"h2\\": \\"h2v\\"
+ }
+}
+request(options, (error, response) => {
+ if (error) throw new Error(error);
+ console.log(response.body);
+});"
+`;
+
+exports[`generate request for NodeJs Request generate PUT request for www-form-urlencoded 1`] = `
+"const request = require('request');
+const options = {
+ method: 'put',
+ url: 'https://httpbin.org/path/to?a=b',
+ form: {\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"},
+ headers: {
+ \\"Content-Type\\": \\"application/x-www-form-urlencoded; charset=utf-8\\"
+ }
+}
+request(options, (error, response) => {
+ if (error) throw new Error(error);
+ console.log(response.body);
+});"
+`;
+
+exports[`generate request for PHP cURL generate GET request 1`] = `
+ "https://httpbin.org/path/to?a=b",
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_ENCODING => "",
+ CURLOPT_MAXREDIRS => 10,
+ CURLOPT_TIMEOUT => 0,
+ CURLOPT_FOLLOWLOCATION => true,
+ CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+ CURLOPT_CUSTOMREQUEST => "GET",
+ CURLOPT_HTTPHEADER => array(
+ "Authorization: Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk",
+ "h1: h1v",
+ "h2: h2v"
+ )
+));
+$response = curl_exec($curl);
+curl_close($curl);
+echo $response;
+`;
+
+exports[`generate request for PHP cURL generate POST request for JSON 1`] = `
+ "https://httpbin.org/path/to?a=b",
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_ENCODING => "",
+ CURLOPT_MAXREDIRS => 10,
+ CURLOPT_TIMEOUT => 0,
+ CURLOPT_FOLLOWLOCATION => true,
+ CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+ CURLOPT_CUSTOMREQUEST => "POST",
+ CURLOPT_POSTFIELDS => "{\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}",
+ CURLOPT_HTTPHEADER => array(
+ "Authorization: Bearer abcdefghijklmn",
+ "Content-Type: application/json; charset=utf-8",
+ "h1: h1v",
+ "h2: h2v"
+ )
+));
+$response = curl_exec($curl);
+curl_close($curl);
+echo $response;
+`;
+
+exports[`generate request for PHP cURL generate POST request for XML 1`] = `
+ "https://httpbin.org/path/to?a=b",
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_ENCODING => "",
+ CURLOPT_MAXREDIRS => 10,
+ CURLOPT_TIMEOUT => 0,
+ CURLOPT_FOLLOWLOCATION => true,
+ CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+ CURLOPT_CUSTOMREQUEST => "POST",
+ CURLOPT_POSTFIELDS => array(
+
+
+),
+CURLOPT_HTTPHEADER => array(
+"Authorization: Bearer abcdefghijklmn",
+"Content-Type: application/xml; charset=utf-8",
+"h1: h1v",
+"h2: h2v"
+)
+));
+$response = curl_exec($curl);
+curl_close($curl);
+echo $response;
+`;
+
+exports[`generate request for PHP cURL generate PUT request for www-form-urlencoded 1`] = `
+ "https://httpbin.org/path/to?a=b",
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_ENCODING => "",
+ CURLOPT_MAXREDIRS => 10,
+ CURLOPT_TIMEOUT => 0,
+ CURLOPT_FOLLOWLOCATION => true,
+ CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+ CURLOPT_CUSTOMREQUEST => "PUT",
+ CURLOPT_POSTFIELDS => "foo=bar&baz=qux",
+ CURLOPT_HTTPHEADER => array(
+ "Content-Type: application/x-www-form-urlencoded; charset=utf-8"
+ )
+));
+$response = curl_exec($curl);
+curl_close($curl);
+echo $response;
+`;
+
+exports[`generate request for Powershell RestMethod generate GET request 1`] = `
+"$headers = @{
+ 'h1' = 'h1v'
+ 'h2' = 'h2v'
+ 'Authorization' = 'Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk'
+}
+
+Invoke-RestMethod -Method 'Get' -Uri 'https://httpbin.org/path/to?a=b' -Headers $headers"
+`;
+
+exports[`generate request for Powershell RestMethod generate POST request for JSON 1`] = `
+"$body = @'
+{\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}
+'@
+
+$headers = @{
+ 'h1' = 'h1v'
+ 'h2' = 'h2v'
+ 'Content-Type' = 'application/json; charset=utf-8'
+ 'Authorization' = 'Bearer abcdefghijklmn'
+}
+
+Invoke-RestMethod -Method 'Post' -Uri 'https://httpbin.org/path/to?a=b' -ContentType 'application/json; charset=utf-8' -Headers $headers -Body $body"
+`;
+
+exports[`generate request for Powershell RestMethod generate POST request for XML 1`] = `
+"$body = @'
+
+
+
+
+'@
+
+$headers = @{
+ 'h1' = 'h1v'
+ 'h2' = 'h2v'
+ 'Content-Type' = 'application/xml; charset=utf-8'
+ 'Authorization' = 'Bearer abcdefghijklmn'
+}
+
+Invoke-RestMethod -Method 'Post' -Uri 'https://httpbin.org/path/to?a=b' -ContentType 'application/xml; charset=utf-8' -Headers $headers -Body $body"
+`;
+
+exports[`generate request for Powershell RestMethod generate PUT request for www-form-urlencoded 1`] = `
+"$body = @'
+foo=bar&baz=qux
+'@
+
+$headers = @{
+ 'Content-Type' = 'application/x-www-form-urlencoded; charset=utf-8'
+}
+
+Invoke-RestMethod -Method 'Put' -Uri 'https://httpbin.org/path/to?a=b' -ContentType 'application/x-www-form-urlencoded; charset=utf-8' -Headers $headers -Body $body"
+`;
+
+exports[`generate request for Python HTTP Client generate GET request 1`] = `
+"import http.client
+import mimetypes
+conn = http.client.HTTPSConnection(\\"httpbin.org\\")
+headers = {
+ 'Authorization': 'Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk',
+ 'h1': 'h1v',
+ 'h2': 'h2v'
+}
+payload = ''
+conn.request(\\"GET\\", \\"/path/to?a=b\\", payload, headers)
+res = conn.getresponse()
+data = res.read()
+print(data.decode(\\"utf-8\\"))"
+`;
+
+exports[`generate request for Python HTTP Client generate POST request for JSON 1`] = `
+"import http.client
+import mimetypes
+conn = http.client.HTTPSConnection(\\"httpbin.org\\")
+headers = {
+ 'Authorization': 'Bearer abcdefghijklmn',
+ 'h1': 'h1v',
+ 'h2': 'h2v',
+ 'Content-Type': 'application/json'
+}
+payload = \\"{\\\\\\"foo\\\\\\": \\\\\\"bar\\\\\\", \\\\\\"baz\\\\\\": \\\\\\"qux\\\\\\"}\\"
+conn.request(\\"POST\\", \\"/path/to?a=b\\", payload, headers)
+res = conn.getresponse()
+data = res.read()
+print(data.decode(\\"utf-8\\"))"
+`;
+
+exports[`generate request for Python HTTP Client generate POST request for XML 1`] = `
+"import http.client
+import mimetypes
+conn = http.client.HTTPSConnection(\\"httpbin.org\\")
+headers = {
+ 'Authorization': 'Bearer abcdefghijklmn',
+ 'h1': 'h1v',
+ 'h2': 'h2v',
+ 'Content-Type': 'application/xml'
+}
+paylod = '''
+
+
+'''
+conn.request(\\"POST\\", \\"/path/to?a=b\\", payload, headers)
+res = conn.getresponse()
+data = res.read()
+print(data.decode(\\"utf-8\\"))"
+`;
+
+exports[`generate request for Python HTTP Client generate PUT request for www-form-urlencoded 1`] = `
+"import http.client
+import mimetypes
+conn = http.client.HTTPSConnection(\\"httpbin.org\\")
+headers = {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+}
+payload = [('foo', 'bar'),
+ ('baz', 'qux')]
+conn.request(\\"PUT\\", \\"/path/to?a=b\\", payload, headers)
+res = conn.getresponse()
+data = res.read()
+print(data.decode(\\"utf-8\\"))"
+`;
+
+exports[`generate request for Python Requests generate GET request 1`] = `
+"import requests
+
+url = 'https://httpbin.org/path/to?a=b'
+headers = {
+ 'Authorization': 'Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk',
+ 'h1': 'h1v',
+ 'h2': 'h2v'
+}
+response = requests.request(
+ 'GET',
+ 'https://httpbin.org/path/to?a=b',
+ headers=headers,
+)
+
+print(response)"
+`;
+
+exports[`generate request for Python Requests generate POST request for JSON 1`] = `
+"import requests
+
+url = 'https://httpbin.org/path/to?a=b'
+headers = {
+ 'Authorization': 'Bearer abcdefghijklmn',
+ 'h1': 'h1v',
+ 'h2': 'h2v',
+ 'Content-Type': 'application/json'
+}
+data = \\"{\\\\\\"foo\\\\\\": \\\\\\"bar\\\\\\", \\\\\\"baz\\\\\\": \\\\\\"qux\\\\\\"}\\"
+response = requests.request(
+ 'POST',
+ 'https://httpbin.org/path/to?a=b',
+ data=data,
+ headers=headers,
+)
+
+print(response)"
+`;
+
+exports[`generate request for Python Requests generate POST request for XML 1`] = `
+"import requests
+
+url = 'https://httpbin.org/path/to?a=b'
+headers = {
+ 'Authorization': 'Bearer abcdefghijklmn',
+ 'h1': 'h1v',
+ 'h2': 'h2v',
+ 'Content-Type': 'application/xml'
+}
+data = '''
+
+
+'''
+response = requests.request(
+ 'POST',
+ 'https://httpbin.org/path/to?a=b',
+ data=data,
+ headers=headers,
+)
+
+print(response)"
+`;
+
+exports[`generate request for Python Requests generate PUT request for www-form-urlencoded 1`] = `
+"import requests
+
+url = 'https://httpbin.org/path/to?a=b'
+headers = {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+}
+data = [('foo', 'bar'),
+ ('baz', 'qux')]
+response = requests.request(
+ 'PUT',
+ 'https://httpbin.org/path/to?a=b',
+ data=data,
+ headers=headers,
+)
+
+print(response)"
+`;
+
+exports[`generate request for cURL generate GET request 1`] = `
+"curl -X GET \\\\
+ 'https://httpbin.org/path/to?a=b' \\\\
+ -H 'Authorization: Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk' \\\\
+ -H 'h1: h1v' \\\\
+ -H 'h2: h2v'"
+`;
+
+exports[`generate request for cURL generate POST request for JSON 1`] = `
+"curl -X POST \\\\
+ 'https://httpbin.org/path/to?a=b' \\\\
+ -H 'Authorization: Bearer abcdefghijklmn' \\\\
+ -H 'h1: h1v' \\\\
+ -H 'h2: h2v' \\\\
+ -H 'Content-Type: application/json; charset=utf-8' \\\\
+ -d '{\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}'"
+`;
+
+exports[`generate request for cURL generate POST request for XML 1`] = `
+"curl -X POST \\\\
+ 'https://httpbin.org/path/to?a=b' \\\\
+ -H 'Authorization: Bearer abcdefghijklmn' \\\\
+ -H 'h1: h1v' \\\\
+ -H 'h2: h2v' \\\\
+ -H 'Content-Type: application/xml; charset=utf-8' \\\\
+ -d '
+
+
+'"
+`;
+
+exports[`generate request for cURL generate PUT request for www-form-urlencoded 1`] = `
+"curl -X PUT \\\\
+ 'https://httpbin.org/path/to?a=b' \\\\
+ -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \\\\
+ -d 'foo=bar&baz=qux'"
+`;
diff --git a/helpers/codegen/__tests__/codegen.spec.js b/helpers/codegen/__tests__/codegen.spec.js
new file mode 100644
index 000000000..25c7e4a2d
--- /dev/null
+++ b/helpers/codegen/__tests__/codegen.spec.js
@@ -0,0 +1,91 @@
+import { codegens } from "../codegen"
+
+const TEST_URL = "https://httpbin.org"
+const TEST_PATH_NAME = "/path/to"
+const TEST_QUERY_STRING = "?a=b"
+const TEST_HTTP_USER = "mockUser"
+const TEST_HTTP_PASSWORD = "mockPassword"
+const TEST_BEARER_TOKEN = "abcdefghijklmn"
+const TEST_RAW_REQUEST_BODY = "foo=bar&baz=qux"
+const TEST_RAW_PARAMS_JSON = '{"foo": "bar", "baz": "qux"}'
+const TEST_RAW_PARAMS_XML = `
+
+
+`
+const TEST_HEADERS = [
+ { key: "h1", value: "h1v" },
+ { key: "h2", value: "h2v" },
+]
+
+codegens.forEach((codegen) => {
+ describe(`generate request for ${codegen.name}`, () => {
+ const testCases = [
+ [
+ "generate GET request",
+ {
+ url: TEST_URL,
+ pathName: TEST_PATH_NAME,
+ queryString: TEST_QUERY_STRING,
+ auth: "Basic Auth",
+ httpUser: TEST_HTTP_USER,
+ httpPassword: TEST_HTTP_PASSWORD,
+ method: "GET",
+ rawInput: false,
+ rawParams: "",
+ rawRequestBody: "",
+ headers: TEST_HEADERS,
+ },
+ ],
+ [
+ "generate POST request for JSON",
+ {
+ url: TEST_URL,
+ pathName: TEST_PATH_NAME,
+ queryString: TEST_QUERY_STRING,
+ auth: "Bearer Token",
+ bearerToken: TEST_BEARER_TOKEN,
+ method: "POST",
+ rawInput: true,
+ rawParams: TEST_RAW_PARAMS_JSON,
+ rawRequestBody: "",
+ contentType: "application/json",
+ headers: TEST_HEADERS,
+ },
+ ],
+ [
+ "generate POST request for XML",
+ {
+ url: TEST_URL,
+ pathName: TEST_PATH_NAME,
+ queryString: TEST_QUERY_STRING,
+ auth: "OAuth 2.0",
+ bearerToken: TEST_BEARER_TOKEN,
+ method: "POST",
+ rawInput: true,
+ rawParams: TEST_RAW_PARAMS_XML,
+ rawRequestBody: "",
+ contentType: "application/xml",
+ headers: TEST_HEADERS,
+ },
+ ],
+ [
+ "generate PUT request for www-form-urlencoded",
+ {
+ url: TEST_URL,
+ pathName: TEST_PATH_NAME,
+ queryString: TEST_QUERY_STRING,
+ method: "PUT",
+ rawInput: false,
+ rawRequestBody: TEST_RAW_REQUEST_BODY,
+ contentType: "application/x-www-form-urlencoded",
+ headers: [],
+ },
+ ],
+ ]
+
+ test.each(testCases)("%s", (_, context) => {
+ const result = codegen.generator(context)
+ expect(result).toMatchSnapshot()
+ })
+ })
+})
diff --git a/helpers/codegen/generators/__fixtures__/test-data.js b/helpers/codegen/generators/__fixtures__/test-data.js
deleted file mode 100644
index 8fc60aaf0..000000000
--- a/helpers/codegen/generators/__fixtures__/test-data.js
+++ /dev/null
@@ -1,16 +0,0 @@
-export const TEST_URL = "https://httpbin.org"
-export const TEST_PATH_NAME = "/path/to"
-export const TEST_QUERY_STRING = "?a=b"
-export const TEST_HTTP_USER = "mockUser"
-export const TEST_HTTP_PASSWORD = "mockPassword"
-export const TEST_BEARER_TOKEN = "abcdefghijklmn"
-export const TEST_RAW_REQUEST_BODY = "foo=bar&baz=qux"
-export const TEST_RAW_PARAMS_JSON = '{"foo": "bar", "baz": "qux"}'
-export const TEST_RAW_PARAMS_XML = `
-
-
-`
-export const TEST_HEADERS = [
- { key: "h1", value: "h1v" },
- { key: "h2", value: "h2v" },
-]
diff --git a/helpers/codegen/generators/__tests__/__snapshots__/nodejs-native.spec.js.snap b/helpers/codegen/generators/__tests__/__snapshots__/nodejs-native.spec.js.snap
deleted file mode 100644
index 0653fdb79..000000000
--- a/helpers/codegen/generators/__tests__/__snapshots__/nodejs-native.spec.js.snap
+++ /dev/null
@@ -1,98 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`generate request for NodeJs Native generate GET request 1`] = `
-"const http = require('http');
-
-const url = 'https://httpbin.org/path/to?a=b';
-const options = {
- method: 'GET',
- headers: {
- \\"Authorization\\": \\"Basic bW9ja1VzZXI6bW9ja1Bhc3N3b3Jk\\",
- \\"h1\\": \\"h1v\\",
- \\"h2\\": \\"h2v\\"
- }};
-
-const request = http.request(url, options, (response) => {
- console.log(response);
-});
-
-request.on('error', (e) => {
- console.error(e);
-});
-request.end();"
-`;
-
-exports[`generate request for NodeJs Native generate POST request for JSON 1`] = `
-"const http = require('http');
-
-const url = 'https://httpbin.org/path/to?a=b';
-const options = {
- method: 'POST',
- headers: {
- \\"Authorization\\": \\"Bearer abcdefghijklmn\\",
- \\"Content-Type\\": \\"application/json; charset=utf-8\\",
- \\"h1\\": \\"h1v\\",
- \\"h2\\": \\"h2v\\"
- }};
-
-const request = http.request(url, options, (response) => {
- console.log(response);
-});
-
-request.on('error', (e) => {
- console.error(e);
-});
-
-request.write(JSON.stringify({\\"foo\\": \\"bar\\", \\"baz\\": \\"qux\\"}));
-request.end();"
-`;
-
-exports[`generate request for NodeJs Native generate POST request for XML 1`] = `
-"const http = require('http');
-
-const url = 'https://httpbin.org/path/to?a=b';
-const options = {
- method: 'POST',
- headers: {
- \\"Authorization\\": \\"Bearer abcdefghijklmn\\",
- \\"Content-Type\\": \\"application/xml; charset=utf-8\\",
- \\"h1\\": \\"h1v\\",
- \\"h2\\": \\"h2v\\"
- }};
-
-const request = http.request(url, options, (response) => {
- console.log(response);
-});
-
-request.on('error', (e) => {
- console.error(e);
-});
-
-request.write(\`
-
-
-\`);
-request.end();"
-`;
-
-exports[`generate request for NodeJs Native generate PUT request for www-form-urlencoded 1`] = `
-"const http = require('http');
-
-const url = 'https://httpbin.org/path/to?a=b';
-const options = {
- method: 'PUT',
- headers: {
- \\"Content-Type\\": \\"application/x-www-form-urlencoded; charset=utf-8\\"
- }};
-
-const request = http.request(url, options, (response) => {
- console.log(response);
-});
-
-request.on('error', (e) => {
- console.error(e);
-});
-
-request.write(\`foo=bar&baz=qux\`);
-request.end();"
-`;
diff --git a/helpers/codegen/generators/__tests__/nodejs-native.spec.js b/helpers/codegen/generators/__tests__/nodejs-native.spec.js
deleted file mode 100644
index c7e36ccfe..000000000
--- a/helpers/codegen/generators/__tests__/nodejs-native.spec.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import { NodeJsNativeCodegen } from "../nodejs-native"
-import {
- TEST_BEARER_TOKEN,
- TEST_HEADERS,
- TEST_HTTP_PASSWORD,
- TEST_HTTP_USER,
- TEST_PATH_NAME,
- TEST_QUERY_STRING,
- TEST_RAW_PARAMS_JSON,
- TEST_RAW_PARAMS_XML,
- TEST_RAW_REQUEST_BODY,
- TEST_URL,
-} from "../__fixtures__/test-data"
-
-describe("generate request for NodeJs Native", () => {
- test("generate GET request", () => {
- const result = NodeJsNativeCodegen.generator({
- url: TEST_URL,
- pathName: TEST_PATH_NAME,
- queryString: TEST_QUERY_STRING,
- auth: "Basic Auth",
- httpUser: TEST_HTTP_USER,
- httpPassword: TEST_HTTP_PASSWORD,
- method: "GET",
- headers: TEST_HEADERS,
- })
- expect(result).toMatchSnapshot()
- })
-
- test("generate POST request for JSON", () => {
- const result = NodeJsNativeCodegen.generator({
- url: TEST_URL,
- pathName: TEST_PATH_NAME,
- queryString: TEST_QUERY_STRING,
- auth: "Bearer Token",
- bearerToken: TEST_BEARER_TOKEN,
- method: "POST",
- rawInput: true,
- rawParams: TEST_RAW_PARAMS_JSON,
- contentType: "application/json",
- headers: TEST_HEADERS,
- })
- expect(result).toMatchSnapshot()
- })
-
- test("generate POST request for XML", () => {
- const result = NodeJsNativeCodegen.generator({
- url: TEST_URL,
- pathName: TEST_PATH_NAME,
- queryString: TEST_QUERY_STRING,
- auth: "OAuth 2.0",
- bearerToken: TEST_BEARER_TOKEN,
- method: "POST",
- rawInput: true,
- rawParams: TEST_RAW_PARAMS_XML,
- contentType: "application/xml",
- headers: TEST_HEADERS,
- })
- expect(result).toMatchSnapshot()
- })
-
- test("generate PUT request for www-form-urlencoded", () => {
- const result = NodeJsNativeCodegen.generator({
- url: TEST_URL,
- pathName: TEST_PATH_NAME,
- queryString: TEST_QUERY_STRING,
- method: "PUT",
- rawInput: false,
- rawRequestBody: TEST_RAW_REQUEST_BODY,
- contentType: "application/x-www-form-urlencoded",
- })
- expect(result).toMatchSnapshot()
- })
-})
diff --git a/helpers/codegen/generators/curl.js b/helpers/codegen/generators/curl.js
index b8ce94d05..cdcfa9107 100644
--- a/helpers/codegen/generators/curl.js
+++ b/helpers/codegen/generators/curl.js
@@ -2,18 +2,19 @@ export const CurlCodegen = {
id: "curl",
name: "cURL",
generator: ({
- method,
url,
pathName,
queryString,
+ auth,
httpUser,
httpPassword,
bearerToken,
- headers,
+ method,
rawInput,
rawParams,
rawRequestBody,
contentType,
+ headers,
}) => {
const requestString = []
requestString.push(`curl -X ${method}`)