Bug 1031956 - is building GET when it should be POST draft
authorFred Lin <gasolin@mozilla.com>
Fri, 24 Mar 2017 16:43:54 +0800
changeset 504372 274bdf4f4eb4bc702b93c606741bfaa6a5d6a806
parent 504149 01d1dedf400d4be413b1a0d48090dca7acf29637
child 550652 0cbaed40f228775fc128337bde85080e65fee101
push id50799
push userbmo:gasolin@mozilla.com
push dateFri, 24 Mar 2017 08:44:24 +0000
bugs1031956
milestone55.0a1
Bug 1031956 - is building GET when it should be POST MozReview-Commit-ID: GkaCJmgpgUM
devtools/client/netmonitor/test/browser_net_curl-utils.js
devtools/client/shared/curl.js
--- a/devtools/client/netmonitor/test/browser_net_curl-utils.js
+++ b/devtools/client/netmonitor/test/browser_net_curl-utils.js
@@ -2,17 +2,17 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 /**
  * Tests Curl Utils functionality.
  */
 
-const { CurlUtils } = require("devtools/client/shared/curl");
+const { Curl, CurlUtils } = require("devtools/client/shared/curl");
 
 add_task(function* () {
   let { tab, monitor } = yield initNetMonitor(CURL_UTILS_URL);
   info("Starting test... ");
 
   let { gStore, windowRequire } = monitor.panelWin;
   let Actions = windowRequire("devtools/client/netmonitor/actions/index");
   let { getSortedRequests } = windowRequire("devtools/client/netmonitor/selectors/index");
@@ -34,16 +34,17 @@ add_task(function* () {
   };
 
   let data = yield createCurlData(requests.get, getLongString);
   testFindHeader(data);
 
   data = yield createCurlData(requests.post, getLongString);
   testIsUrlEncodedRequest(data);
   testWritePostDataTextParams(data);
+  testDataArgumentOnGeneratedCommand(data);
 
   data = yield createCurlData(requests.multipart, getLongString);
   testIsMultipartRequest(data);
   testGetMultipartBoundary(data);
   testMultiPartHeaders(data);
   testRemoveBinaryDataFromMultipartText(data);
 
   data = yield createCurlData(requests.multipartForm, getLongString);
@@ -95,16 +96,22 @@ function testMultiPartHeaders(data) {
 }
 
 function testWritePostDataTextParams(data) {
   let params = CurlUtils.writePostDataTextParams(data.postDataText);
   is(params, "param1=value1&param2=value2&param3=value3",
     "Should return a serialized representation of the request parameters");
 }
 
+function testDataArgumentOnGeneratedCommand(data) {
+  let curlCommand = Curl.generateCommand(data);
+  ok(curlCommand.includes("--data"),
+    "Should return a curl command with --data");
+}
+
 function testGetMultipartBoundary(data) {
   let boundary = CurlUtils.getMultipartBoundary(data);
   ok(/-{3,}\w+/.test(boundary),
     "A boundary string should be found in a multipart request.");
 }
 
 function testRemoveBinaryDataFromMultipartText(data) {
   let generatedBoundary = CurlUtils.getMultipartBoundary(data);
--- a/devtools/client/shared/curl.js
+++ b/devtools/client/shared/curl.js
@@ -71,17 +71,18 @@ const Curl = {
     // Add URL.
     command.push(escapeString(data.url));
 
     let postDataText = null;
     let multipartRequest = utils.isMultipartRequest(data);
 
     // Create post data.
     let postData = [];
-    if (utils.isUrlEncodedRequest(data) || data.method == "PUT") {
+    if (utils.isUrlEncodedRequest(data) ||
+        ["PUT", "POST"].includes(data.method)) {
       postDataText = data.postDataText;
       postData.push("--data");
       postData.push(escapeString(utils.writePostDataTextParams(postDataText)));
       ignoredHeaders.add("Content-Length");
     } else if (multipartRequest) {
       postDataText = data.postDataText;
       postData.push("--data-binary");
       let boundary = utils.getMultipartBoundary(data);