]> WPIA git - gigi.git/blob - tests/org/cacert/gigi/pages/account/TestMyDetailsEdit.java
add: new test cases for handling of residence country in user account
[gigi.git] / tests / org / cacert / gigi / pages / account / TestMyDetailsEdit.java
1 package org.cacert.gigi.pages.account;
2
3 import static org.junit.Assert.*;
4
5 import java.io.IOException;
6 import java.sql.Date;
7 import java.util.Arrays;
8 import java.util.Calendar;
9 import java.util.GregorianCalendar;
10 import java.util.TimeZone;
11
12 import org.cacert.gigi.GigiApiException;
13 import org.cacert.gigi.dbObjects.Name;
14 import org.cacert.gigi.dbObjects.NamePart;
15 import org.cacert.gigi.dbObjects.NamePart.NamePartType;
16 import org.cacert.gigi.dbObjects.User;
17 import org.cacert.gigi.testUtils.ManagedTest;
18 import org.hamcrest.CoreMatchers;
19 import org.junit.Test;
20
21 public class TestMyDetailsEdit extends ManagedTest {
22
23     String email = createUniqueName() + "@e.de";
24
25     int id = createVerifiedUser("Kurti", "Hansel", email, TEST_PASSWORD);
26
27     String cookie = login(email, TEST_PASSWORD);
28
29     public TestMyDetailsEdit() throws IOException {}
30
31     @Test
32     public void testAddName() throws IOException {
33         int startn = User.getById(id).getNames().length;
34         String newName = createUniqueName();
35         assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "name-type=western&fname=" + newName + "&lname=Hansel&action=addName", 0));
36         User u = User.getById(id);
37
38         NamePart[] parts = u.getNames()[startn].getParts();
39         assertThat(Arrays.asList(parts), CoreMatchers.hasItem(new NamePart(NamePartType.FIRST_NAME, newName)));
40         assertThat(Arrays.asList(parts), CoreMatchers.hasItem(new NamePart(NamePartType.LAST_NAME, "Hansel")));
41         assertEquals(2, parts.length);
42         assertEquals(startn + 1, User.getById(id).getNames().length);
43     }
44
45     @Test
46     public void testDelName() throws IOException, GigiApiException {
47         User user = User.getById(id);
48         int startn = user.getNames().length;
49         String newName = createUniqueName();
50         Name n1 = new Name(user, new NamePart(NamePartType.SINGLE_NAME, newName));
51
52         assertEquals(startn + 1, user.getNames().length);
53         assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "removeName=" + n1.getId(), 0));
54         assertEquals(startn, user.getNames().length);
55     }
56
57     @Test
58     public void testDelDefaultName() throws IOException {
59         User user = User.getById(id);
60         assertEquals(1, user.getNames().length);
61         assertNotNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "removeName=" + user.getNames()[0].getId(), 0));
62         assertEquals(1, user.getNames().length);
63     }
64
65     @Test
66     public void testChangeDOBValid() throws IOException {
67         assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "day=1&month=2&year=2000&action=updateDoB", 0));
68         User u = User.getById(id);
69         Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
70         cal.set(Calendar.YEAR, 2000);
71         cal.set(Calendar.DAY_OF_MONTH, Calendar.FEBRUARY);
72         cal.set(Calendar.MONTH, 1);
73         Date d = new Date(cal.getTimeInMillis());
74         assertEquals(d.toString(), u.getDoB().toSQLDate().toString());
75     }
76
77     @Test
78     public void testChangeDOBInvalid() throws IOException {
79         assertNotNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "day=1&month=1&year=test&action=updateDoB", 0));
80     }
81
82     @Test
83     public void testChangeTooYoung() throws IOException {
84         Calendar c = GregorianCalendar.getInstance();
85         c.add(Calendar.YEAR, -User.MINIMUM_AGE);
86         c.add(Calendar.DAY_OF_MONTH, +1);
87         assertNotNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "day=" + c.get(Calendar.DAY_OF_MONTH) + "&month=" + (c.get(Calendar.MONTH) + 1) + "&year=" + c.get(Calendar.YEAR) + "&action=updateDoB", 0));
88     }
89
90     @Test
91     public void testChangeTooOld() throws IOException {
92         Calendar c = GregorianCalendar.getInstance();
93         c.add(Calendar.YEAR, -User.MAXIMUM_PLAUSIBLE_AGE);
94         c.add(Calendar.DAY_OF_MONTH, -1);
95         assertNotNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "day=" + c.get(Calendar.DAY_OF_MONTH) + "&month=" + (c.get(Calendar.MONTH) + 1) + "&year=" + c.get(Calendar.YEAR) + "&action=updateDoB", 0));
96     }
97
98     @Test
99     public void testChangeResidenceCountry() throws IOException {
100         assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "residenceCountry=DE&action=updateResidenceCountry", 0));
101         User user = User.getById(id);
102         assertEquals("DE", user.getResidenceCountry().getCountryCode());
103     }
104
105     @Test
106     public void testChangeResidenceCountryToNull() throws IOException {
107         User user = User.getById(id);
108         assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "residenceCountry=invalid&action=updateResidenceCountry", 0));
109         assertEquals(null, user.getResidenceCountry());
110     }
111 }