1 package club.wpia.gigi.pages.admin;
3 import static org.hamcrest.CoreMatchers.*;
4 import static org.hamcrest.MatcherAssert.assertThat;
5 import static org.junit.Assert.*;
7 import java.io.IOException;
8 import java.io.UnsupportedEncodingException;
9 import java.net.MalformedURLException;
10 import java.util.Random;
12 import org.junit.Test;
14 import club.wpia.gigi.GigiApiException;
15 import club.wpia.gigi.dbObjects.CATS.CATSType;
16 import club.wpia.gigi.dbObjects.Group;
17 import club.wpia.gigi.dbObjects.User;
18 import club.wpia.gigi.pages.admin.support.FindCertPage;
19 import club.wpia.gigi.pages.admin.support.FindUserByDomainPage;
20 import club.wpia.gigi.pages.admin.support.FindUserByEmailPage;
21 import club.wpia.gigi.pages.admin.support.SupportEnterTicketForm;
22 import club.wpia.gigi.pages.admin.support.SupportEnterTicketPage;
23 import club.wpia.gigi.testUtils.ClientTest;
24 import club.wpia.gigi.testUtils.IOUtils;
26 public class TestSEAdminTicketSetting extends ClientTest {
28 public TestSEAdminTicketSetting() throws IOException, GigiApiException {
29 grant(u, Group.SUPPORTER);
30 addChallenge(u.getId(), CATSType.SUPPORT_DP_CHALLENGE_NAME);
31 cookie = cookieWithCertificateLogin(u);
35 public void testFulltextMailSearch() throws MalformedURLException, UnsupportedEncodingException, IOException {
36 assertEquals(403, get(FindUserByEmailPage.PATH).getResponseCode());
37 assertEquals(302, post(SupportEnterTicketPage.PATH, "ticketno=a20140808.8&setTicket=action", 0).getResponseCode());
38 assertEquals(200, get(FindUserByEmailPage.PATH).getResponseCode());
39 assertEquals(200, get(FindUserByDomainPage.PATH).getResponseCode());
40 assertEquals(302, post(SupportEnterTicketPage.PATH, "ticketno=a20140808.8&deleteTicket=action", 0).getResponseCode());
41 assertEquals(403, get(FindUserByEmailPage.PATH).getResponseCode());
45 public void testSetTicketNumberCharacter() throws MalformedURLException, UnsupportedEncodingException, IOException {
47 String alphabet = "abcdefghijklmnopqrstuvwxyz";
49 // test allowed character
50 for (char ch : SupportEnterTicketForm.TICKET_PREFIX.toCharArray()) {
51 ticket = ch + "20171212.1";
52 assertEquals(302, post(SupportEnterTicketPage.PATH, "ticketno=" + ticket + "&setTicket=action", 0).getResponseCode());
53 ticket = Character.toUpperCase(ch) + "20171212.1";
54 assertEquals(302, post(SupportEnterTicketPage.PATH, "ticketno=" + ticket + "&setTicket=action", 0).getResponseCode());
55 alphabet = alphabet.replaceAll(Character.toString(ch), "");
58 // test not allowed character
59 Random rnd = new Random();
60 char ch = alphabet.charAt(rnd.nextInt(alphabet.length()));
61 assertWrongTicketNumber(ch + "20171212.1");
65 public void testSetTicketNumberDatepart() throws MalformedURLException, UnsupportedEncodingException, IOException {
66 char ch = getValidCharacter();
68 assertWrongTicketNumber(ch + "220171212.1");
70 assertWrongTicketNumber(ch + "0171212.1");
72 assertWrongTicketNumber(ch + "20171512.1");
74 assertWrongTicketNumber(ch + "20170229.1");
76 assertWrongTicketNumber(ch + ch + "20171212.1");
78 assertWrongTicketNumber("20171212.1");
80 assertWrongTicketNumber(ch + "20171212" + ch + ".1");
82 assertWrongTicketNumber(ch + "201721" + ch + "21.1");
86 public void testSetTicketNumberNumberpart() throws MalformedURLException, UnsupportedEncodingException, IOException {
87 char ch = getValidCharacter();
89 assertWrongTicketNumber(ch + "20171212.");
91 assertWrongTicketNumber(ch + "20171212");
93 assertWrongTicketNumber(ch + "20171212.1" + ch);
97 private char getValidCharacter() {
98 Random rnd = new Random();
99 return SupportEnterTicketForm.TICKET_PREFIX.charAt(rnd.nextInt(SupportEnterTicketForm.TICKET_PREFIX.length()));
102 private void assertWrongTicketNumber(String ticket) throws IOException {
103 String res = IOUtils.readURL(post(SupportEnterTicketPage.PATH, "ticketno=" + ticket + "&setTicket=action"));
104 assertThat(res, containsString("Ticket format malformed"));
108 public void testPWLogin() throws MalformedURLException, UnsupportedEncodingException, IOException {
109 String cookiePW = login(email, TEST_PASSWORD);
110 loginCertificate = null;
111 assertEquals(403, get(cookiePW, SupportEnterTicketPage.PATH).getResponseCode());
112 assertEquals(403, get(cookiePW, FindUserByEmailPage.PATH).getResponseCode());
113 assertEquals(403, get(cookiePW, FindUserByDomainPage.PATH).getResponseCode());
114 assertEquals(403, get(cookiePW, FindCertPage.PATH).getResponseCode());
118 public void testNoSupportChallenge() throws MalformedURLException, UnsupportedEncodingException, IOException, GigiApiException {
119 User supporter1 = User.getById(createVerificationUser("testworker", "testname", createUniqueName() + "@testdom.com", TEST_PASSWORD));
120 grant(supporter1, Group.SUPPORTER);
121 loginCertificate = null;
122 cookie = cookieWithCertificateLogin(supporter1);
124 assertEquals(403, get(SupportEnterTicketPage.PATH).getResponseCode());
125 assertEquals(403, get(FindUserByEmailPage.PATH).getResponseCode());
126 assertEquals(403, get(FindUserByDomainPage.PATH).getResponseCode());
127 assertEquals(403, get(FindCertPage.PATH).getResponseCode());