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

166 lines
9.0 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 SSOManagerManagementStepDefinitions
{
private readonly IWebDriver driver;
private readonly BasicPage basicPage;
private readonly ScenarioContext _scenarioContext;
private readonly AddSsoProvider _addSsoProvider;
private readonly AutomationTestManagerHelper automationTestManagerHelper;
public SSOManagerManagementStepDefinitions(ScenarioContext scenarioContext)
{
driver = WebDriverHelper.GetWebDriver();
basicPage = new BasicPage(driver);
_scenarioContext = scenarioContext;
_addSsoProvider = new AddSsoProvider(driver);
automationTestManagerHelper = new(_scenarioContext);
}
[BeforeScenario("createssoprovider", Order = 100)]
public void CreateSSoProvider()
{
automationTestManagerHelper.CreateSsoProvider();
}
[AfterScenario("deletessoprovider", Order = 1)]
public void DeleteSsoCreated()
{
automationTestManagerHelper.DeleteSsoProvider();
}
[Given(@"I create a new SSO Provider")]
public void GivenICreateANewSSOProvider(Table dataTable)
{
BasicPage.ClickOnDropdownMenuItem("Sso Manager");
var ssoProviders = dataTable.CreateSet<SsoData>();
foreach (var ssoProvider in ssoProviders)
{
_scenarioContext["SSOProviderName"] = ssoProvider.Name + _scenarioContext["GUID"];
_scenarioContext["SSOProviderCreated"] = $"{ssoProvider.AuthorisationEndpoint}, {ssoProvider.IsPublic}, {_scenarioContext["SSOProviderName"]}, {ssoProvider.TokenEndpoint}, {ssoProvider.ValidIssuer}";
I.Click(BasicPage.AddButton);
I.FillField(AddSsoProvider.NameField, _scenarioContext["SSOProviderName"].ToString()!);
I.FillField(AddSsoProvider.ClientIDField, ssoProvider.ClientID!);
I.FillField(AddSsoProvider.ClientSecretField, ssoProvider.ClientSecret!);
I.FillField(AddSsoProvider.ValidIssuerField, ssoProvider.ValidIssuer!);
I.FillField(AddSsoProvider.AuthorisationEndpointField, ssoProvider.AuthorisationEndpoint!);
I.FillField(AddSsoProvider.TokenEndpointField, ssoProvider.TokenEndpoint!);
if (!ssoProvider.IsPublic!.Equals("true"))
{
if (I.WaitForElementToBeChecked(AddSsoProvider.IsPublicCheckBox))
{
I.Click(AddSsoProvider.IsPublicCheckBox);
}
}
I.Click(BasicPage.SaveAndCloseButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
I.WaitTillInvisible(BasicPage.SaveAndCloseButton);
}
I.WaitForVisible(BasicPage.ToastWithMessage("New Sso Provider added"));
I.Click(BasicPage.DropdownTab("Home"));
}
[Then(@"^new SSO Provider is (present|not present) on the list$")]
public void ThenNewSSOProviderIsPresentOnTheList(string presence)
{
BasicPage.ClickOnDropdownMenuItem("Sso Manager");
switch (presence)
{
case "present":
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["GUID"].ToString()!, AddSsoProvider.DisplayNameSearchField);
break;
case "not present":
BasicPage.SearchDeletedObjectNameInTableViaSearchInputField(_scenarioContext["GUID"].ToString()!);
break;
}
}
[When(@"I edit existing SSO Provider")]
public void WhenIEditExistingSSOProvider(Table dataTable)
{
var editSsoProviders = dataTable.CreateSet<SsoData>();
BasicPage.ClickOnDropdownMenuItem("Sso Manager");
I.WaitForElementVisibleAndClickable(BasicPage.SearchInput);
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["SSOProviderName"].ToString()!);
I.Click(BasicPage.EditObjectButton(_scenarioContext["SSOProviderName"].ToString()!));
foreach (var editSsoProvider in editSsoProviders)
{
_scenarioContext["SSOProviderName"] = editSsoProvider.Name + _scenarioContext["GUIDPostfix"];
_scenarioContext["ClientID"] = editSsoProvider.ClientID;
_scenarioContext["ClientSecret"] = editSsoProvider.ClientSecret;
_scenarioContext["ValidIssuer"] = editSsoProvider.ValidIssuer;
_scenarioContext["AuthorisationEndpoint"] = editSsoProvider.AuthorisationEndpoint;
_scenarioContext["TokenEndpoint"] = editSsoProvider.TokenEndpoint;
_scenarioContext["IsPublic"] = editSsoProvider.IsPublic;
string clientIdHidden = "<Redacted>", clientSecretHidden = "<Redacted>";
_scenarioContext["SSOProviderEdited"] = $"{editSsoProvider.AuthorisationEndpoint}, {clientIdHidden}, {clientSecretHidden}, {editSsoProvider.IsPublic}, {_scenarioContext["SSOProviderName"]}, {editSsoProvider.TokenEndpoint}, {editSsoProvider.ValidIssuer}";
I.FillField(AddSsoProvider.NameField, _scenarioContext["SSOProviderName"].ToString()!);
I.FillField(AddSsoProvider.ClientIDField, editSsoProvider.ClientID!);
I.FillField(AddSsoProvider.ClientSecretField, editSsoProvider.ClientSecret!);
I.FillField(AddSsoProvider.ValidIssuerField, editSsoProvider.ValidIssuer!);
I.FillField(AddSsoProvider.AuthorisationEndpointField, editSsoProvider.AuthorisationEndpoint!);
I.FillField(AddSsoProvider.TokenEndpointField, editSsoProvider.TokenEndpoint!);
if (!editSsoProvider.IsPublic!.Equals("true"))
{
if (I.WaitForElementToBeChecked(AddSsoProvider.IsPublicCheckBox))
{
I.Click(AddSsoProvider.IsPublicCheckBox);
}
}
I.Click(BasicPage.SaveAndCloseButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
I.WaitTillInvisible(BasicPage.SaveAndCloseButton);
}
I.WaitForVisible(BasicPage.ToastWithMessage("Sso Provider edited"));
I.Click(BasicPage.DropdownTab("Home"));
}
[Then(@"I check edited data on SSO Provider page")]
public void ThenICheckEditedDataOnSSOProviderPage()
{
BasicPage.ClickOnDropdownMenuItem("Sso Manager");
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["SSOProviderName"].ToString()!, AddSsoProvider.DisplayNameSearchField);
I.Click(BasicPage.EditObjectButton(_scenarioContext["SSOProviderName"].ToString()!));
I.WaitForElementWithAttributeValue(AddSsoProvider.NameField, "value", _scenarioContext["SSOProviderName"].ToString()!);
I.WaitForElementWithAttributeValue(AddSsoProvider.ClientIDField, "value", _scenarioContext["ClientID"].ToString()!);
I.WaitForElementWithAttributeValue(AddSsoProvider.ClientSecretField, "value", _scenarioContext["ClientSecret"].ToString()!);
I.WaitForElementWithAttributeValue(AddSsoProvider.ValidIssuerField, "value", _scenarioContext["ValidIssuer"].ToString()!);
I.WaitForElementWithAttributeValue(AddSsoProvider.AuthorisationEndpointField, "value", _scenarioContext["AuthorisationEndpoint"].ToString()!);
I.WaitForElementWithAttributeValue(AddSsoProvider.TokenEndpointField, "value", _scenarioContext["TokenEndpoint"].ToString()!);
if (_scenarioContext["IsPublic"].ToString()!.Equals("true"))
{
Assert.IsTrue(I.WaitForElementToBeChecked(AddSsoProvider.IsPublicCheckBox, 1));
}
else
{
Assert.IsFalse(I.WaitForElementToBeChecked(AddSsoProvider.IsPublicCheckBox, 1));
}
}
[When(@"I delete existing SSO Provider")]
public void WhenIDeleteExistingSSOProvider()
{
BasicPage.ClickOnDropdownMenuItem("Sso Manager");
I.WaitForElementVisibleAndClickable(BasicPage.SearchInput);
BasicPage.SearchObjectNameInTableViaSearchInputField(_scenarioContext["SSOProviderName"].ToString()!);
I.Click(BasicPage.DeleteObjectButton(_scenarioContext["SSOProviderName"].ToString()!));
I.WaitTillInvisible(BasicPage.DeleteObjectButton(_scenarioContext["SSOProviderName"].ToString()!));
I.Click(BasicPage.ConfirmDeletionButton);
AutomationTestManagerHelper.SaveTimingForAction(_scenarioContext);
}
}
}