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.assertEquals;
22 import static org.junit.jupiter.api.Assertions.assertNotNull;
23
24 import org.apache.commons.lang3.StringUtils;
25 import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
26 import org.apache.syncope.client.ui.commons.Constants;
27 import org.apache.wicket.Component;
28 import org.apache.wicket.markup.html.basic.Label;
29 import org.apache.wicket.markup.html.form.TextField;
30 import org.apache.wicket.util.tester.FormTester;
31 import org.junit.jupiter.api.BeforeEach;
32 import org.junit.jupiter.api.Test;
33
34 public class GroupsITCase extends AbstractConsoleITCase {
35
36 private static final String TAB_PANEL = "body:content:body:container:content:tabbedPanel:panel:searchResult:";
37
38 private static final String CONTAINER = TAB_PANEL + "container:content:";
39
40 @BeforeEach
41 public void login() {
42 doLogin(ADMIN_UNAME, ADMIN_PWD);
43 }
44
45 @Test
46 public void read() {
47 TESTER.clickLink("body:realmsLI:realms", false);
48 TESTER.clickLink("body:content:body:container:content:tabbedPanel:tabs-container:tabs:2:link");
49
50 Component component = findComponentByProp("name", CONTAINER
51 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "artDirector");
52 assertNotNull(component);
53
54 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
55 TESTER.clickLink(TAB_PANEL
56 + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
57 + "actions:actions:actionRepeater:2:action:action");
58
59 FormTester formTester = TESTER.newFormTester(TAB_PANEL
60 + "outerObjectsRepeater:8:outer:container:content:togglePanelContainer:membersForm");
61
62 formTester.select("type:dropDownChoiceField", 0);
63 formTester.submit("changeit");
64
65 TESTER.assertModelValue(TAB_PANEL
66 + "outerObjectsRepeater:7:outer:dialog:header:header-label", "USER members of artDirector");
67 assertNotNull(findComponentByProp("username", TAB_PANEL
68 + "outerObjectsRepeater:7:outer:form:content:searchResult:container:content:"
69 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "puccini"));
70
71 TESTER.executeAjaxEvent(TAB_PANEL
72 + "outerObjectsRepeater:7:outer:dialog:footer:buttons:0:button", Constants.ON_CLICK);
73 }
74
75 @Test
76 public void filteredSearch() {
77 TESTER.clickLink("body:realmsLI:realms", false);
78 TESTER.clickLink("body:content:body:container:content:tabbedPanel:tabs-container:tabs:2:link");
79
80 TESTER.clickLink(
81 "body:content:body:container:content:tabbedPanel:panel:accordionPanel:tabs:0:title");
82
83 TESTER.executeAjaxEvent(
84 "body:content:body:container:content:tabbedPanel:panel:accordionPanel:tabs:0:body:"
85 + "content:searchFormContainer:search:multiValueContainer:innerForm:content:view:0:panelPlus:add",
86 Constants.ON_CLICK);
87
88 TESTER.assertComponent(
89 "body:content:body:container:content:tabbedPanel:panel:accordionPanel:tabs:0:body:"
90 + "content:searchFormContainer:search:multiValueContainer:innerForm:content:view:0:panel:container:"
91 + "value:textField", TextField.class);
92 }
93
94 private static void cloneGroup(final String group) {
95 TESTER.clickLink("body:realmsLI:realms", false);
96 TESTER.clickLink("body:content:body:container:content:tabbedPanel:tabs-container:tabs:2:link");
97
98 Component component = findComponentByProp("name", CONTAINER
99 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", group);
100 assertNotNull(component);
101
102 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
103 TESTER.clickLink(TAB_PANEL
104 + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
105 + "actions:actions:actionRepeater:9:action:action");
106
107 TESTER.assertComponent(TAB_PANEL
108 + "outerObjectsRepeater:0:outer:form:content:form:view:name:textField",
109 TextField.class);
110
111 FormTester formTester = TESTER.newFormTester(TAB_PANEL
112 + "outerObjectsRepeater:0:outer:form:content:form");
113 assertNotNull(formTester);
114 formTester.setValue("view:name:textField", group + "_clone");
115 formTester.submit("buttons:finish");
116
117 assertSuccessMessage();
118 TESTER.cleanupFeedbackMessages();
119
120 TESTER.clickLink(TAB_PANEL
121 + "outerObjectsRepeater:0:outer:form:content:action:actionRepeater:0:action:action");
122
123 component = findComponentByProp("name", CONTAINER
124 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", group + "_clone");
125 assertNotNull(component);
126 }
127
128 @Test
129 public void clickToCloneGroup() {
130 cloneGroup("director");
131
132 Component component = findComponentByProp("name", CONTAINER
133 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "director_clone");
134 assertNotNull(component);
135
136 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
137 TESTER.getRequest().addParameter("confirm", "true");
138 TESTER.clickLink(TAB_PANEL
139 + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
140 + "actions:actions:actionRepeater:9:action:action");
141
142 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(TAB_PANEL
143 + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
144 + "actions:actions:actionRepeater:10:action:action"), Constants.ON_CLICK);
145
146 assertSuccessMessage();
147 TESTER.cleanupFeedbackMessages();
148 }
149
150 @Test
151 public void editGroup() {
152 cloneGroup("director");
153
154 Component component = findComponentByProp("name", CONTAINER
155 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "director_clone");
156 assertNotNull(component);
157
158 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
159 TESTER.clickLink(TAB_PANEL
160 + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
161 + "actions:actions:actionRepeater:0:action:action");
162
163 TESTER.assertComponent(TAB_PANEL
164 + "outerObjectsRepeater:0:outer:form:content:form:view:name:textField",
165 TextField.class);
166
167 FormTester formTester = TESTER.newFormTester(TAB_PANEL
168 + "outerObjectsRepeater:0:outer:form:content:form");
169 assertNotNull(formTester);
170 formTester.submit("buttons:next");
171
172
173
174
175 assertEquals(TESTER.getComponentFromLastRenderedPage(
176 "body:content:body:container:content:tabbedPanel:panel:"
177 + "searchResult:outerObjectsRepeater:0:outer:form:content:form:view:ownerContainer:search:userOwner:"
178 + "textField").getDefaultModelObjectAsString(), "[823074dc-d280-436d-a7dd-07399fae48ec] puccini");
179
180 TESTER.clickLink(
181 "body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:0:"
182 + "outer:form:content:form:view:ownerContainer:search:userOwnerReset");
183
184 assertEquals(TESTER.getComponentFromLastRenderedPage(
185 "body:content:body:container:content:tabbedPanel:panel:"
186 + "searchResult:outerObjectsRepeater:0:outer:form:content:form:view:ownerContainer:search:userOwner:"
187 + "textField").getDefaultModelObjectAsString(), StringUtils.EMPTY);
188
189
190 formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form");
191 assertNotNull(formTester);
192 formTester.submit("buttons:next");
193
194 formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form");
195 assertNotNull(formTester);
196 formTester.submit("buttons:next");
197
198 formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form");
199 assertNotNull(formTester);
200 formTester.submit("buttons:next");
201
202 formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form");
203 assertNotNull(formTester);
204 formTester.submit("buttons:next");
205
206 formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form");
207 assertNotNull(formTester);
208 formTester.submit("buttons:next");
209
210 formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form");
211 assertNotNull(formTester);
212 formTester.submit("buttons:next");
213
214 formTester = TESTER.newFormTester(TAB_PANEL + "outerObjectsRepeater:0:outer:form:content:form");
215 assertNotNull(formTester);
216 formTester.submit("buttons:finish");
217
218 assertSuccessMessage();
219 TESTER.cleanupFeedbackMessages();
220
221 TESTER.assertComponent(TAB_PANEL
222 + "outerObjectsRepeater:0:outer:form:content:customResultBody:resources:firstLevelContainer:first:"
223 + "container:content:group:beans:0:fields:0:field", Label.class);
224
225 TESTER.clickLink(TAB_PANEL
226 + "outerObjectsRepeater:0:outer:form:content:action:actionRepeater:0:action:action");
227
228 component = findComponentByProp("name", CONTAINER
229 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "director_clone");
230 assertNotNull(component);
231
232 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
233 TESTER.getRequest().addParameter("confirm", "true");
234 TESTER.clickLink(TESTER.getComponentFromLastRenderedPage(TAB_PANEL
235 + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
236 + "actions:actions:actionRepeater:10:action:action"));
237
238 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(TAB_PANEL
239 + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
240 + "actions:actions:actionRepeater:10:action:action"), Constants.ON_CLICK);
241
242 assertSuccessMessage();
243 TESTER.cleanupFeedbackMessages();
244 }
245
246 @Test
247 public void checkDeleteGroupLink() {
248 TESTER.clickLink("body:realmsLI:realms", false);
249 TESTER.clickLink("body:content:body:container:content:tabbedPanel:tabs-container:tabs:2:link");
250
251 Component component = findComponentByProp("name", CONTAINER
252 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "director");
253 assertNotNull(component);
254
255 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
256 TESTER.assertComponent(TAB_PANEL
257 + "outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:"
258 + "actions:actions:actionRepeater:10:action:action", IndicatingOnConfirmAjaxLink.class);
259 }
260 }