1 package club.wpia.gigi;
3 import static org.junit.Assert.*;
5 import java.io.IOException;
6 import java.sql.SQLException;
7 import java.util.Arrays;
8 import java.util.Locale;
10 import org.hamcrest.CoreMatchers;
11 import org.junit.Test;
13 import club.wpia.gigi.dbObjects.Verification;
14 import club.wpia.gigi.dbObjects.Verification.VerificationType;
15 import club.wpia.gigi.dbObjects.Country;
16 import club.wpia.gigi.dbObjects.Country.CountryCodeType;
17 import club.wpia.gigi.dbObjects.Domain;
18 import club.wpia.gigi.dbObjects.EmailAddress;
19 import club.wpia.gigi.dbObjects.Name;
20 import club.wpia.gigi.dbObjects.NamePart;
21 import club.wpia.gigi.dbObjects.NamePart.NamePartType;
22 import club.wpia.gigi.dbObjects.User;
23 import club.wpia.gigi.testUtils.BusinessTest;
24 import club.wpia.gigi.util.DayDate;
25 import club.wpia.gigi.util.Notary;
27 public class TestUser extends BusinessTest {
30 public void testStoreAndLoad() throws SQLException, GigiApiException {
31 long dob = System.currentTimeMillis();
32 dob -= dob % (1000 * 60 * 60 * 24);
33 User u = createUser("f", "l", createUniqueName() + "a@email.org", TEST_PASSWORD);
35 User u2 = User.getById(id);
36 assertEquals(u.getNames()[0], u2.getNames()[0]);
37 assertEquals(u.getDoB().toString(), u2.getDoB().toString());
38 assertEquals(u.getEmail(), u2.getEmail());
42 public void testWebStoreAndLoad() throws SQLException, GigiApiException {
43 int id = createVerifiedUser("aä", "b", createUniqueName() + "a@email.org", TEST_PASSWORD);
45 Name u = User.getById(id).getNames()[0];
47 assertThat(Arrays.asList(u.getParts()), CoreMatchers.hasItem(new NamePart(NamePartType.FIRST_NAME, "aä")));
48 assertThat(Arrays.asList(u.getParts()), CoreMatchers.hasItem(new NamePart(NamePartType.LAST_NAME, "b")));
49 assertEquals(2, u.getParts().length);
53 public void testAgentUtilMethods() throws SQLException, GigiApiException {
54 int id = createVerificationUser("aä", "b", createUniqueName() + "a@email.org", TEST_PASSWORD);
56 User u = User.getById(id);
57 assertTrue(u.canVerify());
58 int verificationPoints = u.getVerificationPoints();
59 int expPoints = u.getExperiencePoints();
60 assertEquals(100, verificationPoints);
61 assertEquals(User.EXPERIENCE_POINTS, expPoints);
62 assertTrue(u.hasPassedCATS());
63 assertEquals(10, u.getMaxVerifyPoints());
67 public void testMatcherMethodsDomain() throws SQLException, GigiApiException, IOException {
68 String uq = createUniqueName();
69 int id = createVerifiedUser("aä", "b", uq + "a@email.org", TEST_PASSWORD);
71 User u = User.getById(id);
72 verify(new Domain(u, u, uq + "a-testdomain.org"));
73 verify(new Domain(u, u, uq + "b-testdomain.org"));
74 verify(new Domain(u, u, uq + "c-testdomain.org"));
75 assertEquals(3, u.getDomains().length);
76 assertTrue(u.isValidDomain(uq + "a-testdomain.org"));
77 assertTrue(u.isValidDomain(uq + "b-testdomain.org"));
78 assertTrue(u.isValidDomain(uq + "c-testdomain.org"));
79 assertTrue(u.isValidDomain("a." + uq + "a-testdomain.org"));
80 assertTrue(u.isValidDomain("*." + uq + "a-testdomain.org"));
81 assertFalse(u.isValidDomain("a" + uq + "a-testdomain.org"));
82 assertFalse(u.isValidDomain("b" + uq + "a-testdomain.org"));
86 public void testMatcherMethodsEmail() throws SQLException, GigiApiException, IOException {
87 String uq = createUniqueName();
88 int id = createVerifiedUser("aä", "b", uq + "a@email.org", TEST_PASSWORD);
90 User u = User.getById(id);
92 new EmailAddress(u, uq + "b@email.org", Locale.ENGLISH);
93 getMailReceiver().receive().verify();
94 new EmailAddress(u, uq + "c@email.org", Locale.ENGLISH);
95 getMailReceiver().receive();// no-verify
96 assertEquals(3, u.getEmails().length);
98 assertTrue(u.isValidEmail(uq + "a@email.org"));
99 assertTrue(u.isValidEmail(uq + "b@email.org"));
100 assertFalse(u.isValidEmail(uq + "b+6@email.org"));
101 assertFalse(u.isValidEmail(uq + "b*@email.org"));
102 assertFalse(u.isValidEmail(uq + "c@email.org"));
106 public void testMatcherMethodsName() throws SQLException, GigiApiException, IOException {
107 String uq = createUniqueName();
108 int id = createVerifiedUser("aä", "b", uq + "a@email.org", TEST_PASSWORD);
110 User u = User.getById(id);
112 User[] us = new User[5];
113 for (int i = 0; i < us.length; i++) {
114 us[i] = User.getById(createVerificationUser("f", "l", createUniqueName() + "@email.com", TEST_PASSWORD));
115 Notary.verify(us[i], u, u.getPreferredName(), u.getDoB(), 10, "here", validVerificationDateString(), VerificationType.FACE_TO_FACE, Country.getCountryByCode("DE", CountryCodeType.CODE_2_CHARS));
118 assertTrue(u.isValidName("aä b"));
119 assertFalse(u.isValidName("aä c"));
120 assertFalse(u.isValidName("aä d b"));
125 public void testDoubleInsert() throws GigiApiException {
126 long d = System.currentTimeMillis();
127 d -= d % DayDate.MILLI_DAY;
128 User u = createUser("f", "l", createUniqueName() + "@example.org", TEST_PASSWORD);
129 Verification[] ma = u.getMadeVerifications();
130 Verification[] ma2 = u.getMadeVerifications();
131 Verification[] ra = u.getReceivedVerifications();
132 Verification[] ra2 = u.getReceivedVerifications();
133 assertEquals(0, u.getCertificates(false).length);
134 assertEquals(0, ma.length);
135 assertEquals(0, ma2.length);
136 assertEquals(0, ra.length);
137 assertEquals(0, ra2.length);
143 public void testGetByMail() throws GigiApiException {
144 String email = createUniqueName() + "a@email.org";
145 int id = createVerifiedUser("aä", "b", email, TEST_PASSWORD);
146 User emailUser = User.getByEmail(email);
147 User u = User.getById(id);
148 assertSame(u, emailUser);
152 public void testNoCats() throws GigiApiException {
153 String email = createUniqueName() + "a@email.org";
154 createVerifiedUser("aä", "b", email, TEST_PASSWORD);
155 User emailUser = User.getByEmail(email);
156 assertFalse(emailUser.hasPassedCATS());
160 public void testGetByMailFail() {
161 String email = createUniqueName() + "d@email.org";
162 User emailUser = User.getByEmail(email);
163 assertNull(emailUser);