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 2020/12/17 19:30:21 UTC

[jmeter] branch master updated: Bug 65002 - HTTP(S) Test Script recorder creates an invalid Basic authentication URL

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 f0869b6  Bug 65002 - HTTP(S) Test Script recorder creates an invalid Basic authentication URL
f0869b6 is described below

commit f0869b6aef4ed865a9373f3ae2261d34a9c4b75c
Author: pmouawad <p....@ubik-ingenierie.com>
AuthorDate: Thu Dec 17 20:29:53 2020 +0100

    Bug 65002 - HTTP(S) Test Script recorder creates an invalid Basic
    authentication URL
---
 .../jmeter/protocol/http/proxy/ProxyControl.java    | 21 ++++++++++++---------
 xdocs/changes.xml                                   |  2 ++
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
index 9055db4..16686c7 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
@@ -24,7 +24,6 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
-import java.net.MalformedURLException;
 import java.nio.charset.StandardCharsets;
 import java.security.GeneralSecurityException;
 import java.security.KeyStore;
@@ -636,7 +635,7 @@ public class ProxyControl extends GenericController implements NonTestElement {
                 sampler.setFollowRedirects(samplerFollowRedirects);
                 sampler.setUseKeepAlive(useKeepAlive);
                 sampler.setImageParser(samplerDownloadImages);
-                Authorization authorization = createAuthorization(testElements, sampler);
+                Authorization authorization = createAuthorization(testElements, sampler, result);
                 if (authorization != null) {
                     setAuthorization(authorization, myTarget);
                 }
@@ -669,9 +668,10 @@ public class ProxyControl extends GenericController implements NonTestElement {
      *
      * @param testElements {@link TestElement}[]
      * @param sampler      {@link HTTPSamplerBase}
+     * @param result       {@link HTTPSampleResult}
      * @return {@link Authorization}
      */
-    private Authorization createAuthorization(final TestElement[] testElements, HTTPSamplerBase sampler) {
+    private Authorization createAuthorization(final TestElement[] testElements, HTTPSamplerBase sampler, SampleResult result) {
         Header authHeader;
         Authorization authorization = null;
         // Iterate over subconfig elements searching for HeaderManager
@@ -710,12 +710,7 @@ public class ProxyControl extends GenericController implements NonTestElement {
                             }
                             authCredentialsBase64 = authHeaderContent[1];
                             authorization=new Authorization();
-                            try {
-                                authorization.setURL(sampler.getUrl().toExternalForm());
-                            } catch (MalformedURLException e) {
-                                log.error("Error filling url on authorization, message: {}", e.getMessage(), e);
-                                authorization.setURL("${AUTH_BASE_URL}");//$NON-NLS-1$
-                            }
+                            authorization.setURL(computeAuthUrl(result.getUrlAsString()));
                             authorization.setMechanism(mechanism);
                             if(BASIC_AUTH.equals(authType)) {
                                 String authCred = new String(Base64.decodeBase64(authCredentialsBase64), StandardCharsets.UTF_8);
@@ -746,6 +741,14 @@ public class ProxyControl extends GenericController implements NonTestElement {
         return authorization;
     }
 
+    private String computeAuthUrl(String url) {
+        int index = url.lastIndexOf('/');
+        if (index >=0) {
+            return url.substring(0, index+1);
+        }
+        return url;
+    }
+
     public void stopProxy() {
         if (server != null) {
             server.stopServer();
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index a044536..f77317a 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -136,6 +136,7 @@ Summary
 <h3>HTTP Samplers and Test Script Recorder</h3>
 <ul>
   <li><bug>64955</bug>Keystore password not reset on reload</li>
+  <li><bug>65002</bug>HTTP(S) Test Script recorder creates an invalid Basic authentication URL. Contributed by Ubik Load Pack (https://ubikloadpack.com)</li>
 </ul>
 
 <h3>Other Samplers</h3>
@@ -188,6 +189,7 @@ Summary
 <ul>
   <li>Ori Marko (orimarko at gmail.com)</li>
   <li>罗寅卓 (luo_isaiah at qq.com)</li>
+  <li><a href="https://ubikloadpack.com" >Ubik Load Pack</a></li>
 </ul>
 <p>We also thank bug reporters who helped us improve JMeter.</p>
 <ul>