]> WPIA git - gigi.git/blob - tests/org/cacert/gigi/TestUser.java
ADD: more advanced domain name verification (public suffix, punycode)
[gigi.git] / tests / org / cacert / gigi / TestUser.java
1 package org.cacert.gigi;
2
3 import static org.junit.Assert.*;
4
5 import java.sql.Date;
6 import java.sql.SQLException;
7 import java.util.Locale;
8
9 import org.cacert.gigi.dbObjects.Assurance;
10 import org.cacert.gigi.dbObjects.Domain;
11 import org.cacert.gigi.dbObjects.EmailAddress;
12 import org.cacert.gigi.dbObjects.User;
13 import org.cacert.gigi.localisation.Language;
14 import org.cacert.gigi.testUtils.ManagedTest;
15 import org.junit.Test;
16
17 public class TestUser extends ManagedTest {
18
19     @Test
20     public void testStoreAndLoad() throws SQLException {
21         User u = new User();
22         u.setFname("user");
23         u.setLname("last");
24         u.setMname("");
25         u.setSuffix("");
26         u.setPreferredLocale(Locale.ENGLISH);
27         long dob = System.currentTimeMillis();
28         dob -= dob % (1000 * 60 * 60 * 24);
29         u.setDob(new java.sql.Date(dob));
30         u.setEmail(createUniqueName() + "a@email.org");
31         u.insert("password");
32         int id = u.getId();
33         User u2 = User.getById(id);
34         assertEquals(u, u2);
35     }
36
37     @Test
38     public void testWebStoreAndLoad() throws SQLException {
39         int id = createVerifiedUser("aä", "b", createUniqueName() + "a@email.org", TEST_PASSWORD);
40
41         User u = User.getById(id);
42         assertEquals("aä", u.getFname());
43         assertEquals("b", u.getLname());
44         assertEquals("", u.getMname());
45     }
46
47     @Test
48     public void testAssurerUtilMethods() throws SQLException {
49         int id = createAssuranceUser("aä", "b", createUniqueName() + "a@email.org", TEST_PASSWORD);
50
51         User u = User.getById(id);
52         assertTrue(u.canAssure());
53         int assurancePoints = u.getAssurancePoints();
54         int expPoints = u.getExperiencePoints();
55         assertEquals(100, assurancePoints);
56         assertEquals(2, expPoints);
57         assertTrue(u.hasPassedCATS());
58         assertEquals(10, u.getMaxAssurePoints());
59
60         assertEquals("aä", u.getFname());
61         assertEquals("b", u.getLname());
62         assertEquals("", u.getMname());
63     }
64
65     @Test
66     public void testMatcherMethods() throws SQLException, GigiApiException {
67         String uq = createUniqueName();
68         int id = createVerifiedUser("aä", "b", uq + "a@email.org", TEST_PASSWORD);
69
70         User u = User.getById(id);
71         new EmailAddress(u, uq + "b@email.org").insert(Language.getInstance(Locale.ENGLISH));
72         new EmailAddress(u, uq + "c@email.org").insert(Language.getInstance(Locale.ENGLISH));
73         new Domain(u, uq + "a-testdomain.org").insert();
74         new Domain(u, uq + "b-testdomain.org").insert();
75         new Domain(u, uq + "c-testdomain.org").insert();
76         assertEquals(3, u.getEmails().length);
77         assertEquals(3, u.getDomains().length);
78         assertTrue(u.isValidDomain(uq + "a-testdomain.org"));
79         assertTrue(u.isValidDomain(uq + "b-testdomain.org"));
80         assertTrue(u.isValidDomain(uq + "c-testdomain.org"));
81         assertTrue(u.isValidDomain("a." + uq + "a-testdomain.org"));
82         assertTrue(u.isValidDomain("*." + uq + "a-testdomain.org"));
83         assertFalse(u.isValidDomain("a" + uq + "a-testdomain.org"));
84         assertFalse(u.isValidDomain("b" + uq + "a-testdomain.org"));
85
86         assertTrue(u.isValidEmail(uq + "a@email.org"));
87         assertTrue(u.isValidEmail(uq + "b@email.org"));
88         assertFalse(u.isValidEmail(uq + "b+6@email.org"));
89         assertFalse(u.isValidEmail(uq + "b*@email.org"));
90
91         assertTrue(u.isValidName("aä b"));
92         assertFalse(u.isValidName("aä c"));
93         assertFalse(u.isValidName("aä d b"));
94
95     }
96
97     @Test
98     public void testDoubleInsert() {
99         User u = new User();
100         u.setFname("f");
101         u.setLname("l");
102         u.setMname("m");
103         u.setSuffix("s");
104         u.setEmail(createUniqueName() + "@example.org");
105         u.setDob(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 365));
106         u.setPreferredLocale(Locale.ENGLISH);
107         u.insert(TEST_PASSWORD);
108         try {
109             u.insert(TEST_PASSWORD);
110             fail("Error expected");
111         } catch (Error e) {
112             // expected
113         }
114         Assurance[] ma = u.getMadeAssurances();
115         Assurance[] ma2 = u.getMadeAssurances();
116         Assurance[] ra = u.getReceivedAssurances();
117         Assurance[] ra2 = u.getReceivedAssurances();
118         assertEquals(0, u.getCertificates().length);
119         assertEquals(0, ma.length);
120         assertEquals(0, ma2.length);
121         assertEquals(0, ra.length);
122         assertEquals(0, ra2.length);
123         assertSame(ma, ma2);
124         assertSame(ra, ra2);
125     }
126
127     @Test
128     public void testGetByMail() {
129         String email = createUniqueName() + "a@email.org";
130         int id = createVerifiedUser("aä", "b", email, TEST_PASSWORD);
131         User emailUser = User.getByEmail(email);
132         User u = User.getById(id);
133         assertSame(u, emailUser);
134     }
135
136 }