Repository: syncope Updated Branches: refs/heads/master 96fd9f55c -> 8287f0621
[SYNCOPE-752] providing console test for users, groups and any objects Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/8287f062 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/8287f062 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/8287f062 Branch: refs/heads/master Commit: 8287f0621eecd53b5d1ef96797c830f0f58876fb Parents: 96fd9f5 Author: fmartelli <[email protected]> Authored: Thu Mar 17 17:47:28 2016 +0100 Committer: fmartelli <[email protected]> Committed: Thu Mar 17 17:47:28 2016 +0100 ---------------------------------------------------------------------- .../markup/html/form/ActionLinksPanel.java | 8 +- .../console/wizards/role/RoleWizardBuilder.java | 5 +- .../panels/AbstractSearchResultPanel.properties | 1 + .../AbstractSearchResultPanel_it.properties | 1 + .../AbstractSearchResultPanel_pt_BR.properties | 1 + .../markup/html/form/ActionLinksPanel.html | 6 +- .../syncope/fit/console/AnyObjectsITCase.java | 141 ++++++++++++++++ .../syncope/fit/console/GroupsITCase.java | 153 +++++++++++++++++ .../apache/syncope/fit/console/UsersITCase.java | 167 +++++++++++++++++++ 9 files changed, 474 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java index 4170ba9..52e1ada 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java @@ -57,7 +57,7 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel { super.add(new Fragment("panelManageGroups", "emptyFragment", this)); super.add(new Fragment("panelMapping", "emptyFragment", this)); super.add(new Fragment("panelAccountLink", "emptyFragment", this)); - super.add(new Fragment("panelResetPwd", "emptyFragment", this)); + super.add(new Fragment("panelMustChangePassword", "emptyFragment", this)); super.add(new Fragment("panelResetTime", "emptyFragment", this)); super.add(new Fragment("panelClone", "emptyFragment", this)); super.add(new Fragment("panelCreate", "emptyFragment", this)); @@ -214,9 +214,9 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel { break; case MUSTCHANGEPASSWORD: - fragment = new Fragment("panelResetPwd", "fragmentResetPwd", this); + fragment = new Fragment("panelMustChangePassword", "fragmentMustChangePassword", this); - fragment.addOrReplace(new IndicatingAjaxLink<Void>("resetPwdLink") { + fragment.addOrReplace(new IndicatingAjaxLink<Void>("MustChangePasswordLink") { private static final long serialVersionUID = -7978723352517770644L; @@ -813,7 +813,7 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel { break; case MUSTCHANGEPASSWORD: - super.addOrReplace(new Fragment("panelResetPwd", "emptyFragment", this)); + super.addOrReplace(new Fragment("panelMustChangePassword", "emptyFragment", this)); break; case RESET_TIME: http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java index 4d55084..3450aed 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java @@ -144,7 +144,8 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleHandler> { modelObject.getEntitlements().clear(); modelObject.getEntitlements().addAll(object); } - }, new ListModel<>(new RoleRestClient().getAllAvailableEntitlements())).setOutputMarkupId(true)); + }, new ListModel<>(new RoleRestClient().getAllAvailableEntitlements())). + hideLabel().setOutputMarkupId(true)); } } @@ -162,7 +163,7 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleHandler> { public String transform(final RealmTO input) { return input.getFullPath(); } - }, new ArrayList<String>()))).setOutputMarkupId(true)); + }, new ArrayList<String>()))).hideLabel().setOutputMarkupId(true)); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties index ff21666..bae38da 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties +++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.properties @@ -16,6 +16,7 @@ # under the License. displayRows=Display rows +mustChangePassword=Must Change Password firstname=Firstname surname=Surname userId=User Id http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties index fd4d6f8..77b8ba8 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties +++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_it.properties @@ -16,6 +16,7 @@ # under the License. displayRows=display rows +mustChangePassword=Deve Cambiare Password firstname=Nome surname=Cognome userId=User Id http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties index 77212f2..84ecd6d 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties +++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractSearchResultPanel_pt_BR.properties @@ -16,6 +16,7 @@ # under the License. displayRows=Mostrar linhas +mustChangePassword=Must Change Password firstname=Nome surname=Sobrenome userId=Identificador do Usu\u00e1rio http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html index d8754e6..f8a868b 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html @@ -26,7 +26,7 @@ under the License. </style> </wicket:head> <wicket:panel> - <span wicket:id="panelResetPwd">[plus]</span> + <span wicket:id="panelMustChangePassword">[plus]</span> <span wicket:id="panelClaim">[plus]</span> <span wicket:id="panelManageResources">[plus]</span> <span wicket:id="panelManageUsers">[plus]</span> @@ -63,8 +63,8 @@ under the License. <span wicket:id="panelZoomIn">[plus]</span> <span wicket:id="panelZoomOut">[plus]</span> - <wicket:fragment wicket:id="fragmentResetPwd"> - <a href="#" wicket:id="resetPwdLink" class="btn"><i class="fa fa-lock" alt="reset password icon" title="Reset password"></i></a> + <wicket:fragment wicket:id="fragmentMustChangePassword"> + <a href="#" wicket:id="MustChangePasswordLink" class="btn"><i class="fa fa-lock" alt="must change password icon" title="Force change password"></i></a> </wicket:fragment> <wicket:fragment wicket:id="fragmentClaim"> http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java new file mode 100644 index 0000000..6f87765 --- /dev/null +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.fit.console; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.util.tester.FormTester; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import static org.junit.Assert.assertNotNull; + +import org.apache.syncope.client.console.commons.Constants; +import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink; +import org.apache.wicket.markup.html.form.TextField; + +@FixMethodOrder(MethodSorters.JVM) +public class AnyObjectsITCase extends AbstractConsoleITCase { + + private final String tabPanel = "body:content:body:tabbedPanel:panel:searchResult:"; + + private final String searchResultContainer = tabPanel + "container:content:"; + + @Before + public void login() { + doLogin(ADMIN_UNAME, ADMIN_PWD); + } + + @Test + public void filteredSearch() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:3:link"); + + wicketTester.clickLink("body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:title"); + + wicketTester.executeAjaxEvent("body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:body:content:" + + "searchFormContainer:search:multiValueContainer:innerForm:content:panelPlus:add", Constants.ON_CLICK); + + wicketTester.assertComponent( + "body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:body:content:searchFormContainer:search:" + + "multiValueContainer:innerForm:content:view:0:panel:container:value:textField", TextField.class); + } + + @Test + public void clickToClonePrinter() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:3:link"); + + Component component = findComponentByProp("key", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", 1L); + assertNotNull(component); + + wicketTester.clickLink(component.getPageRelativePath() + ":cells:3:cell:panelClone:cloneLink"); + + FormTester formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + + formTester.submit("buttons:cancel"); + } + + @Test + public void editPrinter() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:3:link"); + + Component component = findComponentByProp("key", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", 1L); + assertNotNull(component); + + wicketTester.clickLink(component.getPageRelativePath() + ":cells:3:cell:panelEdit:editLink"); + + wicketTester.assertComponent(tabPanel + "modal:form:content:form:view:status:resources:firstLevelContainer:" + + "first:container:content:group:beans:0:fields:0", ListItem.class); + + FormTester formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + wicketTester.cleanupFeedbackMessages(); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:finish"); + + wicketTester.assertInfoMessages("Operation executed successfully"); + + wicketTester.assertComponent(tabPanel + + "modal:form:content:customResultBody:resources:firstLevelContainer:first:container:content:" + + "group:beans:0:fields:0:field", Label.class); + + wicketTester.clickLink(tabPanel + "modal:form:content:action:panelClose:closeLink"); + + component = findComponentByProp("key", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", 1L); + assertNotNull(component); + } + + @Test + public void checkDeletePrinterLink() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:3:link"); + + Component component = findComponentByProp("key", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", 1L); + assertNotNull(component); + + wicketTester.assertComponent(component.getPageRelativePath() + ":cells:3:cell:panelDelete:deleteLink", + IndicatingOnConfirmAjaxLink.class); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java new file mode 100644 index 0000000..eddfef4 --- /dev/null +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.fit.console; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.util.tester.FormTester; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import static org.junit.Assert.assertNotNull; + +import org.apache.syncope.client.console.commons.Constants; +import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink; + +@FixMethodOrder(MethodSorters.JVM) +public class GroupsITCase extends AbstractConsoleITCase { + + private final String tabPanel = "body:content:body:tabbedPanel:panel:searchResult:"; + + private final String searchResultContainer = tabPanel + "container:content:"; + + @Before + public void login() { + doLogin(ADMIN_UNAME, ADMIN_PWD); + } + + @Test + public void filteredSearch() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:2:link"); + + wicketTester.clickLink("body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:title"); + + wicketTester.executeAjaxEvent("body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:body:content:" + + "searchFormContainer:search:multiValueContainer:innerForm:content:panelPlus:add", Constants.ON_CLICK); + + wicketTester.assertComponent( + "body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:body:content:searchFormContainer:search:" + + "multiValueContainer:innerForm:content:view:0:panel:container:value:textField", TextField.class); + } + + @Test + public void clickToCloneGroup() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:2:link"); + + Component component = findComponentByProp("name", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "root"); + assertNotNull(component); + + wicketTester.clickLink(component.getPageRelativePath() + ":cells:4:cell:panelClone:cloneLink"); + + wicketTester.assertComponent(tabPanel + "modal:form:content:form:view:name:textField", TextField.class); + + FormTester formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + + formTester.submit("buttons:cancel"); + } + + @Test + public void editGroup() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:2:link"); + + Component component = findComponentByProp("name", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "root"); + assertNotNull(component); + + wicketTester.clickLink(component.getPageRelativePath() + ":cells:4:cell:panelEdit:editLink"); + + wicketTester.assertComponent(tabPanel + "modal:form:content:form:view:name:textField", TextField.class); + + FormTester formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:finish"); + + wicketTester.assertInfoMessages("Operation executed successfully"); + + wicketTester.assertComponent(tabPanel + + "modal:form:content:customResultBody:resources:firstLevelContainer:first:container:content:" + + "group:beans:0:fields:0:field", Label.class); + + wicketTester.clickLink(tabPanel + "modal:form:content:action:panelClose:closeLink"); + + component = findComponentByProp("name", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "root"); + assertNotNull(component); + + } + + @Test + public void checkDeleteGroupLink() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:2:link"); + + Component component = findComponentByProp("name", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "root"); + assertNotNull(component); + + wicketTester.assertComponent(component.getPageRelativePath() + ":cells:4:cell:panelDelete:deleteLink", + IndicatingOnConfirmAjaxLink.class); + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/8287f062/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..721c5ab --- /dev/null +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java @@ -0,0 +1,167 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.fit.console; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.util.tester.FormTester; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import static org.junit.Assert.assertNotNull; + +import org.apache.syncope.client.console.commons.Constants; +import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink; + +@FixMethodOrder(MethodSorters.JVM) +public class UsersITCase extends AbstractConsoleITCase { + + private final String tabPanel = "body:content:body:tabbedPanel:panel:searchResult:"; + + private final String searchResultContainer = tabPanel + "container:content:"; + + @Before + public void login() { + doLogin(ADMIN_UNAME, ADMIN_PWD); + } + + @Test + public void filteredSearch() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:1:link"); + + wicketTester.clickLink("body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:title"); + + wicketTester.executeAjaxEvent("body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:body:content:" + + "searchFormContainer:search:multiValueContainer:innerForm:content:panelPlus:add", Constants.ON_CLICK); + + wicketTester.assertComponent( + "body:content:body:tabbedPanel:panel:accordionPanel:tabs:0:body:content:searchFormContainer:search:" + + "multiValueContainer:innerForm:content:view:0:panel:container:value:textField", TextField.class); + } + + @Test + public void forceChangePassword() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:1:link"); + + Component component = findComponentByProp("username", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "verdi"); + assertNotNull(component); + + wicketTester.clickLink(component.getPageRelativePath() + + ":cells:6:cell:panelMustChangePassword:MustChangePasswordLink"); + + wicketTester.assertInfoMessages("Operation executed successfully"); + } + + @Test + public void clickToCloneUser() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:1:link"); + + Component component = findComponentByProp("username", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "rossini"); + assertNotNull(component); + + wicketTester.clickLink(component.getPageRelativePath() + ":cells:6:cell:panelClone:cloneLink"); + + wicketTester.assertComponent(tabPanel + "modal:form:content:form:view:username:textField", TextField.class); + + FormTester formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + + formTester.submit("buttons:cancel"); + } + + @Test + public void editUser() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:1:link"); + + Component component = findComponentByProp("username", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "puccini"); + assertNotNull(component); + + wicketTester.clickLink(component.getPageRelativePath() + ":cells:6:cell:panelEdit:editLink"); + + wicketTester.assertComponent(tabPanel + "modal:form:content:form:view:username:textField", TextField.class); + + FormTester formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:next"); + + formTester = wicketTester.newFormTester(tabPanel + "modal:form:content:form"); + assertNotNull(formTester); + formTester.submit("buttons:finish"); + + wicketTester.assertInfoMessages("Operation executed successfully"); + + wicketTester.assertComponent(tabPanel + + "modal:form:content:customResultBody:resources:firstLevelContainer:first:container:content:" + + "group:beans:0:fields:1:field", Label.class); + + wicketTester.clickLink(tabPanel + "modal:form:content:action:panelClose:closeLink"); + + component = findComponentByProp("username", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "puccini"); + assertNotNull(component); + } + + @Test + public void checkDeleteUsrLink() { + wicketTester.clickLink("body:realmsLI:realms"); + wicketTester.clickLink("body:content:body:tabbedPanel:tabs-container:tabs:1:link"); + + Component component = findComponentByProp("username", searchResultContainer + + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "rossini"); + assertNotNull(component); + + wicketTester.assertComponent(component.getPageRelativePath() + ":cells:6:cell:panelDelete:deleteLink", + IndicatingOnConfirmAjaxLink.class); + } +}
