]> WPIA git - gigi.git/blob - tests/club/wpia/gigi/TestUser.java
add: ensure that for Org Administrator actions certificate login is used
[gigi.git] / tests / club / wpia / gigi / TestUser.java
1 package club.wpia.gigi;
2
3 import static org.junit.Assert.*;
4
5 import java.io.IOException;
6 import java.sql.SQLException;
7 import java.util.Arrays;
8 import java.util.Locale;
9
10 import org.hamcrest.CoreMatchers;
11 import org.junit.Test;
12
13 import club.wpia.gigi.dbObjects.Country;
14 import club.wpia.gigi.dbObjects.Country.CountryCodeType;
15 import club.wpia.gigi.dbObjects.Domain;
16 import club.wpia.gigi.dbObjects.EmailAddress;
17 import club.wpia.gigi.dbObjects.Name;
18 import club.wpia.gigi.dbObjects.NamePart;
19 import club.wpia.gigi.dbObjects.NamePart.NamePartType;
20 import club.wpia.gigi.dbObjects.User;
21 import club.wpia.gigi.dbObjects.Verification;
22 import club.wpia.gigi.dbObjects.Verification.VerificationType;
23 import club.wpia.gigi.testUtils.BusinessTest;
24 import club.wpia.gigi.util.Notary;
25
26 public class TestUser extends BusinessTest {
27
28     @Test
29     public void testStoreAndLoad() throws SQLException, GigiApiException {
30         User u = createUser("f", "l", createUniqueName() + "a@email.org", TEST_PASSWORD);
31         int id = u.getId();
32         User u2 = User.getById(id);
33         assertEquals(u.getNames()[0], u2.getNames()[0]);
34         assertEquals(u.getDoB().toString(), u2.getDoB().toString());
35         assertEquals(u.getEmail(), u2.getEmail());
36     }
37
38     @Test
39     public void testWebStoreAndLoad() throws SQLException, GigiApiException {
40         int id = createVerifiedUser("aä", "b", createUniqueName() + "a@email.org", TEST_PASSWORD);
41
42         Name u = User.getById(id).getNames()[0];
43
44         assertThat(Arrays.asList(u.getParts()), CoreMatchers.hasItem(new NamePart(NamePartType.FIRST_NAME, "aä")));
45         assertThat(Arrays.asList(u.getParts()), CoreMatchers.hasItem(new NamePart(NamePartType.LAST_NAME, "b")));
46         assertEquals(2, u.getParts().length);
47     }
48
49     @Test
50     public void testAgentUtilMethods() throws SQLException, GigiApiException {
51         int id = createVerificationUser("aä", "b", createUniqueName() + "a@email.org", TEST_PASSWORD);
52
53         User u = User.getById(id);
54         assertTrue(u.canVerify());
55         int verificationPoints = u.getVerificationPoints();
56         int expPoints = u.getExperiencePoints();
57         assertEquals(100, verificationPoints);
58         assertEquals(User.EXPERIENCE_POINTS, expPoints);
59         assertTrue(u.hasPassedCATS());
60         assertEquals(10, u.getMaxVerifyPoints());
61     }
62
63     @Test
64     public void testMatcherMethodsDomain() throws SQLException, GigiApiException, IOException {
65         String uq = createUniqueName();
66         int id = createVerifiedUser("aä", "b", uq + "a@email.org", TEST_PASSWORD);
67
68         User u = User.getById(id);
69         verify(new Domain(u, u, uq + "a-testdomain.org"));
70         verify(new Domain(u, u, uq + "b-testdomain.org"));
71         verify(new Domain(u, u, uq + "c-testdomain.org"));
72         assertEquals(3, u.getDomains().length);
73         assertTrue(u.isValidDomain(uq + "a-testdomain.org"));
74         assertTrue(u.isValidDomain(uq + "b-testdomain.org"));
75         assertTrue(u.isValidDomain(uq + "c-testdomain.org"));
76         assertTrue(u.isValidDomain("a." + uq + "a-testdomain.org"));
77         assertTrue(u.isValidDomain("*." + uq + "a-testdomain.org"));
78         assertFalse(u.isValidDomain("a" + uq + "a-testdomain.org"));
79         assertFalse(u.isValidDomain("b" + uq + "a-testdomain.org"));
80     }
81
82     @Test
83     public void testMatcherMethodsEmail() throws SQLException, GigiApiException, IOException {
84         String uq = createUniqueName();
85         int id = createVerifiedUser("aä", "b", uq + "a@email.org", TEST_PASSWORD);
86
87         User u = User.getById(id);
88
89         new EmailAddress(u, uq + "b@email.org", Locale.ENGLISH);
90         getMailReceiver().receive(uq + "b@email.org").verify();
91         new EmailAddress(u, uq + "c@email.org", Locale.ENGLISH);
92         getMailReceiver().receive(uq + "c@email.org");// no-verify
93         assertEquals(3, u.getEmails().length);
94
95         assertTrue(u.isValidEmail(uq + "a@email.org"));
96         assertTrue(u.isValidEmail(uq + "b@email.org"));
97         assertFalse(u.isValidEmail(uq + "b+6@email.org"));
98         assertFalse(u.isValidEmail(uq + "b*@email.org"));
99         assertFalse(u.isValidEmail(uq + "c@email.org"));
100     }
101
102     @Test
103     public void testMatcherMethodsName() throws SQLException, GigiApiException, IOException {
104         String uq = createUniqueName();
105         int id = createVerifiedUser("aä", "b", uq + "a@email.org", TEST_PASSWORD);
106
107         User u = User.getById(id);
108
109         User[] us = new User[5];
110         for (int i = 0; i < us.length; i++) {
111             us[i] = User.getById(createVerificationUser("f", "l", createUniqueName() + "@email.com", TEST_PASSWORD));
112             Notary.verify(us[i], u, u.getPreferredName(), u.getDoB(), 10, "here", validVerificationDateString(), VerificationType.FACE_TO_FACE, Country.getCountryByCode("DE", CountryCodeType.CODE_2_CHARS));
113         }
114
115         assertTrue(u.isValidName("aä b"));
116         assertFalse(u.isValidName("aä c"));
117         assertFalse(u.isValidName("aä d b"));
118
119     }
120
121     @Test
122     public void testDoubleInsert() throws GigiApiException {
123         User u = createUser("f", "l", createUniqueName() + "@example.org", TEST_PASSWORD);
124         Verification[] ma = u.getMadeVerifications();
125         Verification[] ma2 = u.getMadeVerifications();
126         Verification[] ra = u.getReceivedVerifications();
127         Verification[] ra2 = u.getReceivedVerifications();
128         assertEquals(0, u.getCertificates(false).length);
129         assertEquals(0, ma.length);
130         assertEquals(0, ma2.length);
131         assertEquals(0, ra.length);
132         assertEquals(0, ra2.length);
133         assertSame(ma, ma2);
134         assertSame(ra, ra2);
135     }
136
137     @Test
138     public void testGetByMail() throws GigiApiException {
139         String email = createUniqueName() + "a@email.org";
140         int id = createVerifiedUser("aä", "b", email, TEST_PASSWORD);
141         User emailUser = User.getByEmail(email);
142         User u = User.getById(id);
143         assertSame(u, emailUser);
144     }
145
146     @Test
147     public void testNoCats() throws GigiApiException {
148         String email = createUniqueName() + "a@email.org";
149         createVerifiedUser("aä", "b", email, TEST_PASSWORD);
150         User emailUser = User.getByEmail(email);
151         assertFalse(emailUser.hasPassedCATS());
152     }
153
154     @Test
155     public void testGetByMailFail() {
156         String email = createUniqueName() + "d@email.org";
157         User emailUser = User.getByEmail(email);
158         assertNull(emailUser);
159     }
160
161 }