This is an automated email from the ASF dual-hosted git repository. skylark17 pushed a commit to branch 2_0_X in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/2_0_X by this push: new 8ef9c53 [SYNCOPE-1439] Added some ITs 8ef9c53 is described below commit 8ef9c53ed6412ed6ec97d40637e4154250af1dcd Author: skylark17 <matteo.alessandr...@tirasa.net> AuthorDate: Thu Mar 7 12:11:16 2019 +0100 [SYNCOPE-1439] Added some ITs --- .../markup/html/form/AbstractMultiPanel.java | 1 + .../apache/syncope/fit/console/UsersITCase.java | 213 +++++++++++++++++++++ 2 files changed, 214 insertions(+) diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractMultiPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractMultiPanel.java index 19f112b..c7df1a5 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractMultiPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AbstractMultiPanel.java @@ -60,6 +60,7 @@ public abstract class AbstractMultiPanel<INNER> extends AbstractFieldPanel<List< form = new Form<>("innerForm"); form.setDefaultButton(null); + form.setMultiPart(true); container.add(form); // ----------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java index d385e53..d307033 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java @@ -58,6 +58,10 @@ public class UsersITCase extends AbstractConsoleITCase { "body:content:body:container:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:" + "searchFormContainer:search:multiValueContainer:innerForm:content:view:0:panel:container:value:" + "textField", TextField.class); + TESTER.assertComponent( + "body:content:body:container:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:" + + "searchFormContainer:search:multiValueContainer:innerForm:content:view:1:panel:container:value:" + + "textField", TextField.class); } @Test @@ -324,6 +328,215 @@ public class UsersITCase extends AbstractConsoleITCase { } @Test + public void editUserMemberships() { + TESTER.clickLink("body:realmsLI:realms"); + TESTER.executeAjaxEvent("body:content:realmChoicePanel:container:realms:btn", Constants.ON_CLICK); + TESTER.executeAjaxEvent("body:content:realmChoicePanel:container:realms:dropdown-menu:buttons:2:button", + Constants.ON_CLICK); + + TESTER.clickLink("body:content:body:container:content:tabbedPanel:tabs-container:tabs:1:link"); + + Component component = findComponentByProp("username", CONTAINER + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "rossini"); + assertNotNull(component); + + // click on "edit" + TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK); + TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:" + + "actions:actions:actionRepeater:0:action:action"); + + FormTester formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + + // add "additional" group in order to show membership attributes + formTester.setValue("view:groupsContainer:groups:paletteField:recorder", "additional,root,otherchild"); + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form:buttons:next", + Constants.ON_CLICK); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + + // open membership attributes accordion + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:title", + Constants.ON_CLICK); + + // edit multivalue text field, set 2 elements in total + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:" + + "body:content:schemas:5:panel:multiValueContainer:innerForm:content:view:0:panel:field", + TextField.class); + formTester.setValue("view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:content:" + + "schemas:5:panel:multiValueContainer:innerForm:content:view:0:panel:field", "2019-03-05"); + + TESTER.clickLink(TESTER.getComponentFromLastRenderedPage(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:" + + "body:content:schemas:5:panel:multiValueContainer:innerForm:content:view:0:panelPlus:add")); + + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:" + + "body:content:schemas:5:panel:multiValueContainer:innerForm:content:view:1:panel:field", + TextField.class); + formTester.setValue("view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:content:" + + "schemas:5:panel:multiValueContainer:innerForm:content:view:1:panel:field", "2019-03-06"); + + TESTER.clickLink(TESTER.getComponentFromLastRenderedPage(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:" + + "body:content:schemas:5:panel:multiValueContainer:innerForm:content:view:1:panelPlus:add")); + + formTester.submit("buttons:next"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:finish"); + + TESTER.assertInfoMessages("Operation executed successfully"); + TESTER.cleanupFeedbackMessages(); + + TESTER.assertComponent(TAB_PANEL + + "outerObjectsRepeater:0:outer:form:content:customResultBody:resources:firstLevelContainer:first:" + + "container:content:group:beans:0:fields:1:field", Label.class); + + TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:action:actionRepeater:0:action:action"); + + // reopen form and go to Plain Attributes page... + component = findComponentByProp("username", CONTAINER + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "rossini"); + assertNotNull(component); + + TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK); + TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:" + + "actions:actions:actionRepeater:0:action:action"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + + // add "additional" group in order to show membership attributes + formTester.setValue("view:groupsContainer:groups:paletteField:recorder", "additional,root,otherchild"); + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form:buttons:next", + Constants.ON_CLICK); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + + // open membership attributes accordion + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:title", + Constants.ON_CLICK); + + // ... check multivalue field values has been saved + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:" + + "body:content:schemas:5:panel:multiValueContainer:innerForm:content:view:0:panel:field", + TextField.class); + + TESTER.assertComponent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:" + + "body:content:schemas:5:panel:multiValueContainer:innerForm:content:view:1:panel:field", + TextField.class); + + Calendar cal = Calendar.getInstance(); + cal.set(2019, Calendar.MARCH, 5, 0, 0, 0); + cal.set(Calendar.MILLISECOND, 0); + Calendar cal2 = Calendar.getInstance(); + cal2.set(2019, Calendar.MARCH, 6, 0, 0, 0); + cal2.set(Calendar.MILLISECOND, 0); + TESTER.assertModelValue(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:content:" + + "schemas:5:panel:multiValueContainer:innerForm:content:view:0:panel:field", cal.getTime()); + TESTER.assertModelValue(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:content:" + + "schemas:5:panel:multiValueContainer:innerForm:content:view:1:panel:field", cal2.getTime()); + + // ... remove all values from multivalue field + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:" + + "content:schemas:5:panel:multiValueContainer:innerForm:content:view:1:drop", + Constants.ON_CLICK); + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:" + + "content:schemas:5:panel:multiValueContainer:innerForm:content:view:0:drop", + Constants.ON_CLICK); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:finish"); + + TESTER.assertInfoMessages("Operation executed successfully"); + TESTER.cleanupFeedbackMessages(); + + TESTER.assertComponent(TAB_PANEL + + "outerObjectsRepeater:0:outer:form:content:customResultBody:resources:firstLevelContainer:first:" + + "container:content:group:beans:0:fields:1:field", Label.class); + + TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:action:actionRepeater:0:action:action"); + + // reopen form and go to Plain Attributes page... + component = findComponentByProp("username", CONTAINER + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "rossini"); + assertNotNull(component); + + TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK); + TESTER.clickLink(TAB_PANEL + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:" + + "actions:actions:actionRepeater:0:action:action"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + + // add "additional" group in order to show membership attributes + formTester.setValue("view:groupsContainer:groups:paletteField:recorder", "additional,root,otherchild"); + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form:buttons:next", + Constants.ON_CLICK); + + formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form"); + assertNotNull(formTester); + + // open membership attributes accordion + TESTER.executeAjaxEvent(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:title", + Constants.ON_CLICK); + + // ... check multivalue field is now empty + TESTER.assertModelValue(TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:content:" + + "schemas:5:panel:multiValueContainer:innerForm:content:view:0:panel:field", null); + component = findComponentByProp("syncope-path", TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:" + + "content:schemas:5:panel:multiValueContainer:innerForm", + TAB_PANEL + "outerObjectsRepeater:0:" + + "outer:form:content:form:view:membershipsPlainSchemas:0:membershipPlainSchemas:tabs:0:body:" + + "content:schemas:5:panel:multiValueContainer:innerForm:content:view:1:panel:field"); + assertNull(component); + + // close the wizard + formTester.submit("buttons:cancel"); + } + + @Test public void checkDeleteUsrLink() { TESTER.clickLink("body:realmsLI:realms"); TESTER.clickLink("body:content:body:container:content:tabbedPanel:tabs-container:tabs:1:link");