1 package com.atlassian.webdriver.refapp.component;
2
3 import com.atlassian.pageobjects.Page;
4 import com.atlassian.pageobjects.PageBinder;
5 import com.atlassian.pageobjects.component.Header;
6 import com.atlassian.pageobjects.component.WebSudoBanner;
7 import com.atlassian.pageobjects.page.HomePage;
8 import com.atlassian.webdriver.AtlassianWebDriver;
9 import com.atlassian.webdriver.utils.Check;
10 import com.google.common.collect.Iterables;
11 import org.openqa.selenium.By;
12 import org.openqa.selenium.NoSuchElementException;
13 import org.openqa.selenium.WebElement;
14
15 import javax.inject.Inject;
16 import java.util.List;
17 import java.util.Locale;
18
19
20
21
22 public class RefappHeader implements Header {
23 private static final By LOGIN = By.id("login");
24
25 @Inject
26 protected AtlassianWebDriver driver;
27
28 @Inject
29 protected PageBinder pageBinder;
30
31 public boolean isAtActivityStreamsPage() {
32 final List<WebElement> activityStreamsLinks = driver.findElements(By.id("activityStreamsLink"));
33
34 if (activityStreamsLinks.isEmpty() || activityStreamsLinks.size() > 1) {
35 return false;
36 }
37
38 return "Activity Streams".equals(Iterables.getOnlyElement(activityStreamsLinks).getText());
39 }
40
41 public boolean isLoggedIn() {
42 return driver.findElement(LOGIN).getText().equals("Logout");
43 }
44
45 public boolean isAdmin() {
46 return loggedInFullNameContains("admin");
47 }
48
49 public boolean isSysadmin() {
50 return loggedInFullNameContains("sysadmin");
51 }
52
53 private boolean loggedInFullNameContains(String text) {
54 if (isLoggedIn()) {
55 final String userLowerCase = driver.findElement(By.id("user")).getText().toLowerCase(Locale.ENGLISH);
56 return userLowerCase.contains(text);
57 }
58 return false;
59 }
60
61 public <M extends Page> M logout(Class<M> nextPage) {
62 if (isLoggedIn()) {
63 driver.findElement(LOGIN).click();
64 }
65 return HomePage.class.isAssignableFrom(nextPage) ? pageBinder.bind(nextPage) : pageBinder.navigateToAndBind(nextPage);
66 }
67
68 @Override
69 public WebSudoBanner getWebSudoBanner() {
70
71 return new WebSudoBanner() {
72
73 WebElement banner() {
74 return driver.findElement(By.id("websudo-banner"));
75 }
76
77 @Override
78 public boolean isShowing() {
79 try {
80 return banner().isDisplayed();
81 } catch (NoSuchElementException nsee) {
82 return false;
83 }
84 }
85
86 @Override
87 public String getMessage() {
88 try {
89 return banner().getText();
90 } catch (NoSuchElementException nsee) {
91 return null;
92 }
93 }
94
95
96
97
98
99
100
101 @Override
102 public <P extends Page> P dropWebSudo(Class<P> nextPage) {
103 final By webSudoDropButton = By.id("websudo-drop");
104 if (Check.elementExists(webSudoDropButton, driver)) {
105 driver.findElement(webSudoDropButton).click();
106 return HomePage.class.isAssignableFrom(nextPage) ? pageBinder.bind(nextPage) : pageBinder.navigateToAndBind(nextPage);
107 } else {
108 return pageBinder.navigateToAndBind(nextPage);
109 }
110 }
111 };
112 }
113 }