View Javadoc
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  }