1 package org.cacert.gigi.pages.account;
3 import static org.junit.Assert.*;
5 import java.io.IOException;
7 import java.util.Arrays;
8 import java.util.Calendar;
9 import java.util.GregorianCalendar;
10 import java.util.TimeZone;
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;
21 public class TestMyDetailsEdit extends ManagedTest {
23 String email = createUniqueName() + "@e.de";
25 int id = createVerifiedUser("Kurti", "Hansel", email, TEST_PASSWORD);
27 String cookie = login(email, TEST_PASSWORD);
29 public TestMyDetailsEdit() throws IOException {}
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);
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);
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));
52 assertEquals(startn + 1, user.getNames().length);
53 assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "removeName=" + n1.getId(), 0));
54 assertEquals(startn, user.getNames().length);
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);
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());
78 public void testChangeDOBInvalid() throws IOException {
79 assertNotNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "day=1&month=1&year=test&action=updateDoB", 0));
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));
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));
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().getCode());
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());