From 67d949a8c8063bc3717580f7ad29d78735df60e9 Mon Sep 17 00:00:00 2001 From: kate Date: Mon, 5 Nov 2018 15:49:02 +0100 Subject: [PATCH 1/3] gui tests --- .../labs/BasicProvisioningTest.java | 21 ++++++++++++--- .../component/common/PrismForm.java | 26 +++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/BasicProvisioningTest.java b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/BasicProvisioningTest.java index ce7a6c33f6b..8efa8ff729b 100644 --- a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/BasicProvisioningTest.java +++ b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/BasicProvisioningTest.java @@ -1,12 +1,20 @@ package com.evolveum.midpoint.testing.schrodinger.labs; +import com.codeborne.selenide.Condition; +import com.evolveum.midpoint.schema.SchemaConstantsGenerated; import com.evolveum.midpoint.schrodinger.page.user.ListUsersPage; import com.evolveum.midpoint.schrodinger.page.user.UserPage; +import com.evolveum.midpoint.schrodinger.util.Schrodinger; import com.evolveum.midpoint.testing.schrodinger.TestBase; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; +import org.openqa.selenium.By; import org.testng.Assert; import org.testng.annotations.Test; +import javax.xml.namespace.QName; + import static com.codeborne.selenide.Selenide.$; /** @@ -20,12 +28,14 @@ public class BasicProvisioningTest extends TestBase { private static final String USER_FAMILY_NAME_ATTRIBUTE = "Family name"; private static final String USER_PASSWORD_ATTRIBUTE = "Value"; private static final String USER_ADMINISTRATIVE_STATUS_ATTRIBUTE = "Administrative status"; + private static final String PASSWORD_IS_SET_LABEL = "password is set"; + private static final QName PASSWORD_FIELD_LABEL = new QName(SchemaConstantsGenerated.NS_COMMON, "value"); private static final String USER_NAME = "kirk"; private static final String USER_GIVEN_NAME = "Jim"; private static final String USER_FAMILY_NAME = "Kirk"; private static final String USER_PASSWORD = "abc123"; - private static final String USER_ADMINISTRATIVE_STATUS = "enabled"; + private static final String USER_ADMINISTRATIVE_STATUS = "Enabled"; //todo dependsOnGroup @Test(groups={"lab_4_1"}) @@ -38,8 +48,8 @@ public void test001createUserKirk(){ .addAttributeValue(UserType.F_NAME, USER_NAME) .addAttributeValue(UserType.F_FAMILY_NAME, USER_FAMILY_NAME) .addAttributeValue(UserType.F_GIVEN_NAME, USER_GIVEN_NAME) - //TODO set password and enable status -// .addAttributeValue(ActivationType.F_ADMINISTRATIVE_STATUS, USER_ADMINISTRATIVE_STATUS) + .setDropDownAttributeValue(ActivationType.F_ADMINISTRATIVE_STATUS, USER_ADMINISTRATIVE_STATUS) + .setPasswordFieldsValues(PASSWORD_FIELD_LABEL, USER_PASSWORD) .and() .and() .clickSave(); @@ -73,6 +83,11 @@ public void test001createUserKirk(){ .form() .compareAttibuteValue(USER_FAMILY_NAME_ATTRIBUTE, USER_FAMILY_NAME)); + //check password is set label + Assert.assertTrue($(Schrodinger.byElementValue("span", PASSWORD_IS_SET_LABEL)) + .shouldBe(Condition.visible) + .exists()); + //TODO check status, and password is set //check administrative status attribute value // Assert.assertTrue(userPage diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/PrismForm.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/PrismForm.java index a6f3a81f04f..1d858941624 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/PrismForm.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/PrismForm.java @@ -133,6 +133,32 @@ public PrismForm addAttributeValue(QName name, String value) { return this; } + public PrismForm setPasswordFieldsValues(QName name, String value) { + SelenideElement property = findProperty(name); + + ElementsCollection values = property.$$(By.className("prism-property-value")); + if (values.size() > 0) { + ElementsCollection passwordInputs = values.first().$$(By.tagName("input")); + if (passwordInputs != null){ + passwordInputs.forEach(inputElement -> inputElement.setValue(value)); + } + } + return this; + } + + public PrismForm setDropDownAttributeValue(QName name, String value) { + SelenideElement property = findProperty(name); + + ElementsCollection values = property.$$(By.className("prism-property-value")); + if (values.size() > 0) { + SelenideElement dropDown = values.first().$(By.tagName("select")); + if (dropDown != null){ + dropDown.selectOptionContainingText(value); + } + } + return this; + } + public PrismForm setAttributeValue(QName name, String value) { // todo implement return this; From 15eb97bfb63f263b58c5f995939366286de93ee3 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Tue, 6 Nov 2018 10:29:53 +0100 Subject: [PATCH 2/3] Fix getOwner REST operation (MID-4967) (Looks like a copy-paste error.) --- .../java/com/evolveum/midpoint/model/impl/ModelRestService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/ModelRestService.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/ModelRestService.java index 4999920cf00..4a5eafe2e4e 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/ModelRestService.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/ModelRestService.java @@ -673,7 +673,7 @@ public Response findShadowOwner(@PathParam("oid") String shadowOid, @Context Mes try { PrismObject user = model.findShadowOwner(shadowOid, task, parentResult); // response = Response.ok().entity(user).build(); - response = RestServiceUtil.createResponse(Response.Status.NO_CONTENT, user, parentResult); + response = RestServiceUtil.createResponse(Response.Status.OK, user, parentResult); } catch (Exception ex) { response = RestServiceUtil.handleException(parentResult, ex); } From 65b682bd545a61979bdd304f7fa6116b8639c644 Mon Sep 17 00:00:00 2001 From: kate Date: Tue, 6 Nov 2018 13:36:28 +0100 Subject: [PATCH 3/3] gui tests: add projection test --- .../labs/BasicProvisioningTest.java | 45 ++++++++++++++----- .../schrodinger/labs/ImportResourceTest.java | 2 +- .../scenarios/SynchronizationTests.java | 2 +- .../component/common/PrismForm.java | 29 ++++++++++-- 4 files changed, 61 insertions(+), 17 deletions(-) diff --git a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/BasicProvisioningTest.java b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/BasicProvisioningTest.java index 8efa8ff729b..c84cc3a578c 100644 --- a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/BasicProvisioningTest.java +++ b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/BasicProvisioningTest.java @@ -7,9 +7,7 @@ import com.evolveum.midpoint.schrodinger.util.Schrodinger; import com.evolveum.midpoint.testing.schrodinger.TestBase; import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; -import org.openqa.selenium.By; import org.testng.Assert; import org.testng.annotations.Test; @@ -69,31 +67,56 @@ public void test001createUserKirk(){ Assert.assertTrue(userPage .selectTabBasic() .form() - .compareAttibuteValue(USER_NAME_ATTRIBUTE, USER_NAME)); + .compareInputAttributeValue(USER_NAME_ATTRIBUTE, USER_NAME)); //check given name attribute value Assert.assertTrue(userPage .selectTabBasic() .form() - .compareAttibuteValue(USER_GIVEN_NAME_ATTRIBUTE, USER_GIVEN_NAME)); + .compareInputAttributeValue(USER_GIVEN_NAME_ATTRIBUTE, USER_GIVEN_NAME)); //check family name attribute value Assert.assertTrue(userPage .selectTabBasic() .form() - .compareAttibuteValue(USER_FAMILY_NAME_ATTRIBUTE, USER_FAMILY_NAME)); + .compareInputAttributeValue(USER_FAMILY_NAME_ATTRIBUTE, USER_FAMILY_NAME)); //check password is set label Assert.assertTrue($(Schrodinger.byElementValue("span", PASSWORD_IS_SET_LABEL)) .shouldBe(Condition.visible) .exists()); - //TODO check status, and password is set - //check administrative status attribute value -// Assert.assertTrue(userPage -// .selectTabBasic() -// .form() -// .compareAttibuteValue(Schrodinger.qnameToString(ActivationType.F_ADMINISTRATIVE_STATUS), USER_ADMINISTRATIVE_STATUS)); + //check Administrative status value + Assert.assertTrue(userPage + .selectTabBasic() + .form() + .compareSelectAttributeValue(USER_ADMINISTRATIVE_STATUS_ATTRIBUTE, USER_ADMINISTRATIVE_STATUS)); } + + @Test(groups={"lab_4_1"}) + public void test002addProjectionToUserKirk() { + ListUsersPage users = basicPage.listUsers(); + users + .table() + .search() + .byName() + .inputValue(USER_NAME) + .updateSearch() + .and() + .clickByName(USER_NAME) + .selectTabProjections() + .clickCog() + .addProjection() + .projectionsTable() + .selectCheckboxByName(ImportResourceTest.RESOURCE_NAME) + .and() + .clickAdd() + .and() + .clickSave() + .feedback() + .isSuccess(); + + } + } diff --git a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/ImportResourceTest.java b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/ImportResourceTest.java index 71b695cb799..513c54859c9 100644 --- a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/ImportResourceTest.java +++ b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/ImportResourceTest.java @@ -46,7 +46,7 @@ public class ImportResourceTest extends TestBase { private static final File CSV_RESOURCE = new File("./src/test/resources/labs/resources/localhost-csvfile-1-document-access.xml"); - private static final String RESOURCE_NAME = "CSV-1 (Document Access)"; + public static final String RESOURCE_NAME = "CSV-1 (Document Access)"; private static final String UNIQUE_ATTRIBUTE_NAME = "login"; private static final String PASSWORD_ATTRIBUTE_NAME = "password"; private static final String PASSWORD_ATTRIBUTE_RESOURCE_KEY = "User password attribute name"; diff --git a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/scenarios/SynchronizationTests.java b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/scenarios/SynchronizationTests.java index 2da0e887895..323cc4a9da2 100644 --- a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/scenarios/SynchronizationTests.java +++ b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/scenarios/SynchronizationTests.java @@ -189,7 +189,7 @@ public void alreadyLinkedResourceAccountModified() throws IOException { .clickByName(TEST_USER_DON_NAME) .selectTabBasic() .form() - .compareAttibuteValue("Given name","Donato") + .compareInputAttributeValue("Given name","Donato") ); } diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/PrismForm.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/PrismForm.java index 1d858941624..cbd357bec1e 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/PrismForm.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/common/PrismForm.java @@ -101,14 +101,35 @@ public PrismForm showEmptyAttributes(String containerName) { return this; } - public Boolean compareAttibuteValue(String name, String expectedValue) { + public Boolean compareInputAttributeValue(String name, String expectedValue) { SelenideElement property = findProperty(name); SelenideElement value = property.$(By.xpath(".//input[contains(@class,\"form-control\")]")); - String valueElemen = value.getValue(); + String valueElement = value.getValue(); - if (!valueElemen.isEmpty()) { + if (!valueElement.isEmpty()) { - return valueElemen.equals(expectedValue); + return valueElement.equals(expectedValue); + + } else if (!expectedValue.isEmpty()) { + + return false; + + } else { + + return true; + + } + + } + + public Boolean compareSelectAttributeValue(String name, String expectedValue) { + SelenideElement property = findProperty(name); + SelenideElement value = property.$(By.xpath(".//select[contains(@class,\"form-control\")]")); + String selectedOptionText = value.getSelectedText(); + + if (!selectedOptionText.isEmpty()) { + + return selectedOptionText.equals(expectedValue); } else if (!expectedValue.isEmpty()) {