]> WPIA git - gigi.git/blob - tests/club/wpia/gigi/pages/orga/TestOrgSwitch.java
add: ensure that for OrgAdmin action there is a valid OrgAdmin Challenge
[gigi.git] / tests / club / wpia / gigi / pages / orga / TestOrgSwitch.java
1 package club.wpia.gigi.pages.orga;
2
3 import static org.hamcrest.CoreMatchers.*;
4 import static org.hamcrest.MatcherAssert.assertThat;
5 import static org.junit.Assert.*;
6
7 import java.io.IOException;
8 import java.net.HttpURLConnection;
9 import java.net.URLConnection;
10 import java.net.URLEncoder;
11 import java.security.GeneralSecurityException;
12 import java.security.KeyManagementException;
13 import java.security.NoSuchAlgorithmException;
14 import java.security.PrivateKey;
15 import java.sql.SQLException;
16
17 import org.junit.After;
18 import org.junit.Test;
19
20 import club.wpia.gigi.GigiApiException;
21 import club.wpia.gigi.dbObjects.CATS.CATSType;
22 import club.wpia.gigi.dbObjects.Certificate;
23 import club.wpia.gigi.dbObjects.Organisation;
24 import club.wpia.gigi.dbObjects.User;
25 import club.wpia.gigi.testUtils.IOUtils;
26 import club.wpia.gigi.testUtils.OrgTest;
27
28 public class TestOrgSwitch extends OrgTest {
29
30     private User u2;
31
32     private Organisation org1 = createUniqueOrg();
33
34     private Organisation org2 = createUniqueOrg();
35
36     private Certificate cagent;
37
38     private PrivateKey pkagent;
39
40     public TestOrgSwitch() throws IOException, GigiApiException {
41
42         assertEquals(403, get(SwitchOrganisation.PATH).getResponseCode());
43
44         String email = createUniqueName() + "@testdom.com";
45         u2 = User.getById(createVerificationUser("testworker", "testname", email, TEST_PASSWORD));
46         assertNull(executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + org1.getId(), "email=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&do_affiliate=y&master=y", 1));
47         assertNull(executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + org2.getId(), "email=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&do_affiliate=y&master=y", 1));
48         addChallenge(u2.getId(), CATSType.ORG_ADMIN_DP_CHALLENGE_NAME);
49         cagent = loginCertificate;
50         pkagent = loginPrivateKey;
51
52         // login with new user u2
53         cookie = cookieWithCertificateLogin(u2);
54     }
55
56     @After
57     public void purgeDbAfterTest() throws SQLException, IOException {
58         purgeDatabase();
59     }
60
61     @Test
62     public void testSwitchToOrg() throws IOException, GigiApiException {
63
64         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org:" + org1.getId() + "=y", 0));
65
66         String res = IOUtils.readURL(get(SwitchOrganisation.PATH));
67         assertThat(res, containsString("Logged in as " + u2.getPreferredName() + ", acting as " + org1.getName()));
68
69     }
70
71     @Test
72     public void testSwitchToNonOrg() throws IOException, GigiApiException {
73
74         String res = IOUtils.readURL(post(SwitchOrganisation.PATH, "org:5000=y"));
75         assertThat(res, containsString("Context switch failed"));
76
77     }
78
79     @Test
80     public void testSwitchToPersonal() throws IOException, GigiApiException {
81
82         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org-leave=personal", 0));
83
84         String res = IOUtils.readURL(get(SwitchOrganisation.PATH));
85         assertThat(res, containsString("Logged in as " + u2.getPreferredName()));
86
87         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org-leave=personal", 0));
88
89         res = IOUtils.readURL(get(SwitchOrganisation.PATH));
90         assertThat(res, containsString("Logged in as " + u2.getPreferredName()));
91
92     }
93
94     @Test
95     public void testSwitchOrgToOrg() throws IOException, GigiApiException {
96
97         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org:" + org1.getId() + "=y", 0));
98         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org:" + org2.getId() + "=y", 0));
99
100         String res = IOUtils.readURL(get(SwitchOrganisation.PATH));
101         assertThat(res, containsString("Logged in as " + u2.getPreferredName() + ", acting as " + org2.getName()));
102
103     }
104
105     @Test
106     public void testSwitchOrgToSameOrg() throws IOException, GigiApiException {
107
108         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org:" + org1.getId() + "=y", 0));
109         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org:" + org1.getId() + "=y", 0));
110
111         String res = IOUtils.readURL(get(SwitchOrganisation.PATH));
112         assertThat(res, containsString("Logged in as " + u2.getPreferredName() + ", acting as " + org1.getName()));
113
114     }
115
116     @Test
117     public void testSwitchOrgToNonOrg() throws IOException, GigiApiException {
118
119         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org:" + org1.getId() + "=y", 0));
120         String res = IOUtils.readURL(post(SwitchOrganisation.PATH, "org:5000=y"));
121         assertThat(res, containsString("Context switch failed"));
122
123     }
124
125     @Test
126     public void testSwitchOrgToPersonal() throws IOException, GigiApiException {
127
128         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org:" + org1.getId() + "=y", 0));
129         assertNull(executeBasicWebInteraction(cookie, SwitchOrganisation.PATH, "org-leave=personal", 0));
130
131         String res = IOUtils.readURL(get(SwitchOrganisation.PATH));
132         assertThat(res, containsString("Logged in as " + u2.getPreferredName()));
133
134     }
135
136     @Test
137     public void testSwitchOrgPasswordLogin() throws IOException, GigiApiException {
138         cookie = login(email, TEST_PASSWORD);
139         loginCertificate = null;
140         URLConnection uc = get(cookie, SwitchOrganisation.PATH);
141         assertEquals(403, ((HttpURLConnection) uc).getResponseCode());
142     }
143
144     @Test
145     public void testSwitchOrgLoginChallenge() throws IOException, GigiApiException, KeyManagementException, NoSuchAlgorithmException, GeneralSecurityException {
146         loginCertificate = cagent;
147         loginPrivateKey = pkagent;
148         cookie = login(pkagent, cagent.cert());
149         String email = createUniqueName() + "@testdom.com";
150         User u3 = User.getById(createVerificationUser("testworker", "testname", email, TEST_PASSWORD));
151         assertNull(executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + org1.getId(), "email=" + URLEncoder.encode(u3.getEmail(), "UTF-8") + "&do_affiliate=y&master=y", 1));
152         assertNull(executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + org2.getId(), "email=" + URLEncoder.encode(u3.getEmail(), "UTF-8") + "&do_affiliate=y&master=y", 1));
153
154         cookie = cookieWithCertificateLogin(u3);
155         URLConnection uc = get(cookie, SwitchOrganisation.PATH);
156         assertEquals(403, ((HttpURLConnection) uc).getResponseCode());
157
158         addChallenge(u3.getId(), CATSType.ORG_ADMIN_DP_CHALLENGE_NAME);
159         clearCaches();
160         uc = get(cookie, SwitchOrganisation.PATH);
161         assertEquals(200, ((HttpURLConnection) uc).getResponseCode());
162     }
163 }