1 package com.atlassian.webdriver.jira.component.header;
2
3 import javax.inject.Inject;
4
5 import com.atlassian.pageobjects.Page;
6 import com.atlassian.pageobjects.PageBinder;
7 import com.atlassian.pageobjects.binder.Init;
8 import com.atlassian.pageobjects.component.Header;
9 import com.atlassian.pageobjects.component.WebSudoBanner;
10 import com.atlassian.webdriver.AtlassianWebDriver;
11 import com.atlassian.webdriver.jira.component.UserDiscoverable;
12 import com.atlassian.webdriver.jira.component.menu.AdminMenu;
13 import com.atlassian.webdriver.jira.component.menu.DashboardMenu;
14 import com.atlassian.webdriver.jira.component.menu.JiraUserMenu;
15 import com.atlassian.webdriver.jira.page.LogoutPage;
16
17 import org.apache.commons.lang.NotImplementedException;
18 import org.openqa.selenium.By;
19 import org.openqa.selenium.WebElement;
20 import org.openqa.selenium.support.FindBy;
21
22
23
24
25 public class JiraHeader implements UserDiscoverable, Header
26 {
27 @Inject
28 PageBinder pageBinder;
29
30 @Inject
31 AtlassianWebDriver driver;
32
33 @FindBy(id="header")
34 private WebElement headerElement;
35
36 private String userName;
37
38 @Init
39 public void init()
40 {
41 By byId = By.id("header-details-user-fullname");
42
43 userName = driver.elementIsVisible(byId) ? driver.findElement(byId).getText() : null;
44 }
45
46 public DashboardMenu getDashboardMenu()
47 {
48 return pageBinder.bind(DashboardMenu.class);
49 }
50 public AdminMenu getAdminMenu()
51 {
52 return pageBinder.bind(AdminMenu.class);
53 }
54 public JiraUserMenu getUserMenu()
55 {
56 return pageBinder.bind(JiraUserMenu.class);
57 }
58
59 public boolean isLoggedIn()
60 {
61 return userName != null;
62 }
63
64 public boolean isAdmin()
65 {
66 return isLoggedIn() && driver.elementExistsAt(By.id("admin_link"), headerElement);
67 }
68
69 public <M extends Page> M logout(Class<M> nextPage)
70 {
71 if (isLoggedIn()) {
72 pageBinder.navigateToAndBind(LogoutPage.class).confirmLogout();
73 }
74 return LogoutPage.class.isAssignableFrom(nextPage) ? pageBinder.bind(nextPage) : pageBinder.navigateToAndBind(nextPage);
75 }
76
77 public WebSudoBanner getWebSudoBanner()
78 {
79 throw new NotImplementedException();
80 }
81 }