Backend/e-suite.Automation.UITests/ESuite.UI.E2E/StepDefinitions/DomainCreationStepDefinitions.cs
2026-01-20 21:50:10 +00:00

308 lines
14 KiB
C#

using ESuite.UI.E2E.Helpers;
using ESuite.UI.E2E.Models;
using ESuite.UI.E2E.Pages;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
namespace ESuite.UI.E2E.StepDefinitions
{
[Binding]
public class DomainCreationStepDefinitions
{
private readonly IWebDriver driver;
private readonly BasicPage basicPage;
private readonly DomainEditPage domainEditPage;
private readonly ScenarioContext _scenarioContext;
private readonly AutomationTestManagerHelper automationTestManagerHelper;
private readonly APIHelper apiHelper;
private readonly ConfigHelper configHelper;
public DomainCreationStepDefinitions(ScenarioContext scenarioContext)
{
driver = WebDriverHelper.GetWebDriver();
basicPage = new(driver);
domainEditPage = new(driver);
_scenarioContext = scenarioContext;
automationTestManagerHelper = new(_scenarioContext);
apiHelper = new(_scenarioContext);
configHelper = new();
}
[AfterScenario("deletedomain", Order = 10)]
[When(@"I delete existing Domain")]
public void DeleteDomain()
{
automationTestManagerHelper.DeleteDomain();
}
[AfterScenario("deletedomainapi", Order = 10)]
[When(@"I delete existing Domain via API")]
public async Task DeleteDomainViaAPI()
{
await automationTestManagerHelper.DeleteDomainAPI();
}
[BeforeScenario("createdomain", Order = 15)]
public async Task CreateDomain()
{
await automationTestManagerHelper.CreateDomain("");
var domains = await apiHelper.GetDomains(configHelper.APIUrl);
var data = domains["data"]!.ElementAt(0);
int domainId = (int)data["id"]!;
string domainName = (string)data["name"]!;
Guid domainGuid = Guid.Parse((string)data["guid"]!);
Assert.AreEqual(domainName, _scenarioContext["DomainName"].ToString()!);
_scenarioContext["DomainId"] = domainId;
_scenarioContext["DomainGUID"] = domainGuid;
}
[Given(@"I create a new domain via API")]
public async Task CreateDomain(Table dataTable)
{
var domains = dataTable.CreateSet<DomainsData>();
List<string> domainList = [];
foreach (var domain in domains)
{
var domainName = domain.Name + _scenarioContext["GUID"];
await automationTestManagerHelper.CreateDomain(domainName);
domainList.Add(domainName);
}
_scenarioContext["DomainList"] = domainList;
}
[Given(@"I create a new domain")]
public void GivenICreateANewDomain(Table dataTable)
{
BasicPage.ClickOnDropdownMenuItem("Client Domains");
var domains = dataTable.CreateSet<DomainsData>();
foreach (var domain in domains)
{
_scenarioContext["DomainName"] = domain.Name + _scenarioContext["GUIDPostfix"];
I.Click(BasicPage.AddButton);
I.FillField(BasicPage.NameField, _scenarioContext["DomainName"].ToString()!);
if (!string.IsNullOrWhiteSpace(domain.SSOProvider))
{
I.SelectOption(BasicPage.SSOProvider, _scenarioContext["SSOProviderName"].ToString()!);
}
I.Click(BasicPage.SaveAndCloseButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
I.WaitTillInvisible(BasicPage.SaveAndCloseButton);
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["DomainName"].ToString()!);
}
}
[When(@"I edit domains details")]
public void WhenIEditDomainsDetails(Table dataTable)
{
var domains = dataTable.CreateSet<DomainsData>();
foreach (var domain in domains)
{
_scenarioContext["DomainName"] = domain.Name + _scenarioContext["GUIDPostfix"];
I.FillField(BasicPage.NameField, _scenarioContext["DomainName"].ToString()!);
if (!string.IsNullOrWhiteSpace(domain.SSOProvider))
{
I.SelectOption(BasicPage.SSOProvider, _scenarioContext["SSOProviderName"].ToString()!);
}
I.Click(BasicPage.SaveAndCloseButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
I.WaitTillInvisible(BasicPage.SaveAndCloseButton);
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["DomainName"].ToString()!);
}
_scenarioContext["DomainEdited"] = $"{_scenarioContext["DomainName"]}, {_scenarioContext["SSOProviderName"]}";
}
[Given(@"I edit created domain")]
[When(@"I edit created domain")]
public void WhenIEditCreatedDomain()
{
BasicPage.ClickOnDropdownMenuItem("Client Domains");
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["DomainName"].ToString()!);
I.Click(domainEditPage.EditButton(_scenarioContext["DomainName"].ToString()));
I.WaitForVisible(domainEditPage.EditPageTitle);
}
[Then(@"I add a new Security Role")]
public void ThenIAddANewSecurityRole(Table dataTable)
{
var roles = dataTable.CreateSet<DomainsData>();
foreach (var role in roles)
{
_scenarioContext["DomainRoleName"] = role.RoleName + _scenarioContext["GUIDPostfix"];
BasicPage.SelectTab("Security Roles");
I.Click(BasicPage.AddButton);
I.FillField(BasicPage.NameField, _scenarioContext["DomainRoleName"].ToString()!);
I.Click(BasicPage.SaveAndCloseButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
BasicPage.SelectTab("Security Roles");
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["DomainRoleName"].ToString()!);
}
}
[Then(@"I change Mail Template")]
public void ThenIChangeMailTemplate(Table dataTable)
{
var templates = dataTable.CreateSet<DomainsData>();
foreach (var template in templates)
{
_scenarioContext["DomainMailTemplateName"] = template.TemplateName;
_scenarioContext["DomainMailTemplateSubject"] = template.Subject + _scenarioContext["GUIDPostfix"];
_scenarioContext["DomainMailTemplateDefinition"] = template.Definition + _scenarioContext["GUIDPostfix"];
_scenarioContext["DomainMailTemplateCreated"] = $"{"false"}, {_scenarioContext["DomainName"]}, {_scenarioContext["DomainMailTemplateName"]}, " +
$"{_scenarioContext["DomainMailTemplateSubject"]}";
_scenarioContext["DomainMailTemplateUpdated"] = $"{_scenarioContext["DomainMailTemplateSubject"]}, {_scenarioContext["DomainMailTemplateDefinition"]}";
BasicPage.SelectTab("Mail Templates");
I.WaitForPageToLoad();
domainEditPage.ChooseMailTemplate(_scenarioContext["DomainMailTemplateName"].ToString());
I.WaitForElementVisibleAndClickable(DomainEditPage.SubjectInput);
I.FillField(DomainEditPage.SubjectInput, _scenarioContext["DomainMailTemplateSubject"].ToString()!);
if (I.GetValueAttribute(DomainEditPage.SubjectInput) != _scenarioContext["DomainMailTemplateSubject"].ToString())
{
I.FillField(DomainEditPage.SubjectInput, _scenarioContext["DomainMailTemplateSubject"].ToString()!);
}
I.FillField(BasicPage.CKEditorTextBox, _scenarioContext["DomainMailTemplateDefinition"].ToString()!);
_scenarioContext["CKEditorTextBoxContent"] = I.GetTextFromElement(BasicPage.CKEditorTextBox);
I.Click(BasicPage.SaveAndCloseButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
I.WaitTillInvisible(BasicPage.SaveAndCloseButton);
}
}
[When(@"I check Mail Template changes")]
public void ThenICheckMailTemplateChanges()
{
RetryHelper.Retry(() =>
{
BasicPage.SelectTab("Mail Templates");
domainEditPage.ChooseMailTemplate(_scenarioContext["DomainMailTemplateName"].ToString());
I.WaitForVisible(domainEditPage.SubjectNameInField(_scenarioContext["DomainMailTemplateSubject"].ToString()!));
Assert.AreEqual(
I.GetValueAttribute(DomainEditPage.SubjectInput),
_scenarioContext["DomainMailTemplateSubject"]
);
Assert.AreEqual(
_scenarioContext["CKEditorTextBoxContent"],
I.GetTextFromElement(BasicPage.CKEditorTextBox)
);
});
}
[Then(@"I check new Security Role created")]
public void ThenICheckNewSecurityRoleCreated()
{
RetryHelper.Retry(() =>
{
BasicPage.SelectTab("Security Roles");
I.WaitForPageToLoad();
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["DomainRoleName"].ToString()!);
});
}
[When(@"I click on newly created Security Role")]
public void WhenIClickOnNewlyCreatedSecurityRole()
{
I.Click(BasicPage.ObjectNameInTable(_scenarioContext["DomainRoleName"].ToString()));
I.WaitForPageToLoad();
}
[Then(@"I choose Role Access permission options")]
public void ThenIChooseRoleAccessPermissionOptions(Table dataTable)
{
var permissions = dataTable.CreateSet<PermissionsData>();
foreach (var permission in permissions)
{
if (!string.IsNullOrEmpty(permission.Name))
{
I.Click(domainEditPage.RoleAccessCheckbox(
permission.Name.Replace(" ", "")
)
);
}
}
I.Click(DomainEditPage.RoleSaveButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
}
[When(@"I enter into Users tab")]
public void WhenIEnterIntoUsersTab()
{
BasicPage.SelectTab("Users");
}
[Then(@"I add User to Security Role")]
public void ThenIAddUserToSecurityRole(Table dataTable)
{
By UserSelector = BasicPage.SelectorByLabel("User");
var users = dataTable.CreateSet<UsersData>();
foreach (var user in users)
{
if (!user.UserName!.Equals("UserName"))
{
_scenarioContext["UserName"] = user.UserName;
}
I.Click(DomainEditPage.AddUserToRoleButton);
I.WaitForVisible(UserSelector);
I.SelectOption(UserSelector, _scenarioContext["UserName"]!);
I.Click(BasicPage.SaveAndCloseButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
}
_scenarioContext["RoleUserCreated"] = $"{"false"}, {_scenarioContext["DomainRoleName"]}, {_scenarioContext["UserName"]}";
}
[Then(@"I check if user is added to Security Role")]
public void ThenICheckIfUserIsAddedToSecurityRole()
{
RetryHelper.Retry(() =>
{
I.FillField(BasicPage.SearchUsersInput, _scenarioContext["UserName"].ToString()!);
I.WaitForVisible(BasicPage.ObjectNameInTable(_scenarioContext["UserName"].ToString()));
});
}
[Given(@"I add a new Security Role via API")]
public void GivenCreateRole()
{
automationTestManagerHelper.CreateRole();
}
[Then(@"I delete added Security Role")]
[When(@"I delete added Security Role")]
public void ThenIDeleteAddedSecurityRole()
{
BasicPage.ClickOnDropdownMenuItem("Client Domains");
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["DomainName"].ToString()!);
I.Click(domainEditPage.EditButton(_scenarioContext["DomainName"].ToString()));
BasicPage.SelectTab("Security Roles");
I.Click(BasicPage.DeleteObjectButton(_scenarioContext["DomainRoleName"].ToString()!));
I.Click(BasicPage.ConfirmDeletionButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
}
[When(@"I delete added User from Security Role")]
public void ThenIDeleteUserFromSecurityRole()
{
BasicPage.ClickOnDropdownMenuItem("Client Domains");
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["DomainName"].ToString()!);
I.Click(domainEditPage.EditButton(_scenarioContext["DomainName"].ToString()));
BasicPage.SelectTab("Security Roles");
I.Click(BasicPage.ObjectNameInTable(_scenarioContext["DomainRoleName"].ToString()));
BasicPage.SelectTab("Users");
I.FillField(BasicPage.SearchUsersInput, _scenarioContext["UserName"].ToString()!);
I.Click(BasicPage.DeleteObjectButton(_scenarioContext["UserName"].ToString()!));
I.Click(BasicPage.ConfirmDeletionButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
}
}
}