1 package it.com.atlassian.plugin.refimpl;
2
3 import com.atlassian.webdriver.refapp.page.RefappAdminHomePage;
4 import com.atlassian.webdriver.refapp.page.RefappCharlieAdminPage;
5 import com.atlassian.webdriver.refapp.page.RefappHomePage;
6 import com.atlassian.webdriver.refapp.page.RefappLoginPage;
7 import com.atlassian.webdriver.refapp.page.RefappWebSudoPage;
8 import org.junit.After;
9 import org.junit.Test;
10
11 import static org.junit.Assert.assertNull;
12 import static org.junit.Assert.assertTrue;
13
14 public class TestWebSudo extends AbstractRefappTestCase {
15
16 private static final String TEST_USER = "admin";
17 private static final String TEST_PASS = "admin";
18
19 @After
20 public void tearDown() throws Exception {
21 PRODUCT.gotoHomePage().getHeader().logout(RefappHomePage.class);
22 }
23
24 @Test
25 public void testWebSudoByPass() {
26 loginAs(TEST_USER, TEST_PASS, true);
27 RefappCharlieAdminPage charlieAdminPage = PRODUCT.visit(RefappCharlieAdminPage.class);
28 assertTrue(charlieAdminPage.getHeader().getWebSudoBanner().getMessage().contains("You have temporary access to administrative functions."));
29 }
30
31 @Test
32 public void testWebSudoRequired() {
33 loginAs(TEST_USER, TEST_PASS);
34
35 PRODUCT.visit(RefappCharlieAdminPage.class);
36 RefappWebSudoPage webSudoPage = PRODUCT.getPageBinder().bind(RefappWebSudoPage.class);
37 RefappCharlieAdminPage charlieAdminPage = webSudoPage.confirm(TEST_PASS, RefappCharlieAdminPage.class);
38 assertTrue(charlieAdminPage.getHeader().getWebSudoBanner().getMessage().contains("You have temporary access to administrative functions."));
39 }
40
41 @Test
42 public void testWebSudoRequiredWrongPassword() {
43 loginAs(TEST_USER, TEST_PASS);
44
45 PRODUCT.visit(RefappCharlieAdminPage.class);
46 RefappWebSudoPage webSudoPage = PRODUCT.getPageBinder().bind(RefappWebSudoPage.class);
47 webSudoPage = webSudoPage.confirm("", RefappWebSudoPage.class);
48 webSudoPage = webSudoPage.confirm("blah", RefappWebSudoPage.class);
49 assertTrue(webSudoPage.isRequestAccessMessagePresent());
50 }
51
52 @Test
53 public void testWebSudoStateIsShown() {
54 loginAs(TEST_USER, TEST_PASS, true);
55 RefappCharlieAdminPage charlieAdminPage = PRODUCT.visit(RefappCharlieAdminPage.class);
56 assertTrue(charlieAdminPage.getHeader().getWebSudoBanner().getMessage().contains("You have temporary access to administrative functions."));
57 }
58
59 @Test
60 public void testWebSudoPrivilegesCanBeDropped() {
61 loginAs(TEST_USER, TEST_PASS, true);
62 RefappCharlieAdminPage charlieAdminPage = PRODUCT.visit(RefappCharlieAdminPage.class);
63 assertTrue(charlieAdminPage.getHeader().getWebSudoBanner().getMessage().contains("You have temporary access to administrative functions."));
64
65 RefappHomePage homePage = charlieAdminPage.getHeader().getWebSudoBanner().dropWebSudo(RefappHomePage.class);
66 assertNull(homePage.getHeader().getWebSudoBanner().getMessage());
67 }
68
69 private RefappAdminHomePage loginAs(final String user, final String password) {
70 RefappLoginPage loginPage = PRODUCT.gotoLoginPage();
71 return loginPage.login(user, password, false, RefappAdminHomePage.class);
72 }
73
74 private RefappAdminHomePage loginAs(final String user, final String password, boolean bypassWebsudo) {
75 RefappLoginPage loginPage = PRODUCT.gotoLoginPage();
76 return loginPage.login(user, password, bypassWebsudo, RefappAdminHomePage.class);
77 }
78 }