PasswordGenerator tests - StringBuffer replaced with a StringBuilder - tests added
Signed-off-by: Laszlo Hornyak <laszlo.horn...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/47dd1c1e Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/47dd1c1e Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/47dd1c1e Branch: refs/heads/pluggable_vm_snapshot Commit: 47dd1c1e95092d8bea9324f369c63b0b500073b2 Parents: b76e501 Author: Laszlo Hornyak <laszlo.horn...@gmail.com> Authored: Thu Oct 10 22:01:06 2013 +0200 Committer: Laszlo Hornyak <laszlo.horn...@gmail.com> Committed: Fri Oct 11 20:09:37 2013 +0200 ---------------------------------------------------------------------- .../src/com/cloud/utils/PasswordGenerator.java | 2 +- .../com/cloud/utils/PasswordGeneratorTest.java | 39 ++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/47dd1c1e/utils/src/com/cloud/utils/PasswordGenerator.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/PasswordGenerator.java b/utils/src/com/cloud/utils/PasswordGenerator.java index 2e1cb17..d1a5939 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); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/47dd1c1e/utils/test/com/cloud/utils/PasswordGeneratorTest.java ---------------------------------------------------------------------- diff --git a/utils/test/com/cloud/utils/PasswordGeneratorTest.java b/utils/test/com/cloud/utils/PasswordGeneratorTest.java new file mode 100644 index 0000000..50f9560 --- /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")); + } +}