1 package org.cacert.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.cacert.gigi.GigiApiException;
10 import org.cacert.gigi.dbObjects.EmailAddress;
11 import org.cacert.gigi.testUtils.ClientBusinessTest;
12 import org.cacert.gigi.testUtils.TestEmailReceiver.TestMail;
13 import org.hamcrest.CustomMatcher;
14 import org.junit.Test;
16 public class TestVerify extends ClientBusinessTest {
19 public void testVerify() throws GigiApiException {
20 EmailAddress ea = new EmailAddress(u, "test@example.com", Locale.ENGLISH);
21 TestMail tm = getMailReceiver().receive();
22 Pattern p = Pattern.compile(".*hash=(.*)");
23 Matcher m = p.matcher(tm.extractLink());
24 assertTrue(m.matches());
25 String correctToken = m.group(1);
27 // Assert initial state
28 assertFalse(ea.isVerified());
31 assertFalse(ea.isVerifyable(correctToken + "w"));
32 assertFalse(ea.isVerifyable(""));
34 assertTrue(ea.isVerifyable(correctToken));
35 // state transition not possible with wrong token
36 org.hamcrest.Matcher<String> isInvalidToken = verificationDoesNotWork(ea);
37 assertThat(correctToken + "a", isInvalidToken);
38 assertThat("", isInvalidToken);
41 assertFalse(ea.isVerified());
42 ea.verify(correctToken);
43 assertTrue(ea.isVerified());
45 // no token is correct anymore
46 assertFalse(ea.isVerifyable(correctToken));
47 assertFalse(ea.isVerifyable(""));
48 // no verification is possible anymore
49 assertThat(correctToken + "a", isInvalidToken);
50 assertThat(correctToken, isInvalidToken);
51 assertThat("", isInvalidToken);
54 private org.hamcrest.Matcher<String> verificationDoesNotWork(final EmailAddress ea) {
55 return new CustomMatcher<String>("Invalid token for validation.") {
58 public boolean matches(Object item) {
59 if ( !(item instanceof String)) {
62 String s = (String) item;
66 } catch (IllegalArgumentException e) {
68 } catch (GigiApiException e) {