You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2019/10/28 19:45:34 UTC

[jmeter] branch master updated: Fix wrong parsing of parameters

This is an automated email from the ASF dual-hosted git repository.

pmouawad pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new 2e33d0f  Fix wrong parsing of parameters
2e33d0f is described below

commit 2e33d0fc5fd71bc6ef74d72e55a124cb7ff28d88
Author: pmouawad <p....@ubik-ingenierie.com>
AuthorDate: Mon Oct 28 20:45:01 2019 +0100

    Fix wrong parsing of parameters
---
 .../protocol/http/gui/action/ParseCurlCommandAction.java   |  7 ++++++-
 .../jmeter/gui/action/ParseCurlCommandActionTest.java      | 14 ++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
index 23f3e8b..6f9100a 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/gui/action/ParseCurlCommandAction.java
@@ -51,6 +51,7 @@ import javax.swing.SwingUtilities;
 import javax.swing.tree.TreePath;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jmeter.config.Arguments;
 import org.apache.jmeter.config.KeystoreConfig;
 import org.apache.jmeter.control.Controller;
@@ -286,7 +287,11 @@ public class ParseCurlCommandAction extends AbstractAction implements MenuCreato
         if (url.getPort() != -1) {
             httpSampler.setPort(url.getPort());
         }
-        httpSampler.setPath(url.getPath());
+        String path = url.getPath();
+        if (StringUtils.isNotEmpty(url.getQuery())) {
+            path += "?" + url.getQuery();
+        }
+        httpSampler.setPath(path);
         httpSampler.setDomain(url.getHost());
         httpSampler.setUseKeepAlive(request.isKeepAlive());
         httpSampler.setFollowRedirects(true);
diff --git a/src/protocol/http/src/test/java/org/apache/jmeter/gui/action/ParseCurlCommandActionTest.java b/src/protocol/http/src/test/java/org/apache/jmeter/gui/action/ParseCurlCommandActionTest.java
index a2d4652..5c46611 100644
--- a/src/protocol/http/src/test/java/org/apache/jmeter/gui/action/ParseCurlCommandActionTest.java
+++ b/src/protocol/http/src/test/java/org/apache/jmeter/gui/action/ParseCurlCommandActionTest.java
@@ -27,6 +27,7 @@ import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -41,6 +42,7 @@ import org.apache.jmeter.protocol.http.control.AuthManager.Mechanism;
 import org.apache.jmeter.protocol.http.control.Authorization;
 import org.apache.jmeter.protocol.http.control.CookieManager;
 import org.apache.jmeter.protocol.http.control.DNSCacheManager;
+import org.apache.jmeter.protocol.http.control.Header;
 import org.apache.jmeter.protocol.http.control.HeaderManager;
 import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui;
 import org.apache.jmeter.protocol.http.curl.BasicCurlParser;
@@ -251,6 +253,18 @@ public class ParseCurlCommandActionTest {
         httpSampler = (HTTPSamplerProxy) method.invoke(p, objs);
         assertEquals("c", httpSampler.getArguments().getArgument(0).getName());
         assertEquals("@test.txt;type=text/foo", httpSampler.getArguments().getArgument(0).getValue());
+
+        // test form data in httpsampler
+        request = basicCurlParser.parse("curl -X PUT \"https://www.example.com:123/12345?param1=value1&param2=value2\" -H  \"accept: */*\" -H  \"X-XSRF-TOKEN: 1234\"");
+        objs = new Object[]{request, ""};
+        httpSampler = (HTTPSamplerProxy) method.invoke(p, objs);
+        assertEquals(new URL("https://www.example.com:123/12345?param1=value1&param2=value2"), httpSampler.getUrl());
+        assertEquals(123, httpSampler.getPort());
+        assertEquals("www.example.com", httpSampler.getDomain());
+        assertEquals("/12345?param1=value1&param2=value2", httpSampler.getPath());
+        assertEquals("PUT", httpSampler.getMethod());
+        assertEquals(new Header("accept", "*/*"), httpSampler.getHeaderManager().getHeader(0));
+        assertEquals(new Header("X-XSRF-TOKEN", "1234"), httpSampler.getHeaderManager().getHeader(1));
     }
 
     @Test