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);
+    }
+}

Reply via email to