summaryrefslogtreecommitdiff
path: root/qpid/java/broker
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2012-02-15 09:13:55 +0000
committerKeith Wall <kwall@apache.org>2012-02-15 09:13:55 +0000
commit7be5af63ce577a5e791da305e2c8d518afc6a730 (patch)
tree420404aadfc9f1891f0d078c56c185af223fb49a /qpid/java/broker
parent5f25d25400edcd068eecf374cc988e9b83464e5b (diff)
downloadqpid-python-7be5af63ce577a5e791da305e2c8d518afc6a730.tar.gz
QPID-3840: added automated tests for the Java Broker's qpid-passwd script and Passwd class
Applied patch from Andrew MacBean <andymacbean@gmail.com> and Philip Harvey <phil@philharveyonline.com> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1244406 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/tools/security/Passwd.java48
-rw-r--r--qpid/java/broker/src/test/java/org/apache/qpid/tools/security/PasswdTest.java38
2 files changed, 57 insertions, 29 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/tools/security/Passwd.java b/qpid/java/broker/src/main/java/org/apache/qpid/tools/security/Passwd.java
index ae150708ca..cd833c89c4 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/tools/security/Passwd.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/tools/security/Passwd.java
@@ -14,26 +14,26 @@
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
+ *
*
- *
*/
package org.apache.qpid.tools.security;
-import org.apache.commons.codec.binary.Base64;
-
import java.io.IOException;
-import java.io.PrintStream;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
import java.security.DigestException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
+import org.apache.commons.codec.binary.Base64;
+
+/**
+ * Utility to generate user:encodedPassword string for use in md5passwd
+ */
public class Passwd
{
- private Passwd()
- {
- }
-
public static void main(String args[]) throws NoSuchAlgorithmException, DigestException, IOException
{
if (args.length != 2)
@@ -42,7 +42,14 @@ public class Passwd
System.exit(0);
}
- byte[] data = args[1].getBytes("utf-8");
+ Passwd passwd = new Passwd();
+ String output = passwd.getOutput(args[0], args[1]);
+ System.out.println(output);
+ }
+
+ public String getOutput(String userName, String password) throws UnsupportedEncodingException, NoSuchAlgorithmException
+ {
+ byte[] data = password.getBytes("utf-8");
MessageDigest md = MessageDigest.getInstance("MD5");
@@ -57,24 +64,7 @@ public class Passwd
byte[] encoded = b64.encode(digest);
- output(args[0], encoded);
- }
-
- private static void output(String user, byte[] encoded) throws IOException
- {
- PrintStream ps = new PrintStream(System.out);
-
- user += ":";
- ps.write(user.getBytes("utf-8"));
-
- for (byte b : encoded)
- {
- ps.write(b);
- }
-
- ps.println();
-
- ps.flush();
- ps.close();
+ String encodedStr = new String(encoded, Charset.forName("utf-8"));
+ return userName + ":" + encodedStr;
}
}
diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/tools/security/PasswdTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/tools/security/PasswdTest.java
new file mode 100644
index 0000000000..b2a7234c8a
--- /dev/null
+++ b/qpid/java/broker/src/test/java/org/apache/qpid/tools/security/PasswdTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.qpid.tools.security;
+
+import junit.framework.TestCase;
+
+public class PasswdTest extends TestCase
+{
+ public void testUserGuestAndPasswordGuest() throws Exception
+ {
+ Passwd passwd = new Passwd();
+ String output = passwd.getOutput("guest", "guest");
+ assertEquals("guest:CE4DQ6BIb/BVMN9scFyLtA==", output);
+ }
+
+ public void testUser1AndPasswordFoo() throws Exception
+ {
+ Passwd passwd = new Passwd();
+ String output = passwd.getOutput("user1", "foo");
+ assertEquals("user1:rL0Y20zC+Fzt72VPzMSk2A==", output);
+ }
+}