1 package club.wpia.gigi.pages;
3 import static org.junit.Assert.*;
5 import java.util.Locale;
6 import java.util.regex.Matcher;
7 import java.util.regex.Pattern;
9 import org.hamcrest.CustomMatcher;
10 import org.junit.Test;
12 import club.wpia.gigi.GigiApiException;
13 import club.wpia.gigi.dbObjects.EmailAddress;
14 import club.wpia.gigi.testUtils.ClientBusinessTest;
15 import club.wpia.gigi.testUtils.TestEmailReceiver.TestMail;
17 public class TestVerify extends ClientBusinessTest {
20 public void testVerify() throws GigiApiException {
21 EmailAddress ea = new EmailAddress(u, "test@example.com", Locale.ENGLISH);
22 TestMail tm = getMailReceiver().receive();
23 Pattern p = Pattern.compile(".*hash=(.*)");
24 Matcher m = p.matcher(tm.extractLink());
25 assertTrue(m.matches());
26 String correctToken = m.group(1);
28 // Assert initial state
29 assertFalse(ea.isVerified());
32 assertFalse(ea.isVerifyable(correctToken + "w"));
33 assertFalse(ea.isVerifyable(""));
35 assertTrue(ea.isVerifyable(correctToken));
36 // state transition not possible with wrong token
37 org.hamcrest.Matcher<String> isInvalidToken = verificationDoesNotWork(ea);
38 assertThat(correctToken + "a", isInvalidToken);
39 assertThat("", isInvalidToken);
42 assertFalse(ea.isVerified());
43 ea.verify(correctToken);
44 assertTrue(ea.isVerified());
46 // no token is correct anymore
47 assertFalse(ea.isVerifyable(correctToken));
48 assertFalse(ea.isVerifyable(""));
49 // no verification is possible anymore
50 assertThat(correctToken + "a", isInvalidToken);
51 assertThat(correctToken, isInvalidToken);
52 assertThat("", isInvalidToken);
55 private org.hamcrest.Matcher<String> verificationDoesNotWork(final EmailAddress ea) {
56 return new CustomMatcher<String>("Invalid token for validation.") {
59 public boolean matches(Object item) {
60 if ( !(item instanceof String)) {
63 String s = (String) item;
67 } catch (IllegalArgumentException e) {
69 } catch (GigiApiException e) {