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