]> WPIA git - gigi.git/blobdiff - tests/club/wpia/gigi/passwords/TestDelegatingPasswordChecker.java
add: DelegatingPasswordChecker implementation
[gigi.git] / tests / club / wpia / gigi / passwords / TestDelegatingPasswordChecker.java
diff --git a/tests/club/wpia/gigi/passwords/TestDelegatingPasswordChecker.java b/tests/club/wpia/gigi/passwords/TestDelegatingPasswordChecker.java
new file mode 100644 (file)
index 0000000..250758a
--- /dev/null
@@ -0,0 +1,77 @@
+package club.wpia.gigi.passwords;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import club.wpia.gigi.GigiApiException;
+import club.wpia.gigi.passwords.DelegatingPasswordChecker;
+import club.wpia.gigi.passwords.PasswordChecker;
+
+public class TestDelegatingPasswordChecker {
+
+    @Test
+    public void testNoCheckers() {
+        DelegatingPasswordChecker checker = new DelegatingPasswordChecker(new PasswordChecker[0]);
+
+        assertNull(checker.checkPassword("", new String[0], ""));
+    }
+
+    @Test
+    public void testOneChecker() {
+        DelegatingPasswordChecker checker = new DelegatingPasswordChecker(new PasswordChecker[] {
+            new PasswordChecker() {
+                @Override
+                public GigiApiException checkPassword(String password, String[] nameParts, String email) {
+                    return password.isEmpty() ?
+                        new GigiApiException("empty password") :
+                        null;
+                }
+            }
+        });
+
+        assertNull(checker.checkPassword("a strong password", new String[0], ""));
+
+        GigiApiException exception = checker.checkPassword("", new String[0], "");
+        assertNotNull(exception);
+        assertEquals("empty password", exception.getMessage());
+    }
+
+    @Test
+    public void testTwoCheckers() {
+        DelegatingPasswordChecker checker = new DelegatingPasswordChecker(new PasswordChecker[] {
+            new PasswordChecker() {
+                @Override
+                public GigiApiException checkPassword(String password, String[] nameParts, String email) {
+                    return password.equals(email) ?
+                        new GigiApiException("password = email") :
+                        null;
+                }
+            },
+            new PasswordChecker() {
+                @Override
+                public GigiApiException checkPassword(String password, String[] nameParts, String email) {
+                    return password.equals("12345") ?
+                        new GigiApiException("12345 is a bad password") :
+                        null;
+                }
+            }
+        });
+
+        assertNull(checker.checkPassword("a strong password", new String[0], "email"));
+
+        GigiApiException exception1 = checker.checkPassword("email", new String[0], "email");
+        assertNotNull(exception1);
+        assertEquals("password = email", exception1.getMessage());
+
+        GigiApiException exception2 = checker.checkPassword("12345", new String[0], "email");
+        assertNotNull(exception2);
+        assertEquals("12345 is a bad password", exception2.getMessage());
+
+        GigiApiException exception3 = checker.checkPassword("12345", new String[0], "12345");
+        assertNotNull(exception3);
+        assertThat(exception3.getMessage(), containsString("password = email"));
+        assertThat(exception3.getMessage(), containsString("12345 is a bad password"));
+    }
+}