GUACAMOLE-38: Put userInfo directly into configuration.

Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/84e71a02
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/84e71a02
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/84e71a02

Branch: refs/heads/master
Commit: 84e71a029c9a664d4dafa9638511ff468525d115
Parents: aaada49
Author: Nick Couchman <vn...@apache.org>
Authored: Thu May 17 19:58:12 2018 -0400
Committer: Nick Couchman <vn...@apache.org>
Committed: Fri Jun 1 13:40:53 2018 -0400

----------------------------------------------------------------------
 .../auth/quickconnect/utility/QCParser.java     | 37 ++++++++------------
 .../auth/quickconnect/utility/QCParserTest.java | 37 +++++++++++---------
 2 files changed, 35 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/84e71a02/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
----------------------------------------------------------------------
diff --git 
a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
 
b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
index 2c0b6dc..60b4b9c 100644
--- 
a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
+++ 
b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
@@ -137,13 +137,7 @@ public class QCParser {
         if (userInfo != null && !userInfo.isEmpty()) {
 
             try {
-                Map<String, String> userInfoParams = parseUserInfo(userInfo);
-
-                if (userInfoParams.containsKey("username"))
-                    qcConfig.setParameter("username", 
userInfoParams.get("username"));
-
-                if (userInfoParams.containsKey("password"))
-                    qcConfig.setParameter("password", 
userInfoParams.get("password"));
+                parseUserInfo(userInfo, qcConfig);
             }
             catch (UnsupportedEncodingException e) {
                 throw new GuacamoleServerException("Unexpected lack of UTF-8 
encoding support.", e);
@@ -186,39 +180,38 @@ public class QCParser {
 
     /**
      * Parse the given string for username and password values,
-     * and return a map containing the username, password
-     * or both.
+     * and, if values are present, decode them and set them in
+     * the provided GuacamoleConfiguration object.
      *
      * @param userInfo
      *     The string to parse for username/password values.
-     * 
-     * @return
-     *     A map with the username, password, or both.
+     *
+     * @param config
+     *     The GuacamoleConfiguration object to store the username
+     *     and password in.
      *
      * @throws UnsupportedEncodingException
      *     If Java lacks UTF-8 support.
      */
-    public static Map<String, String> parseUserInfo(String userInfo)
+    public static void parseUserInfo(String userInfo, 
+            GuacamoleConfiguration config)
             throws UnsupportedEncodingException {
 
-        Map<String, String> userInfoMap = new HashMap<String, String>();
         Matcher userinfoMatcher = userinfoPattern.matcher(userInfo);
 
         if (userinfoMatcher.matches()) {
-            String username = URLDecoder.decode(
-                    userinfoMatcher.group(USERNAME_GROUP), "UTF-8");
-            String password = URLDecoder.decode(
-                    userinfoMatcher.group(PASSWORD_GROUP), "UTF-8");
+            String username = userinfoMatcher.group(USERNAME_GROUP);
+            String password = userinfoMatcher.group(PASSWORD_GROUP);
 
             if (username != null && !username.isEmpty())
-                userInfoMap.put("username", username);
+                config.setParameter("username",
+                        URLDecoder.decode(username, "UTF-8"));
 
             if (password != null && !password.isEmpty())
-                userInfoMap.put("password", password);
+                config.setParameter("password",
+                        URLDecoder.decode(password, "UTF-8"));
         }
 
-        return userInfoMap;
-
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/84e71a02/extensions/guacamole-auth-quickconnect/src/test/java/org/apache/guacamole/auth/quickconnect/utility/QCParserTest.java
----------------------------------------------------------------------
diff --git 
a/extensions/guacamole-auth-quickconnect/src/test/java/org/apache/guacamole/auth/quickconnect/utility/QCParserTest.java
 
b/extensions/guacamole-auth-quickconnect/src/test/java/org/apache/guacamole/auth/quickconnect/utility/QCParserTest.java
index d63a521..50ad7d6 100644
--- 
a/extensions/guacamole-auth-quickconnect/src/test/java/org/apache/guacamole/auth/quickconnect/utility/QCParserTest.java
+++ 
b/extensions/guacamole-auth-quickconnect/src/test/java/org/apache/guacamole/auth/quickconnect/utility/QCParserTest.java
@@ -25,7 +25,7 @@ import org.apache.guacamole.GuacamoleException;
 import org.apache.guacamole.protocol.GuacamoleConfiguration;
 import org.junit.Test;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
 
 /**
  * Class to test methods in the QCParser utility class.
@@ -62,22 +62,25 @@ public class QCParserTest {
 
         Map<String, String> userInfoMap;
 
-        userInfoMap = QCParser.parseUserInfo("guacuser:secretpw");
-        assertEquals("guacuser", userInfoMap.get("username"));
-        assertEquals("secretpw", userInfoMap.get("password"));
-
-
-        userInfoMap = QCParser.parseUserInfo("guacuser");
-        assertEquals("guacuser", userInfoMap.get("username"));
-        assertFalse(userInfoMap.containsKey("password"));
-
-        userInfoMap = QCParser.parseUserInfo("guacuser:P%40ssw0rd%21");
-        assertEquals("guacuser", userInfoMap.get("username"));
-        assertEquals("P@ssw0rd!", userInfoMap.get("password"));
-
-        userInfoMap = 
QCParser.parseUserInfo("domain%5cguacuser:domain%2fpassword");
-        assertEquals("domain\\guacuser", userInfoMap.get("username"));
-        assertEquals("domain/password", userInfoMap.get("password"));
+        GuacamoleConfiguration config1 = new GuacamoleConfiguration();
+        QCParser.parseUserInfo("guacuser:secretpw", config1);
+        assertEquals("guacuser", config1.getParameter("username"));
+        assertEquals("secretpw", config1.getParameter("password"));
+
+        GuacamoleConfiguration config2 = new GuacamoleConfiguration();
+        QCParser.parseUserInfo("guacuser", config2);
+        assertEquals("guacuser", config2.getParameter("username"));
+        assertNull(config2.getParameter("password"));
+
+        GuacamoleConfiguration config3 = new GuacamoleConfiguration();
+        QCParser.parseUserInfo("guacuser:P%40ssw0rd%21", config3);
+        assertEquals("guacuser", config3.getParameter("username"));
+        assertEquals("P@ssw0rd!", config3.getParameter("password"));
+
+        GuacamoleConfiguration config4 = new GuacamoleConfiguration();
+        QCParser.parseUserInfo("domain%5cguacuser:domain%2fpassword", config4);
+        assertEquals("domain\\guacuser", config4.getParameter("username"));
+        assertEquals("domain/password", config4.getParameter("password"));
 
     }
 

Reply via email to