Newer
Older

Mihai BOZ
committed
import ddsl.dcomponents.commonComponents.domanPropertyEditDialog.DomainPropertyEditDialog;
import ddsl.enums.ResourceTypes;

Mihai BOZ
committed
import org.openqa.selenium.WebElement;
import org.testng.annotations.BeforeMethod;
import org.testng.asserts.SoftAssert;

Mihai BOZ
committed
import pages.SmlPage;
import pages.administration.editDomainsPage.EditDomainsPage;
import pages.systemSettings.domainsPage.DomainsPage;
import rest.models.DomainModel;
import rest.models.MemberModel;

Mihai BOZ
committed
import rest.models.UserModel;
import utils.TestRunData;
import java.util.Arrays;
import java.util.List;
/**
* This class has the tests against Domains Page
*/
//@Ignore("DomainsPgTests:beforeTest Failing tests: org.openqa.selenium.ElementClickInterceptedException: Element <select id=\"signatureKeyAlias_id\" " +
// "class=\"mat-mdc-input-element mat-mdc-tooltip-trigger ng-tns-c1205077789-11 ng-untouched ng-pristine ng-valid " +
// "mat-mdc-form-field-input-control mdc-text-field__input cdk-text-field-autofill-monitored cdk-focused cdk-program-focused\"> " +
// "is not clickable at point (1014,364) because another element <mat-label class=\"ng-tns-c1205077789-11\"> obscures it" )
public class DomainsPgTests extends SeleniumTest {
DomiSMPPage homePage;
LoginPage loginPage;
DomainsPage domainsPage;
SoftAssert soft;
@BeforeMethod(alwaysRun = true)
public void beforeTest() throws Exception {
soft = new SoftAssert();
homePage = new DomiSMPPage(driver);
loginPage = homePage.goToLoginPage();
loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
}

Mihai BOZ
committed
@Test(description = "DOM-01 System admin is able to create Domains")
public void systemAdminIsAbleToCreateDomains() {
DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML();

Mihai BOZ
committed
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();

Mihai BOZ
committed
String alert = domainsPage.getAlertMessageAndClose();
soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");

Mihai BOZ
committed
domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
soft.assertEquals(ResponseCertificates.getTextForAlias(domainModel.getSignatureKeyAlias()), domainsPage.getDomainTab().getResponseSignatureCertificateSelectedValue());
soft.assertEquals(domainModel.getVisibility(), domainsPage.getDomainTab().getVisibilityOfDomainSelectedValue());
soft.assertEquals(domainsPage.getDomainWarningMessage(), "To complete domain configuration, please:\n" +
"select at least one resource type from the Resource Types tab\n" +
"add a domain member with 'ADMIN' role from the Members tab!");

Mihai BOZ
committed
}

Mihai BOZ
committed
@Test(description = "DOM-02 System admin can integrates domain with SMP")
public void systemAdminCanIntegrateDomainWithSMP() throws Exception {

Mihai BOZ
committed
DomainModel domainModel = DomainModel.generatePublicDomainModelWithSML();
domainsPage.getCreateDomainBtn().click();

Mihai BOZ
committed
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();

Mihai BOZ
committed
String alert = domainsPage.getAlertMessageAndClose();
soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();

Mihai BOZ
committed
domainsPage.goToTab("SML integration");
domainsPage.getSMLIntegrationTab().fillSMLIntegrationTab(domainModel);
domainsPage.getSMLIntegrationTab().saveChanges();
domainsPage.getSMLIntegrationTab().registerToSML();

Mihai BOZ
committed
alert = domainsPage.getAlertMessageAndClose();
soft.assertEquals(alert, "Domain [" + domainModel.getDomainCode() + "] registered to SML!");

Mihai BOZ
committed
//Go to SML
driver.get(data.getSMLUrl());
SmlPage smlPage = new SmlPage(driver);
soft.assertTrue(smlPage.isDomainRegistered(domainModel), "Domain is not present in SML");
soft.assertAll();

Mihai BOZ
committed
@Test(description = "DOM-03 System admin is able to Invite/Remove users from domains")
public void systemAdminIsAbleToInviteRemoveUsersFromDomains() throws Exception {

Mihai BOZ
committed
UserModel normalUser = UserModel.generateUserWithUSERrole();
DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML();

Mihai BOZ
committed
rest.users().createUser(normalUser);

Mihai BOZ
committed
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();

Mihai BOZ
committed
String alert = domainsPage.getAlertMessageAndClose();
soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");

Mihai BOZ
committed

Mihai BOZ
committed
//Invite user as VIEW and check if he has admin rights for domain

Mihai BOZ
committed
domainsPage.goToTab("Members");
domainsPage.getMembersTab().getInviteMemberBtn().click();
domainsPage.getMembersTab().getInviteMembersPopup().selectMember(normalUser.getUsername(), "VIEWER");
WebElement userMemberElement = domainsPage.getMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", normalUser.getUsername());
soft.assertNotNull(userMemberElement, "Invited user not found");

Mihai BOZ
committed

Mihai BOZ
committed
//check if user has admin rights to domain as VIEWER

Mihai BOZ
committed
homePage.logout();
homePage.goToLoginPage();
loginPage.login(normalUser.getUsername(), data.getNewPassword());

Mihai BOZ
committed
EditDomainsPage editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
WebElement domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
soft.assertNull(domainElement, "Domain found for user which doesn't have rights");

Mihai BOZ
committed
homePage.logout();
loginPage = homePage.goToLoginPage();
loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();

Mihai BOZ
committed
domainsPage.goToTab("Members");
domainsPage.getMembersTab().changeRoleOfUser(normalUser.getUsername(), "ADMIN");
//check if user has admin rights to domain as Admin
homePage.logout();
homePage.goToLoginPage();
loginPage.login(normalUser.getUsername(), data.getNewPassword());
editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
soft.assertNotNull(domainElement, "Domain found for user which doesn't have rights");

Mihai BOZ
committed
//Remove member user and check if he has access to the domain
homePage.logout();
homePage.goToLoginPage();
loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();

Mihai BOZ
committed
domainsPage.goToTab("Members");
domainsPage.getMembersTab().removeUser(normalUser.getUsername());
userMemberElement = domainsPage.getMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", normalUser.getUsername());
soft.assertNull(userMemberElement, "Domain found for user which doesn't have rights");

Mihai BOZ
committed
homePage.logout();
homePage.goToLoginPage();
loginPage.login(normalUser.getUsername(), data.getNewPassword());
editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
soft.assertNull(domainElement, "Domain found for user which doesn't have rights");

Mihai BOZ
committed

Mihai BOZ
committed
}

Mihai BOZ
committed
@Test(description = "DOM-04 System admin is not able to create duplicated Domains")
public void systemAdminIsNotAbleToCreateDuplicatedDomains() {
UserModel normalUser = UserModel.generateUserWithUSERrole();
DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML();
rest.users().createUser(normalUser);
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();
String alert = domainsPage.getAlertMessageAndClose();
soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
domainsPage.getCreateDomainBtn().click();
domainsPage.getDomainTab().fillDomainData(domainModel);
domainsPage.getDomainTab().saveChanges();
alert = domainsPage.getAlertMessageAndClose();
soft.assertEquals(alert, "Invalid domain data! Domain with code [" + domainModel.getDomainCode() + "] already exists!");
soft.assertAll();

Mihai BOZ
committed
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
@Test(description = "DOM-19 - Domain admins are able to change default properties for domains")
public void systemAdminsAreAbleToChangeDefaultPropertiesForDomains() throws Exception {
DomainModel domainModel = DomainModel.generatePublicDomainModelWithSML();
MemberModel superMember = new MemberModel();
superMember.setUsername(TestRunData.getInstance().getAdminUsername());
superMember.setRoleType("ADMIN");
//create domain
domainModel = rest.domains().createDomain(domainModel);
// rest.domains().addMembersToDomain(domainModel, adminMember);
rest.domains().addMembersToDomain(domainModel, superMember);
//add resources to domain
List<ResourceTypes> resourcesToBeAdded = Arrays.asList(ResourceTypes.OASIS1, ResourceTypes.OASIS3, ResourceTypes.OASIS2);
domainModel = rest.domains().addResourcesToDomain(domainModel, resourcesToBeAdded);
domainsPage.refreshPage();
domainsPage
.getLeftSideGrid().searchAndClickElementInColumn("Domain code", domainModel.getDomainCode());
domainsPage.goToTab("Configuration");
//Check is modifying boolean values
String boolPropertyName = "identifiersBehaviour.scheme.mandatory";
DomainPropertyEditDialog domainPropertyEditDialog = domainsPage.getConfigurationTab().openProperty(boolPropertyName);
domainPropertyEditDialog.setDomainValue(false);
domainPropertyEditDialog.pressOk();
domainsPage.getConfigurationTab().saveChanges();
//verify changes
soft.assertFalse(domainsPage.getConfigurationTab().isSystemValueUsed(boolPropertyName), "Property is marked as it's using system value");
soft.assertEquals("false", domainsPage.getConfigurationTab().getCurrentPropertyValue(boolPropertyName));
//Verify disabling system property
String useDomainProperty = "identifiersBehaviour.ParticipantIdentifierScheme.validationRegex";
domainPropertyEditDialog = domainsPage.getConfigurationTab().openProperty(useDomainProperty);
domainPropertyEditDialog.disableSystemValue();
domainPropertyEditDialog.pressOk();
domainsPage.getConfigurationTab().saveChanges();
//verify changes
soft.assertFalse(domainsPage.getConfigurationTab().isSystemValueUsed(useDomainProperty), "Property is marked as it's using system value");
//Verify change to enabling system property
domainPropertyEditDialog = domainsPage.getConfigurationTab().openProperty(useDomainProperty);
domainPropertyEditDialog.enableSystemValue();
domainPropertyEditDialog.pressOk();
domainsPage.getConfigurationTab().saveChanges();
//verify changes
soft.assertTrue(domainsPage.getConfigurationTab().isSystemValueUsed(useDomainProperty));
// String property value
String stringProperty = "identifiersBehaviour.caseSensitive.DocumentIdentifierSchemes";
String defaultPropertyValue = domainsPage.getConfigurationTab().getCurrentPropertyValue(stringProperty);
domainPropertyEditDialog = domainsPage.getConfigurationTab().openProperty(stringProperty);
domainPropertyEditDialog.setDomainValue("${identifier}${identifier}");
domainPropertyEditDialog.pressOk();
domainsPage.getConfigurationTab().saveChanges();
soft.assertFalse(domainsPage.getConfigurationTab().isSystemValueUsed(stringProperty), "Property is marked as it's using system value");
soft.assertTrue(domainsPage.getConfigurationTab().getCurrentPropertyValue(stringProperty).equalsIgnoreCase("${identifier}${identifier}"), "Configuration table is not showing updated value");
//Check if the property value is updated with system value after use system value is enabled
domainPropertyEditDialog = domainsPage.getConfigurationTab().openProperty(stringProperty);
domainPropertyEditDialog.enableSystemValue();
domainPropertyEditDialog.pressOk();
domainsPage.getConfigurationTab().saveChanges();
soft.assertTrue(domainsPage.getConfigurationTab().getCurrentPropertyValue(stringProperty).equalsIgnoreCase(defaultPropertyValue), "Configuration table is not showing system value");
soft.assertAll();
}