From: Felix Dörre Date: Tue, 1 Jul 2014 20:48:59 +0000 (+0200) Subject: Fix minor bug in strength checker and add unit test. X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=28f6b558d8116f8cbb17390a83235976b50903b0 Fix minor bug in strength checker and add unit test. --- diff --git a/src/org/cacert/gigi/util/PasswordStrengthChecker.java b/src/org/cacert/gigi/util/PasswordStrengthChecker.java index efc776ef..07898f26 100644 --- a/src/org/cacert/gigi/util/PasswordStrengthChecker.java +++ b/src/org/cacert/gigi/util/PasswordStrengthChecker.java @@ -9,7 +9,7 @@ public class PasswordStrengthChecker { static Pattern lower = Pattern.compile("[a-z]"); static Pattern upper = Pattern.compile("[A-Z]"); static Pattern whitespace = Pattern.compile("\\s"); - static Pattern special = Pattern.compile("\\W"); + static Pattern special = Pattern.compile("(?!\\s)\\W"); private PasswordStrengthChecker() { } private static int checkpwlight(String pw) { diff --git a/tests/org/cacert/gigi/util/TestPasswordStrengthChecker.java b/tests/org/cacert/gigi/util/TestPasswordStrengthChecker.java new file mode 100644 index 00000000..91a918c4 --- /dev/null +++ b/tests/org/cacert/gigi/util/TestPasswordStrengthChecker.java @@ -0,0 +1,64 @@ +package org.cacert.gigi.util; + +import org.cacert.gigi.User; +import org.junit.Test; +import static org.junit.Assert.*; + +public class TestPasswordStrengthChecker { + User u; + public TestPasswordStrengthChecker() { + u = new User(); + u.setFname("fname"); + u.setLname("lname"); + u.setMname("mname"); + u.setEmail("email"); + u.setSuffix("suffix"); + } + @Test + public void testPasswordLength() { + assertEquals(1, PasswordStrengthChecker.checkpw("01234", u)); + assertEquals(2, PasswordStrengthChecker.checkpw("0123456789012345", u)); + assertEquals(3, + PasswordStrengthChecker.checkpw("012345678901234567890", u)); + assertEquals(4, PasswordStrengthChecker.checkpw( + "01234567890123456789012345", u)); + assertEquals(5, PasswordStrengthChecker.checkpw( + "0123456789012345678901234567890", u)); + } + @Test + public void testPasswordCharTypes() { + assertEquals(1, PasswordStrengthChecker.checkpw("0", u)); + assertEquals(2, PasswordStrengthChecker.checkpw("0a", u)); + assertEquals(2, PasswordStrengthChecker.checkpw("0az", u)); + assertEquals(3, PasswordStrengthChecker.checkpw("0azZ", u)); + assertEquals(4, PasswordStrengthChecker.checkpw("0a zZ", u)); + assertEquals(5, PasswordStrengthChecker.checkpw("0a. zZ", u)); + + assertEquals(1, PasswordStrengthChecker.checkpw(".", u)); + assertEquals(1, PasswordStrengthChecker.checkpw(" ", u)); + assertEquals(1, PasswordStrengthChecker.checkpw("b", u)); + assertEquals(1, PasswordStrengthChecker.checkpw("Z", u)); + + assertEquals(2, PasswordStrengthChecker.checkpw("0.", u)); + assertEquals(2, PasswordStrengthChecker.checkpw("0 ", u)); + assertEquals(2, PasswordStrengthChecker.checkpw("0a", u)); + assertEquals(2, PasswordStrengthChecker.checkpw("0Z", u)); + + assertEquals(2, PasswordStrengthChecker.checkpw(" .", u)); + assertEquals(2, PasswordStrengthChecker.checkpw(" a", u)); + assertEquals(2, PasswordStrengthChecker.checkpw(" Z", u)); + + } + @Test + public void testPasswordContains() { + assertEquals(-1, PasswordStrengthChecker.checkpw("fnamea", u)); + assertEquals(-5, PasswordStrengthChecker.checkpw("na", u)); + assertEquals(0, PasswordStrengthChecker.checkpw("1lname", u)); + assertEquals(0, PasswordStrengthChecker.checkpw("1email", u)); + assertEquals(-1, PasswordStrengthChecker.checkpw("mai", u)); + assertEquals(-1, PasswordStrengthChecker.checkpw("suff", u)); + assertEquals(0, PasswordStrengthChecker.checkpw("1suffix", u)); + + } + +}