From 47dd1c1e95092d8bea9324f369c63b0b500073b2 Mon Sep 17 00:00:00 2001 From: Laszlo Hornyak Date: Thu, 10 Oct 2013 22:01:06 +0200 Subject: [PATCH] PasswordGenerator tests - StringBuffer replaced with a StringBuilder - tests added Signed-off-by: Laszlo Hornyak --- .../com/cloud/utils/PasswordGenerator.java | 2 +- .../cloud/utils/PasswordGeneratorTest.java | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 utils/test/com/cloud/utils/PasswordGeneratorTest.java diff --git a/utils/src/com/cloud/utils/PasswordGenerator.java b/utils/src/com/cloud/utils/PasswordGenerator.java index 2e1cb17b876..d1a5939f6ee 100644 --- a/utils/src/com/cloud/utils/PasswordGenerator.java +++ b/utils/src/com/cloud/utils/PasswordGenerator.java @@ -79,7 +79,7 @@ public class PasswordGenerator { } public static String rot13(final String password) { - final StringBuffer newPassword = new StringBuffer(""); + final StringBuilder newPassword = new StringBuilder(password.length()); for (int i = 0; i < password.length(); i++) { char c = password.charAt(i); diff --git a/utils/test/com/cloud/utils/PasswordGeneratorTest.java b/utils/test/com/cloud/utils/PasswordGeneratorTest.java new file mode 100644 index 00000000000..50f956005d7 --- /dev/null +++ b/utils/test/com/cloud/utils/PasswordGeneratorTest.java @@ -0,0 +1,39 @@ +package com.cloud.utils; + +import org.junit.Assert; +import org.junit.Test; + +public class PasswordGeneratorTest { + @Test + public void generateRandomPassword() { + // actual length is requested length + 3 + Assert.assertTrue(PasswordGenerator.generateRandomPassword(0).length() == 3); + Assert.assertTrue(PasswordGenerator.generateRandomPassword(1).length() == 4); + String password = PasswordGenerator.generateRandomPassword(0); + // TODO: this might give more help to bruteforcing than desired + // the actual behavior is that the first character is a random lowercase + // char + Assert.assertTrue(Character.isLowerCase(password.charAt(0))); + // the second character is a random upper case char + Assert.assertTrue(Character.isUpperCase(password.charAt(1))); + // and the third is a digit + Assert.assertTrue(Character.isDigit(password.charAt(2))); + } + + @Test + public void rot13() { + // only letters are handled, numbers are unchanged + Assert.assertEquals("1234", PasswordGenerator.rot13("1234")); + // letters are moved by +-13 characters + Assert.assertEquals("nop", PasswordGenerator.rot13("abc")); + // the transformation it is reversable + Assert.assertEquals("abc", PasswordGenerator.rot13("nop")); + // which means for any string + Assert.assertEquals("abcdefghijklmnooprstuvxyzuv1234?", + PasswordGenerator.rot13(PasswordGenerator + .rot13("abcdefghijklmnooprstuvxyzuv1234?"))); + // same for capital letters + Assert.assertEquals("ABC", PasswordGenerator.rot13("NOP")); + Assert.assertEquals("NOP", PasswordGenerator.rot13("ABC")); + } +}