private bool VerifyAndAssignRoleToUser(SnowTicket ticket, bool needsVerifyRoleExists) { //Check if role exists already, if so return directly driver.FindElement(By.CssSelector("#nav-tab-SecurityUsers-UserGroups > div > a")).Click(); Sleep(3); if (needsVerifyRoleExists) { if (!IsRoleAssigned(ticket)) { //User has No this role but exists exchange role, i.e: use request Assistant manager, but he already has mananger role. if (bool.Parse(ConfigurationManager.AppSettings["EnableResolveRoleConflicts"])) { var rolesConflicted = RolesConflictsDict[ticket.RoleName].Split('|'); foreach (string roleToRemove in rolesConflicted) { SnowTicket exchangableRole = new SnowTicket("", "", roleToRemove, "", ""); if (IsRoleAssigned(exchangableRole)) { RemoveRole(exchangableRole); } } } return(AssignNewRole(ticket)); } else { //User has this role WriteLog("Role was assigned before"); return(true); } } //Assign role to new user return(AssignNewRole(ticket)); }
private static void LogTicketDetails(SnowTicket ticket) { Logger.WriteLine("--------------------------------------------"); Logger.WriteLine(ticket.TicketNumber); Logger.WriteLine(ticket.TicketUrl); Logger.WriteLine(String.Join(",", ticket.Hub, ticket.RoleName, ticket.UserId)); Logger.Flush(); }
private bool IsRoleAssigned(SnowTicket ticket) { var rolesAssignedList = driver.FindElements(By.XPath("//*[@id='item-assigned-list']/div")); IWebElement roleToVerify = null; foreach (IWebElement role in rolesAssignedList) { IWebElement tempAssignedRole = role.FindElement(By.TagName("span")); if (tempAssignedRole.Text == ticket.RoleName) { roleToVerify = tempAssignedRole; break; } } return(roleToVerify != null); }
private bool UpdateUser(SnowTicket ticket) { bool isSuccess = false; UserStatus userStatus = GetCurrentUserStatus(); isSuccess = ActivateUser(ticket, userStatus); if (!isSuccess) { return(false); } isSuccess = VerifyAndAssignRoleToUser(ticket, true); return(isSuccess); }
private bool RemoveRole(SnowTicket ticket) { try { Actions builder = new Actions(driver); var rolesList = driver.FindElements(By.XPath("//*[@id='item-assigned-list']/div")); IWebElement roleToRemove = null; foreach (IWebElement role in rolesList) { IWebElement tempRoleControl = role.FindElement(By.TagName("span")); if (tempRoleControl.Text == ticket.RoleName) { roleToRemove = tempRoleControl; break; } } IWebElement unAssignedList = driver.FindElement(By.Id("item-unassigned-list")); builder.ClickAndHold(roleToRemove) .MoveToElement(unAssignedList) .Release(unAssignedList) .Build() .Perform(); Sleep(1); driver.FindElement(By.Id("btn-header-Save-7117")).Click(); Sleep(10); //sometimes performance is not good WriteLog(ticket.RoleName + " : role has been removed due to conflicts with latest role."); //Error message pops up. if (driver.FindElement(By.Id("custom-modal-window")) != null) { WriteLog("WARNING: possbile error occured when removing role"); } } catch (Exception ex) { } return(true); }
private bool AssignNewRole(SnowTicket ticket) { try { Actions builder = new Actions(driver); var rolesList = driver.FindElements(By.XPath("//*[@id='item-unassigned-list']/div")); IWebElement roleToAdd = null; foreach (IWebElement role in rolesList) { IWebElement tempRoleControl = role.FindElement(By.TagName("span")); if (tempRoleControl.Text == ticket.RoleName) { roleToAdd = tempRoleControl; break; } } if (roleToAdd == null) { WriteLog(roleToAdd.Text + " : this role already exists."); } IWebElement assignedList = driver.FindElement(By.Id("item-assigned-list")); builder.ClickAndHold(roleToAdd) .MoveToElement(assignedList) .Release(assignedList) .Build() .Perform(); Sleep(1); driver.FindElement(By.Id("btn-header-Save-7117")).Click(); Sleep(3); WriteLog(ticket.RoleName + " : has been added to user."); } catch (Exception ex) { return(false); } return(true); }
private bool ActivateUser(SnowTicket ticket, UserStatus userStatus) { try { WriteLog(ticket.UserId + " : user status was " + Enum.GetName(typeof(UserStatus), userStatus)); IWebElement userDescTextBox = driver.FindElement(By.Id("Description-7065")); userDescTextBox.SendKeys(ticket.TicketNumber); if (userStatus == UserStatus.INACTIVE) { IWebElement selectControl = driver.FindElement(By.CssSelector("#inner-content-wrapper > azur-webapp > azur-split-panel > div > azur-split-panel-section:nth-child(2) > div > azur-webapp-tabs > div > azur-users-tab > azur-one-to-one > div > div > azur-default-form > azur-form > div > div > div > form > azur-form-row:nth-child(2) > div > azur-form-column:nth-child(1) > div > azur-form-attribute:nth-child(3) > div > div > div > div > azur-form-field > div > azur-ref-field > div > div > div > azur-select-field > div > div")); selectControl.Click(); Sleep(1); Actions action = new Actions(driver); action.SendKeys(Keys.ArrowUp).Build().Perform(); //Move 2 steps up to select ACTIVE status if (userStatus == UserStatus.LOCKEDTEMPLY) { action.SendKeys(Keys.ArrowUp).Build().Perform(); } action.SendKeys(Keys.Enter).Build().Perform(); Sleep(1); WriteLog(ticket.UserId + " : user status is updated to ACTIVE."); } IWebElement saveUserButton = driver.FindElement(By.Id("btn-header-Save-7065")); saveUserButton.Click(); Sleep(2); return(true); } catch (Exception) { return(false); } }
private bool CreateNewUserInIRIS(SnowTicket ticket) { try { IWebElement newUserButton = driver.FindElement(By.Id("btn-header-New-7065")); newUserButton.Click(); Sleep(1); IWebElement userIdTextBox = driver.FindElement(By.Id("Username-7065")); Sleep(1); userIdTextBox.SendKeys(ticket.UserId); IWebElement userEmailTextBox = driver.FindElement(By.Id("Email-7065")); Sleep(1); userEmailTextBox.SendKeys(ticket.UserId + "@iata.org"); IWebElement userDescTextBox = driver.FindElement(By.Id("Description-7065")); Sleep(1); userDescTextBox.SendKeys(">" + ticket.TicketNumber); IWebElement saveUserButton = driver.FindElement(By.Id("btn-header-Save-7065")); saveUserButton.Click(); WriteLog("User has been ADDED in IRIS."); Sleep(3); int retryTimes = int.Parse(ConfigurationManager.AppSettings["DismissModalDialgoRetryTimes"]); DismissModalDiaglosIfExists(retryTimes); //Assign role to new user VerifyAndAssignRoleToUser(ticket, false); return(true); } catch (Exception ex) { return(false); } }
private void CompleteUserRequestTask(SnowTicket ticket) { GoToUrlWithWait(ticket.TicketUrl, 2); IWebElement assignedToTextBox = driver.FindElement(By.Id("sys_display.sc_task.assigned_to")); Sleep(1); assignedToTextBox.Click(); assignedToTextBox.SendKeys(ConfigurationManager.AppSettings["AdminUserEmail"] + Keys.Tab); SelectElement caseStatusSelect = new SelectElement(driver.FindElement(By.Id("sc_task.state"))); Sleep(1); caseStatusSelect.SelectByText("Closed Complete"); IWebElement saveButton = driver.FindElement(By.Id("sysverb_update_and_stay")); Sleep(1); saveButton.Click(); Sleep(3); WriteLog(ticket.TicketNumber + " has been completed in SNOW."); }
private void GoToIrisUserModule(SnowTicket ticket) { GoToUrlWithWait(AppDict[ticket.Hub], 3); IWebElement userNameInput = driver.FindElement(By.Id("txtUserName")); IWebElement passwordInput = driver.FindElement(By.Id("txtPassword")); userNameInput.SendKeys(ConfigurationManager.AppSettings["AdminUserName"]); passwordInput.SendKeys(ConfigurationManager.AppSettings["AdminUserPassword"]); IWebElement loginButton = driver.FindElement(By.Id("btnSubmit")); driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(120); loginButton.Click(); Sleep(3); //Go to security -> user module IWebElement sideBarSecurityManagerment = driver.FindElement(By.Id("sidebar-bp-SecurityManagement")); sideBarSecurityManagerment.Click(); IWebElement sideBarUsers = driver.FindElement(By.Id("sidebar-wa-SECURITYUSERSAPP")); sideBarUsers.Click(); }
public void ProcessIrisUserTickets(string UserRequestPageUrl) { try { while (true) { string ticketNumber = string.Empty; string ticketUrl = string.Empty; //Open tickets pool page GoToUrlWithWait(UserRequestPageUrl, 5); ticketUrl = FetchOneTicketUrl(out ticketNumber); if (string.IsNullOrWhiteSpace(ticketUrl) || string.IsNullOrWhiteSpace(ticketNumber)) { break; } //Open ticket page GoToUrlWithWait(BaseURL + ticketUrl, 3); string hub, roleName, searchUserUrl, userName; GetUserRequestDetails(out hub, out roleName, out searchUserUrl, out userName); string userID = GetUserID(searchUserUrl, userName); if (!VerifyUserID(userID, userName)) { WriteLog(string.Format("Found UserID '{0}' does NOT match with the given UserName '{1}'.", userID, userName)); } //Log user's details SnowTicket ticket = new SnowTicket(ticketNumber, hub, RoleMappingDict[roleName], userID, BaseURL + ticketUrl); LogTicketDetails(ticket); //Login to IRIS GoToIrisUserModule(ticket); //Search the user by userID in IRIS string userNameValue = LoadUserDetails(userID); bool _isSuccess = false; if (String.IsNullOrWhiteSpace(userNameValue)) { _isSuccess = CreateNewUserInIRIS(ticket); } else { _isSuccess = UpdateUser(ticket); } //Close SNOW case if (_isSuccess) { CompleteUserRequestTask(ticket); } } } catch (Exception ex) { WriteLog(ex.InnerException.Message); throw ex; } finally { //save user names and IDs in Dictionary to file on the disk. SaveUserCacheDictToXmlFile(); } }