Repository: jclouds Updated Branches: refs/heads/master 5bcf7c475 -> 640e04b31
Generate fixed length passwords Avoids bugs where tests succeed with an average sized password but fail when the password length is at the allowed extremes. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/640e04b3 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/640e04b3 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/640e04b3 Branch: refs/heads/master Commit: 640e04b3152e491bd504c09145e06b01cf8f224c Parents: 5bcf7c4 Author: Svetoslav Neykov <svetoslav.ney...@cloudsoftcorp.com> Authored: Tue Aug 1 16:12:59 2017 +0300 Committer: Svetoslav Neykov <svetoslav.ney...@cloudsoftcorp.com> Committed: Tue Aug 8 20:21:21 2017 +0300 ---------------------------------------------------------------------- core/src/main/java/org/jclouds/util/Passwords.java | 14 ++++++++++---- .../src/test/java/org/jclouds/util/PasswordsTest.java | 8 ++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/640e04b3/core/src/main/java/org/jclouds/util/Passwords.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/jclouds/util/Passwords.java b/core/src/main/java/org/jclouds/util/Passwords.java index e1d3b46..cf2d57d 100644 --- a/core/src/main/java/org/jclouds/util/Passwords.java +++ b/core/src/main/java/org/jclouds/util/Passwords.java @@ -19,16 +19,18 @@ package org.jclouds.util; import java.util.Random; import java.util.regex.Pattern; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; public class Passwords { private static final Random random = new Random(); - private static final int MIN_CHAR = 8; - private static final int MAX_CHAR = 50; + private static final int GENERATE_PASSWORD_LENGTH = 30; + private static final int VALID_PASSWORD_MIN_LENGTH = 8; + private static final int VALID_PASSWORD_MAX_LENGTH = 50; private static final String PASSWORD_FORMAT = String.format( - "[a-zA-Z0-9][^iIloOwWyYzZ10]{%d,%d}", MIN_CHAR - 1, MAX_CHAR); + "[a-zA-Z0-9][^iIloOwWyYzZ10]{%d,%d}", VALID_PASSWORD_MIN_LENGTH - 1, VALID_PASSWORD_MAX_LENGTH); private static final Pattern PASSWORD_PATTERN = Pattern.compile(PASSWORD_FORMAT); private static final ImmutableSet<Character> INVALID_CHARS = ImmutableSet.<Character>of( @@ -39,7 +41,11 @@ public class Passwords { } public static String generate() { - int count = random.nextInt(MAX_CHAR - MIN_CHAR) + MIN_CHAR; + return generate(GENERATE_PASSWORD_LENGTH); + } + + public static String generate(int count) { + Preconditions.checkArgument(count > 0, "Password length must be a positive number"); final char[] buffer = new char[count]; http://git-wip-us.apache.org/repos/asf/jclouds/blob/640e04b3/core/src/test/java/org/jclouds/util/PasswordsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/jclouds/util/PasswordsTest.java b/core/src/test/java/org/jclouds/util/PasswordsTest.java index 200bed9..d1d5d50 100644 --- a/core/src/test/java/org/jclouds/util/PasswordsTest.java +++ b/core/src/test/java/org/jclouds/util/PasswordsTest.java @@ -20,8 +20,10 @@ import com.google.common.collect.ImmutableList; import org.testng.annotations.Test; import java.util.List; +import java.util.Random; import static org.jclouds.util.Passwords.isValidPassword; +import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; @@ -52,4 +54,10 @@ public class PasswordsTest { assertTrue(isValidPassword(pwd), "Failed with: " + pwd); } } + + @Test + public void testGeneratorGeneratesRequestedLength() { + int passwordLength = new Random().nextInt(40) + 10; + assertEquals(Passwords.generate(passwordLength).length(), passwordLength); + } }