]> WPIA git - gigi.git/blob - tests/club/wpia/gigi/passwords/TestDelegatingPasswordChecker.java
add: DelegatingPasswordChecker implementation
[gigi.git] / tests / club / wpia / gigi / passwords / TestDelegatingPasswordChecker.java
1 package club.wpia.gigi.passwords;
2
3 import static org.hamcrest.CoreMatchers.*;
4 import static org.junit.Assert.*;
5
6 import org.junit.Test;
7
8 import club.wpia.gigi.GigiApiException;
9 import club.wpia.gigi.passwords.DelegatingPasswordChecker;
10 import club.wpia.gigi.passwords.PasswordChecker;
11
12 public class TestDelegatingPasswordChecker {
13
14     @Test
15     public void testNoCheckers() {
16         DelegatingPasswordChecker checker = new DelegatingPasswordChecker(new PasswordChecker[0]);
17
18         assertNull(checker.checkPassword("", new String[0], ""));
19     }
20
21     @Test
22     public void testOneChecker() {
23         DelegatingPasswordChecker checker = new DelegatingPasswordChecker(new PasswordChecker[] {
24             new PasswordChecker() {
25                 @Override
26                 public GigiApiException checkPassword(String password, String[] nameParts, String email) {
27                     return password.isEmpty() ?
28                         new GigiApiException("empty password") :
29                         null;
30                 }
31             }
32         });
33
34         assertNull(checker.checkPassword("a strong password", new String[0], ""));
35
36         GigiApiException exception = checker.checkPassword("", new String[0], "");
37         assertNotNull(exception);
38         assertEquals("empty password", exception.getMessage());
39     }
40
41     @Test
42     public void testTwoCheckers() {
43         DelegatingPasswordChecker checker = new DelegatingPasswordChecker(new PasswordChecker[] {
44             new PasswordChecker() {
45                 @Override
46                 public GigiApiException checkPassword(String password, String[] nameParts, String email) {
47                     return password.equals(email) ?
48                         new GigiApiException("password = email") :
49                         null;
50                 }
51             },
52             new PasswordChecker() {
53                 @Override
54                 public GigiApiException checkPassword(String password, String[] nameParts, String email) {
55                     return password.equals("12345") ?
56                         new GigiApiException("12345 is a bad password") :
57                         null;
58                 }
59             }
60         });
61
62         assertNull(checker.checkPassword("a strong password", new String[0], "email"));
63
64         GigiApiException exception1 = checker.checkPassword("email", new String[0], "email");
65         assertNotNull(exception1);
66         assertEquals("password = email", exception1.getMessage());
67
68         GigiApiException exception2 = checker.checkPassword("12345", new String[0], "email");
69         assertNotNull(exception2);
70         assertEquals("12345 is a bad password", exception2.getMessage());
71
72         GigiApiException exception3 = checker.checkPassword("12345", new String[0], "12345");
73         assertNotNull(exception3);
74         assertThat(exception3.getMessage(), containsString("password = email"));
75         assertThat(exception3.getMessage(), containsString("12345 is a bad password"));
76     }
77 }