View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.fit.console;
20  
21  import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
22  import org.apache.syncope.client.console.pages.Types;
23  import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
24  import org.apache.syncope.client.ui.commons.Constants;
25  import org.apache.wicket.util.tester.FormTester;
26  import org.junit.jupiter.api.BeforeEach;
27  
28  public abstract class AbstractTypesITCase extends AbstractConsoleITCase {
29  
30      protected static final String PLAIN_DATATABLE_PATH = "body:content:tabbedPanel:panel:"
31              + "accordionPanel:tabs:0:body:content:container:content:searchContainer:resultTable";
32  
33      protected static final String VIRTUAL_DATATABLE_PATH = "body:content:tabbedPanel:panel:"
34              + "accordionPanel:tabs:2:body:content:container:content:searchContainer:resultTable";
35  
36      protected static final String DATATABLE_PATH =
37              "body:content:tabbedPanel:panel:container:content:searchContainer:resultTable";
38  
39      @BeforeEach
40      public void login() {
41          doLogin(ADMIN_UNAME, ADMIN_PWD);
42      }
43  
44      protected void browsingToRelationshipType() {
45          TESTER.clickLink("body:configurationLI:configurationUL:typesLI:types", false);
46          TESTER.assertRenderedPage(Types.class);
47  
48          TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:0:link");
49          TESTER.assertComponent(DATATABLE_PATH + ":tablePanel:groupForm:checkgroup:dataTable",
50                  AjaxFallbackDataTable.class);
51      }
52  
53      protected void browsingToAnyTypes() {
54          TESTER.clickLink("body:configurationLI:configurationUL:typesLI:types", false);
55          TESTER.assertRenderedPage(Types.class);
56  
57          TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:1:link");
58          TESTER.assertComponent(DATATABLE_PATH + ":tablePanel:groupForm:checkgroup:dataTable",
59                  AjaxFallbackDataTable.class);
60      }
61  
62      protected void browsingToAnyTypeClasses() {
63          TESTER.clickLink("body:configurationLI:configurationUL:typesLI:types", false);
64          TESTER.assertRenderedPage(Types.class);
65  
66          TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:2:link");
67          TESTER.assertComponent(DATATABLE_PATH + ":tablePanel:groupForm:checkgroup:dataTable",
68                  AjaxFallbackDataTable.class);
69      }
70  
71      protected void browsingToPlainSchemas() {
72          TESTER.clickLink("body:configurationLI:configurationUL:typesLI:types", false);
73          TESTER.assertRenderedPage(Types.class);
74  
75          TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:3:link");
76          TESTER.assertComponent(PLAIN_DATATABLE_PATH + ":tablePanel:groupForm:checkgroup:dataTable",
77                  AjaxFallbackDataTable.class);
78      }
79  
80      protected void browsingToVirtualSchemas() {
81          TESTER.clickLink("body:configurationLI:configurationUL:typesLI:types", false);
82          TESTER.assertRenderedPage(Types.class);
83  
84          TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:3:link");
85          TESTER.assertComponent(VIRTUAL_DATATABLE_PATH + ":tablePanel:groupForm:checkgroup:dataTable",
86                  AjaxFallbackDataTable.class);
87      }
88  
89      protected void createPlainSchema(final String key) {
90          browsingToPlainSchemas();
91          TESTER.clickLink(
92                  "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:container:content:add");
93  
94          TESTER.assertComponent(
95                  "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer",
96                  Modal.class);
97  
98          FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
99                  + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
100         formTester.setValue("content:form:view:details:key:textField", key);
101         formTester.setValue("content:form:view:details:type:dropDownChoiceField", "3");
102         TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:accordionPanel:tabs:0:"
103                 + "body:content:outerObjectsRepeater:0:outer:form:content:form:buttons:next", Constants.ON_CLICK);
104 
105         formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
106                 + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
107         formTester.submit("content:form:buttons:finish");
108 
109         assertSuccessMessage();
110         TESTER.cleanupFeedbackMessages();
111     }
112 
113     protected void createAnyTypeClassWithoutSchema(final String name) {
114         browsingToAnyTypeClasses();
115 
116         TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
117         TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
118 
119         FormTester formTester = TESTER.newFormTester(
120                 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
121         formTester.setValue("content:anyTypeClassDetailsPanel:form:key:textField", name);
122 
123         TESTER.clearFeedbackMessages();
124         TESTER.clickLink("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
125         assertSuccessMessage();
126         TESTER.clearFeedbackMessages();
127     }
128 
129     protected void createAnyType(final String name) {
130         browsingToAnyTypes();
131 
132         TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
133         TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
134 
135         final FormTester formTester = TESTER.newFormTester(
136                 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
137         formTester.setValue("content:anyTypeDetailsPanel:container:form:key:textField", name);
138 
139         TESTER.clickLink("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
140         assertSuccessMessage();
141         TESTER.clearFeedbackMessages();
142     }
143 
144     protected void createRelationshipType(final String name) {
145         browsingToRelationshipType();
146 
147         TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
148 
149         TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
150 
151         final FormTester formTester = TESTER.newFormTester(
152                 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
153         formTester.setValue("content:relationshipTypeDetails:container:form:key:textField", name);
154         formTester.setValue(
155                 "content:relationshipTypeDetails:container:form:description:textField", "test relationshipType");
156 
157         TESTER.clickLink("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
158 
159         assertSuccessMessage();
160         TESTER.clearFeedbackMessages();
161 
162         TESTER.assertRenderedPage(Types.class);
163     }
164 }