1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.fit.console;
20
21 import static org.junit.jupiter.api.Assertions.assertNotNull;
22 import static org.junit.jupiter.api.Assertions.assertNull;
23
24 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
25 import org.apache.syncope.client.console.pages.Types;
26 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
27 import org.apache.syncope.client.ui.commons.Constants;
28 import org.apache.wicket.Component;
29 import org.apache.wicket.markup.html.form.DropDownChoice;
30 import org.apache.wicket.util.tester.FormTester;
31 import org.junit.jupiter.api.Test;
32
33 public class SchemasITCase extends AbstractTypesITCase {
34
35 @Test
36 public void readPlainSchema() {
37 browsingToPlainSchemas();
38 TESTER.assertLabel(
39 PLAIN_DATATABLE_PATH
40 + ":tablePanel:groupForm:"
41 + "checkgroup:dataTable:body:rows:1:cells:1:cell", "aLong");
42
43 TESTER.executeAjaxEvent(
44 PLAIN_DATATABLE_PATH + ":tablePanel:groupForm:checkgroup:dataTable:body:rows:1",
45 Constants.ON_CLICK);
46
47 TESTER.clickLink(
48 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:1:outer:"
49 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
50
51 TESTER.assertComponent(
52 "body:content:tabbedPanel:"
53 + "panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:"
54 + "form:content:form:view:kind:dropDownChoiceField", DropDownChoice.class);
55 }
56
57 @Test
58 public void createPlainSchema() {
59 browsingToPlainSchemas();
60 TESTER.clickLink(
61 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:container:content:add");
62
63 TESTER.assertComponent(
64 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer",
65 Modal.class);
66
67 FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
68 + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
69 formTester.setValue("content:form:view:details:key:textField", "zBoolean");
70 formTester.setValue("content:form:view:details:type:dropDownChoiceField", "3");
71 TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:accordionPanel:tabs:0:"
72 + "body:content:outerObjectsRepeater:0:outer:form:content:form:buttons:next", Constants.ON_CLICK);
73
74 formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
75 + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
76 formTester.submit("content:form:buttons:finish");
77
78 assertSuccessMessage();
79
80 TESTER.cleanupFeedbackMessages();
81 TESTER.assertRenderedPage(Types.class);
82 }
83
84 @Test
85 public void updatePlainSchema() {
86 browsingToPlainSchemas();
87
88 Component result = findComponentByProp(KEY, PLAIN_DATATABLE_PATH, "ctype");
89
90 TESTER.assertLabel(result.getPageRelativePath() + ":cells:1:cell", "ctype");
91 assertNotNull(result);
92
93 TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
94 TESTER.clickLink(
95 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:1:outer:"
96 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
97
98 TESTER.assertComponent(
99 "body:content:tabbedPanel:"
100 + "panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:"
101 + "form:content:form:view:kind:dropDownChoiceField", DropDownChoice.class);
102
103 FormTester formTester = TESTER.newFormTester(
104 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
105 formTester.setValue("content:form:view:details:multivalue:checkboxField", "true");
106
107 TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:accordionPanel:tabs:0:"
108 + "body:content:outerObjectsRepeater:0:outer:form:content:form:buttons:next", Constants.ON_CLICK);
109
110 formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
111 + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
112 formTester.submit("content:form:buttons:finish");
113
114 assertSuccessMessage();
115 }
116
117 @Test
118 public void deletePlainSchema() {
119 browsingToPlainSchemas();
120
121 final String schemaName = "zStringDelete";
122 TESTER.clickLink(
123 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:container:content:add");
124
125 TESTER.assertComponent(
126 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer",
127 Modal.class);
128
129 FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
130 + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
131 formTester.setValue("content:form:view:details:key:textField", schemaName);
132 formTester.setValue("content:form:view:details:type:dropDownChoiceField", "0");
133 TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:accordionPanel:tabs:0:"
134 + "body:content:outerObjectsRepeater:0:outer:form:content:form:buttons:next", Constants.ON_CLICK);
135
136 formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
137 + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
138 formTester.submit("content:form:buttons:finish");
139
140 assertSuccessMessage();
141
142 TESTER.cleanupFeedbackMessages();
143
144
145 TESTER.clickLink(
146 PLAIN_DATATABLE_PATH
147 + ":tablePanel:groupForm:checkgroup:dataTable:bottomToolbars:toolbars:3:span:navigator:last");
148
149 TESTER.assertComponent(PLAIN_DATATABLE_PATH, AjaxDataTablePanel.class);
150
151 Component result = findComponentByProp(KEY, PLAIN_DATATABLE_PATH, schemaName);
152 assertNotNull(result);
153
154 TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
155
156 TESTER.getRequest().addParameter("confirm", "true");
157 TESTER.clickLink(
158 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:1:outer:"
159 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
160
161 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
162 "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:1:outer:"
163 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action"),
164 Constants.ON_CLICK);
165
166 assertSuccessMessage();
167 TESTER.cleanupFeedbackMessages();
168
169 assertNull(findComponentByProp(KEY, PLAIN_DATATABLE_PATH, schemaName));
170 }
171
172 @Test
173 public void createVirtualSchema() {
174 browsingToVirtualSchemas();
175 TESTER.clickLink(
176 "body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:container:content:add");
177
178 TESTER.assertComponent(
179 "body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:outerObjectsRepeater:0:outer",
180 Modal.class);
181
182 FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
183 + "accordionPanel:tabs:2:body:content:outerObjectsRepeater:0:outer:form");
184
185 formTester.setValue("content:form:view:details:resource:dropDownChoiceField", "0");
186 TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:"
187 + "accordionPanel:tabs:2:body:content:outerObjectsRepeater:0:outer:form:"
188 + "content:form:view:details:resource:dropDownChoiceField", Constants.ON_CHANGE);
189
190 formTester.setValue("content:form:view:details:key:textField", "mynewvir");
191 formTester.setValue("content:form:view:details:resource:dropDownChoiceField", "0");
192 formTester.setValue("content:form:view:details:anyType:dropDownChoiceField", "0");
193 formTester.setValue("content:form:view:details:extAttrName:textField", "virattr");
194
195 TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:accordionPanel:tabs:2:"
196 + "body:content:outerObjectsRepeater:0:outer:form:content:form:buttons:next", Constants.ON_CLICK);
197
198 formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
199 + "accordionPanel:tabs:2:body:content:outerObjectsRepeater:0:outer:form");
200 formTester.submit("content:form:buttons:finish");
201
202 assertSuccessMessage();
203 TESTER.cleanupFeedbackMessages();
204 TESTER.assertRenderedPage(Types.class);
205
206 Component result = findComponentByProp(KEY, VIRTUAL_DATATABLE_PATH, "mynewvir");
207 TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
208
209 TESTER.getRequest().addParameter("confirm", "true");
210 TESTER.clickLink(
211 "body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:outerObjectsRepeater:1:outer:"
212 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
213
214 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
215 "body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:outerObjectsRepeater:1:outer:"
216 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action"),
217 Constants.ON_CLICK);
218
219 assertSuccessMessage();
220 TESTER.cleanupFeedbackMessages();
221
222 assertNull(findComponentByProp(KEY, VIRTUAL_DATATABLE_PATH, "mynewvir"));
223 }
224 }