]> WPIA git - gigi.git/blob - tests/club/wpia/gigi/pages/admin/TestSEAdminTicketSetting.java
add: ensure that for RA Agent actions certificate login is used
[gigi.git] / tests / club / wpia / gigi / pages / admin / TestSEAdminTicketSetting.java
1 package club.wpia.gigi.pages.admin;
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.io.UnsupportedEncodingException;
9 import java.net.MalformedURLException;
10 import java.util.Random;
11
12 import org.junit.Test;
13
14 import club.wpia.gigi.GigiApiException;
15 import club.wpia.gigi.dbObjects.Group;
16 import club.wpia.gigi.pages.admin.support.FindCertPage;
17 import club.wpia.gigi.pages.admin.support.FindUserByDomainPage;
18 import club.wpia.gigi.pages.admin.support.FindUserByEmailPage;
19 import club.wpia.gigi.pages.admin.support.SupportEnterTicketForm;
20 import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
21 import club.wpia.gigi.testUtils.ClientTest;
22 import club.wpia.gigi.testUtils.IOUtils;
23
24 public class TestSEAdminTicketSetting extends ClientTest {
25
26     public TestSEAdminTicketSetting() throws IOException, GigiApiException {
27         grant(u, Group.SUPPORTER);
28         cookie = cookieWithCertificateLogin(u);
29     }
30
31     @Test
32     public void testFulltextMailSearch() throws MalformedURLException, UnsupportedEncodingException, IOException {
33         assertEquals(403, get(FindUserByEmailPage.PATH).getResponseCode());
34         assertEquals(302, post(SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
35         assertEquals(200, get(FindUserByEmailPage.PATH).getResponseCode());
36         assertEquals(200, get(FindUserByDomainPage.PATH).getResponseCode());
37         assertEquals(302, post(SupportEnterTicketPage.PATH, "ticketno=a20140808.8&deleteTicket=action", 0).getResponseCode());
38         assertEquals(403, get(FindUserByEmailPage.PATH).getResponseCode());
39     }
40
41     @Test
42     public void testSetTicketNumberCharacter() throws MalformedURLException, UnsupportedEncodingException, IOException {
43         String ticket;
44         String alphabet = "abcdefghijklmnopqrstuvwxyz";
45
46         // test allowed character
47         for (char ch : SupportEnterTicketForm.TICKET_PREFIX.toCharArray()) {
48             ticket = ch + "20171212.1";
49             assertEquals(302, post(SupportEnterTicketPage.PATH, "ticketno=" + ticket + "&setTicket=action", 0).getResponseCode());
50             ticket = Character.toUpperCase(ch) + "20171212.1";
51             assertEquals(302, post(SupportEnterTicketPage.PATH, "ticketno=" + ticket + "&setTicket=action", 0).getResponseCode());
52             alphabet = alphabet.replaceAll(Character.toString(ch), "");
53         }
54
55         // test not allowed character
56         Random rnd = new Random();
57         char ch = alphabet.charAt(rnd.nextInt(alphabet.length()));
58         assertWrongTicketNumber(ch + "20171212.1");
59     }
60
61     @Test
62     public void testSetTicketNumberDatepart() throws MalformedURLException, UnsupportedEncodingException, IOException {
63         char ch = getValidCharacter();
64
65         assertWrongTicketNumber(ch + "220171212.1");
66
67         assertWrongTicketNumber(ch + "0171212.1");
68
69         assertWrongTicketNumber(ch + "20171512.1");
70
71         assertWrongTicketNumber(ch + "20170229.1");
72
73         assertWrongTicketNumber(ch + ch + "20171212.1");
74
75         assertWrongTicketNumber("20171212.1");
76
77         assertWrongTicketNumber(ch + "20171212" + ch + ".1");
78
79         assertWrongTicketNumber(ch + "201721" + ch + "21.1");
80     }
81
82     @Test
83     public void testSetTicketNumberNumberpart() throws MalformedURLException, UnsupportedEncodingException, IOException {
84         char ch = getValidCharacter();
85
86         assertWrongTicketNumber(ch + "20171212.");
87
88         assertWrongTicketNumber(ch + "20171212");
89
90         assertWrongTicketNumber(ch + "20171212.1" + ch);
91
92     }
93
94     private char getValidCharacter() {
95         Random rnd = new Random();
96         return SupportEnterTicketForm.TICKET_PREFIX.charAt(rnd.nextInt(SupportEnterTicketForm.TICKET_PREFIX.length()));
97     }
98
99     private void assertWrongTicketNumber(String ticket) throws IOException {
100         String res = IOUtils.readURL(post(SupportEnterTicketPage.PATH, "ticketno=" + ticket + "&setTicket=action"));
101         assertThat(res, containsString("Ticket format malformed"));
102     }
103
104     @Test
105     public void testPWLogin() throws MalformedURLException, UnsupportedEncodingException, IOException {
106         String cookiePW = login(email, TEST_PASSWORD);
107         loginCertificate = null;
108         assertEquals(403, get(cookiePW, SupportEnterTicketPage.PATH).getResponseCode());
109         assertEquals(403, get(cookiePW, FindUserByEmailPage.PATH).getResponseCode());
110         assertEquals(403, get(cookiePW, FindUserByDomainPage.PATH).getResponseCode());
111         assertEquals(403, get(cookiePW, FindCertPage.PATH).getResponseCode());
112     }
113
114 }