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.Policies;
26 import org.apache.syncope.client.console.pages.Realms;
27 import org.apache.syncope.client.ui.commons.Constants;
28 import org.apache.wicket.Component;
29 import org.apache.wicket.markup.html.WebMarkupContainer;
30 import org.apache.wicket.markup.html.form.TextField;
31 import org.apache.wicket.util.tester.FormTester;
32 import org.junit.jupiter.api.BeforeEach;
33 import org.junit.jupiter.api.Test;
34
35 public class PoliciesITCase extends AbstractConsoleITCase {
36
37 @BeforeEach
38 public void login() {
39 doLogin(ADMIN_UNAME, ADMIN_PWD);
40 TESTER.clickLink("body:configurationLI:configurationUL:policiesLI:policies", false);
41 TESTER.assertRenderedPage(Policies.class);
42 }
43
44 private static void createAccountPolicy(final String name) {
45 TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:1:link");
46 TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
47 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
48
49 Component modal = TESTER.getComponentFromLastRenderedPage(
50 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
51
52 FormTester formTester = TESTER.newFormTester(
53 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
54 formTester.setValue("content:fields:0:field:textField", name);
55 formTester.setValue("content:fields:1:field:spinner", "1");
56 formTester.setValue("content:fields:2:field:checkboxField", true);
57 formTester.setValue("content:fields:3:field:paletteField:recorder", "ws-target-resource-nopropagation4");
58
59 TESTER.clickLink(
60 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
61
62 assertSuccessMessage();
63 TESTER.cleanupFeedbackMessages();
64
65 closeCallBack(modal);
66
67 TESTER.assertComponent("body:content:tabbedPanel:panel:container:content:"
68 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", WebMarkupContainer.class);
69
70 Component component = findComponentByProp("name",
71 "body:content:tabbedPanel:panel:container:content:"
72 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
73
74 assertNotNull(component);
75 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
76 TESTER.clickLink(
77 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
78 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
79
80 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
81 Modal.class);
82
83 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
84 + ":content:fields:0:field:textField", name);
85 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
86 + ":content:fields:1:field:spinner", 1);
87 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
88 + ":content:fields:2:field:checkboxField", true);
89 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
90 + ":content:fields:3:field:paletteField:recorder", "ws-target-resource-nopropagation4");
91
92 TESTER.executeAjaxEvent(
93 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:buttons:0:button",
94 Constants.ON_CLICK);
95
96 component = findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
97 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
98 assertNotNull(component);
99 }
100
101 private static void createPasswordPolicy(final String name) {
102 TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:4:link");
103 TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
104 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
105
106 Component modal = TESTER.getComponentFromLastRenderedPage(
107 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
108
109 FormTester formTester = TESTER.newFormTester(
110 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
111 formTester.setValue("content:fields:0:field:textField", name);
112 formTester.setValue("content:fields:1:field:spinner", "1");
113 formTester.setValue("content:fields:2:field:checkboxField", true);
114
115 TESTER.clickLink(
116 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
117
118 assertSuccessMessage();
119 TESTER.cleanupFeedbackMessages();
120
121 closeCallBack(modal);
122
123 Component component = findComponentByProp("name",
124 "body:content:tabbedPanel:panel:container:content:"
125 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
126
127 assertNotNull(component);
128 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
129 TESTER.clickLink(
130 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
131 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
132
133 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
134 Modal.class);
135
136 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
137 + ":content:fields:0:field:textField", name);
138 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
139 + ":content:fields:1:field:spinner", 1);
140 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
141 + ":content:fields:2:field:checkboxField", true);
142
143 TESTER.executeAjaxEvent(
144 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:buttons:0:button",
145 Constants.ON_CLICK);
146
147 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
148 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
149 }
150
151 private static void createPullPolicy(final String name) {
152 TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:6:link");
153 TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
154 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
155
156 Component modal = TESTER.getComponentFromLastRenderedPage(
157 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
158
159 FormTester formTester = TESTER.newFormTester(
160 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
161 formTester.setValue("content:fields:0:field:textField", name);
162
163 TESTER.executeAjaxEvent(
164 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit",
165 Constants.ON_CLICK);
166
167 assertSuccessMessage();
168 TESTER.cleanupFeedbackMessages();
169
170 closeCallBack(modal);
171
172 Component component = findComponentByProp("name",
173 "body:content:tabbedPanel:panel:container:content:"
174 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
175
176 assertNotNull(component);
177 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
178 TESTER.clickLink(
179 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
180 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
181
182 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
183 Modal.class);
184
185 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
186 + ":content:fields:0:field:textField", name);
187
188 TESTER.executeAjaxEvent(
189 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:buttons:0:button",
190 Constants.ON_CLICK);
191
192 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
193 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
194 }
195
196 private static void deleteAccountPolicy(final String name) {
197 TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:1:link");
198 Component component = findComponentByProp("name",
199 "body:content:tabbedPanel:panel:container:content:"
200 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
201
202 assertNotNull(component);
203 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
204 TESTER.getRequest().addParameter("confirm", "true");
205 TESTER.clickLink(TESTER.getComponentFromLastRenderedPage(
206 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
207 + "togglePanelContainer:container:actions:actions:actionRepeater:4:action:action"));
208
209 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
210 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
211 + "togglePanelContainer:container:actions:actions:actionRepeater:4:action:action"),
212 Constants.ON_CLICK);
213
214 assertSuccessMessage();
215 TESTER.cleanupFeedbackMessages();
216
217 assertNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
218 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
219 }
220
221 private static void deletePasswordPolicy(final String name) {
222 TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:4:link");
223 Component component = findComponentByProp("name",
224 "body:content:tabbedPanel:panel:container:content:"
225 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
226
227 assertNotNull(component);
228 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
229 TESTER.getRequest().addParameter("confirm", "true");
230 TESTER.clickLink(TESTER.getComponentFromLastRenderedPage(
231 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
232 + "togglePanelContainer:container:actions:actions:actionRepeater:4:action:action"));
233
234 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
235 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
236 + "togglePanelContainer:container:actions:actions:actionRepeater:4:action:action"),
237 Constants.ON_CLICK);
238
239 assertSuccessMessage();
240 TESTER.cleanupFeedbackMessages();
241
242 assertNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
243 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
244 }
245
246 private static void deletePullPolicy(final String name) {
247 TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:6:link");
248 Component component = findComponentByProp("name",
249 "body:content:tabbedPanel:panel:container:content:"
250 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
251
252 assertNotNull(component);
253 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
254 TESTER.getRequest().addParameter("confirm", "true");
255 TESTER.clickLink(TESTER.getComponentFromLastRenderedPage(
256 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
257 + "togglePanelContainer:container:actions:actions:actionRepeater:4:action:action"));
258
259 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
260 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
261 + "togglePanelContainer:container:actions:actions:actionRepeater:4:action:action"),
262 Constants.ON_CLICK);
263
264 assertSuccessMessage();
265 TESTER.cleanupFeedbackMessages();
266
267 assertNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
268 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
269 }
270
271 @Test
272 public void read() {
273 TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:1:link");
274 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
275 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "an account policy"));
276 }
277
278 @Test
279 public void createDeleteAccountPolicy() {
280 String name = "My Test Account Policy";
281 createAccountPolicy(name);
282 deleteAccountPolicy(name);
283 }
284
285 @Test
286 public void cloneDeleteAccountPolicy() {
287 String name = "My Test Account Policy to be cloned";
288 createAccountPolicy(name);
289
290 Component component = findComponentByProp("name",
291 "body:content:tabbedPanel:panel:container:content:"
292 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
293
294 assertNotNull(component);
295 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
296 TESTER.clickLink(
297 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
298 + "togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
299
300 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
301 Modal.class);
302
303 Component modal = TESTER.getComponentFromLastRenderedPage(
304 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
305
306 FormTester formTester = TESTER.newFormTester(
307 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
308 formTester.setValue("content:fields:0:field:textField", name + '2');
309
310 TESTER.clickLink(
311 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
312
313 assertSuccessMessage();
314 TESTER.cleanupFeedbackMessages();
315
316 closeCallBack(modal);
317
318 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
319 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
320
321 deleteAccountPolicy(name);
322
323 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
324 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name + '2'));
325
326 deleteAccountPolicy(name + '2');
327 }
328
329 @Test
330 public void createDeletePasswordPolicy() {
331 String name = "My Test Password Policy";
332 createPasswordPolicy(name);
333 deletePasswordPolicy(name);
334 }
335
336 @Test
337 public void cloneDeletePasswordPolicy() {
338 String name = "My Test Password Policy to be cloned";
339 createPasswordPolicy(name);
340
341 Component component = findComponentByProp("name",
342 "body:content:tabbedPanel:panel:container:content:"
343 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
344
345 assertNotNull(component);
346 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
347 TESTER.clickLink(
348 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
349 + "togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
350
351 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
352 Modal.class);
353
354 Component modal = TESTER.getComponentFromLastRenderedPage(
355 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
356
357 FormTester formTester = TESTER.newFormTester(
358 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
359 formTester.setValue("content:fields:0:field:textField", name + '2');
360
361 TESTER.clickLink(
362 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
363
364 assertSuccessMessage();
365 TESTER.cleanupFeedbackMessages();
366
367 closeCallBack(modal);
368
369 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
370 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
371
372 deletePasswordPolicy(name);
373
374 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
375 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name + '2'));
376
377 deletePasswordPolicy(name + '2');
378 }
379
380 @Test
381 public void createDeletePullPolicy() {
382 String name = "My Test Pull Policy";
383 createPullPolicy(name);
384 deletePullPolicy(name);
385 }
386
387 @Test
388 public void cloneDeletePullPolicy() {
389 String name = "My Test Pull Policy to be cloned";
390 createPullPolicy(name);
391
392 Component component = findComponentByProp("name",
393 "body:content:tabbedPanel:panel:container:content:"
394 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
395
396 assertNotNull(component);
397 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
398 TESTER.clickLink(
399 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
400 + "togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
401
402 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
403 Modal.class);
404
405 Component modal = TESTER.getComponentFromLastRenderedPage(
406 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
407
408 FormTester formTester = TESTER.newFormTester(
409 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
410 formTester.setValue("content:fields:0:field:textField", name + '2');
411
412 TESTER.clickLink(
413 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
414
415 assertSuccessMessage();
416 TESTER.cleanupFeedbackMessages();
417
418 closeCallBack(modal);
419
420 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
421 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
422
423 deletePullPolicy(name);
424
425 assertNotNull(findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
426 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name + '2'));
427
428 deletePullPolicy(name + '2');
429 }
430
431 @Test
432 public void createUpdateDeleteAccountPolicy() {
433 String name = "Account Policy To Be Updated";
434 createAccountPolicy(name);
435
436 Component component = findComponentByProp("name",
437 "body:content:tabbedPanel:panel:container:content:"
438 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
439
440 assertNotNull(component);
441 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
442 TESTER.clickLink(
443 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
444 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
445
446 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
447 Modal.class);
448
449 Component modal = TESTER.getComponentFromLastRenderedPage(
450 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
451
452 FormTester formTester = TESTER.newFormTester(
453 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
454 formTester.setValue("content:fields:1:field:spinner", "2");
455
456 TESTER.clickLink(
457 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
458
459 assertSuccessMessage();
460 TESTER.cleanupFeedbackMessages();
461
462 closeCallBack(modal);
463
464 component = findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
465 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
466
467 assertNotNull(component);
468 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
469 TESTER.clickLink(
470 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
471 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
472
473 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
474 Modal.class);
475
476 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
477 + ":content:fields:1:field:spinner", 2);
478
479 TESTER.executeAjaxEvent(
480 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:buttons:0:button",
481 Constants.ON_CLICK);
482
483 deleteAccountPolicy(name);
484 }
485
486 private static void composeDefaultAccountPolicy(final String policyDescription) {
487 Component component = findComponentByProp("name",
488 "body:content:tabbedPanel:panel:container:content:"
489 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", policyDescription);
490
491 assertNotNull(component);
492 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
493 TESTER.clickLink(
494 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
495 + "togglePanelContainer:container:actions:actions:actionRepeater:2:action:action");
496
497 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
498
499 Component modal = TESTER.getComponentFromLastRenderedPage(
500 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:outer");
501
502 TESTER.clickLink(
503 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:outer:form:content:container:content:add");
504
505 FormTester formTester = TESTER.newFormTester(
506 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:"
507 + "outer:form:content:container:content:wizard:form");
508 formTester.setValue("view:rule:dropDownChoiceField", "0");
509 formTester.submit("buttons:next");
510
511 formTester = TESTER.newFormTester(
512 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:"
513 + "outer:form:content:container:content:wizard:form");
514 formTester.submit("buttons:finish");
515
516 assertSuccessMessage();
517 TESTER.cleanupFeedbackMessages();
518
519 TESTER.clickLink(
520 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:outer:form:content:container:content:utility");
521
522 closeCallBack(modal);
523 }
524
525 @Test
526 public void createComposeDeleteAccountPolicy() {
527 String name = "Account Policy To Be Composed";
528 createAccountPolicy(name);
529 composeDefaultAccountPolicy(name);
530 deleteAccountPolicy(name);
531 }
532
533 @Test
534 public void createUpdateDeletePasswordPolicy() {
535 String name = "Password Policy To Be Updated";
536 createPasswordPolicy(name);
537
538 Component component = findComponentByProp("name",
539 "body:content:tabbedPanel:panel:container:content:"
540 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
541
542 assertNotNull(component);
543 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
544 TESTER.clickLink(
545 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
546 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
547
548 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
549 Modal.class);
550
551 Component modal = TESTER.getComponentFromLastRenderedPage(
552 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
553
554 FormTester formTester = TESTER.newFormTester(
555 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
556 formTester.setValue("content:fields:1:field:spinner", "2");
557
558 TESTER.clickLink(
559 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
560
561 assertSuccessMessage();
562 TESTER.cleanupFeedbackMessages();
563
564 closeCallBack(modal);
565
566 component = findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
567 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
568
569 assertNotNull(component);
570 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
571 TESTER.clickLink(
572 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
573 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
574
575 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
576 Modal.class);
577
578 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
579 + ":content:fields:1:field:spinner", 2);
580
581 TESTER.executeAjaxEvent(
582 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:buttons:0:button",
583 Constants.ON_CLICK);
584
585 deletePasswordPolicy(name);
586 }
587
588 @Test
589 public void createComposeDeletePasswordPolicy() {
590 String name = "Password Policy To Be Composed";
591 createPasswordPolicy(name);
592
593 Component component = findComponentByProp("name",
594 "body:content:tabbedPanel:panel:container:content:"
595 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
596
597 assertNotNull(component);
598 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
599 TESTER.clickLink(
600 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
601 + "togglePanelContainer:container:actions:actions:actionRepeater:2:action:action");
602
603 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:4:outer",
604 Modal.class);
605
606 Component modal = TESTER.getComponentFromLastRenderedPage(
607 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:outer");
608
609 TESTER.clickLink(
610 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:outer:form:content:container:content:add");
611
612 FormTester formTester = TESTER.newFormTester(
613 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:"
614 + "outer:form:content:container:content:wizard:form");
615 formTester.setValue("view:rule:dropDownChoiceField", "0");
616 formTester.submit("buttons:next");
617
618 formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:outerObjectsRepeater:4:"
619 + "outer:form:content:container:content:wizard:form");
620 formTester.submit("buttons:finish");
621
622 assertSuccessMessage();
623 TESTER.cleanupFeedbackMessages();
624
625 TESTER.clickLink(
626 "body:content:tabbedPanel:panel:outerObjectsRepeater:4:outer:form:content:container:content:utility");
627
628 closeCallBack(modal);
629
630 deletePasswordPolicy(name);
631 }
632
633 @Test
634 public void createUpdateDeletePullPolicy() {
635 String name = "Pull Policy To Be Updated";
636 createPullPolicy(name);
637
638 Component component = findComponentByProp("name",
639 "body:content:tabbedPanel:panel:container:content:"
640 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
641
642 Component modal = TESTER.getComponentFromLastRenderedPage(
643 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer");
644
645 assertNotNull(component);
646 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
647 TESTER.clickLink(
648 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
649 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
650
651 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
652 Modal.class);
653
654 FormTester formTester = TESTER.newFormTester(
655 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form");
656 formTester.setValue("content:fields:0:field:textField", name + '2');
657
658 TESTER.clickLink(
659 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
660
661 assertSuccessMessage();
662 TESTER.cleanupFeedbackMessages();
663
664 closeCallBack(modal);
665
666 component = findComponentByProp("name", "body:content:tabbedPanel:panel:container:content:"
667 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name + '2');
668
669 assertNotNull(component);
670 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
671 TESTER.clickLink(
672 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
673 + "togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
674
675 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer",
676 Modal.class);
677
678 TESTER.assertModelValue("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:form"
679 + ":content:fields:0:field:textField", name + '2');
680
681 TESTER.executeAjaxEvent(
682 "body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer:dialog:footer:buttons:0:button",
683 Constants.ON_CLICK);
684
685 deletePullPolicy(name + '2');
686 }
687
688 @Test
689 public void createComposeDeletePullPolicy() {
690 String name = "Pull Policy To Be Composed";
691 createPullPolicy(name);
692
693 Component component = findComponentByProp("name",
694 "body:content:tabbedPanel:panel:container:content:"
695 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
696 assertNotNull(component);
697
698 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
699 TESTER.clickLink(
700 "body:content:tabbedPanel:panel:outerObjectsRepeater:1:outer:container:content:"
701 + "togglePanelContainer:container:actions:actions:actionRepeater:2:action:action");
702
703 TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:5:outer",
704 Modal.class);
705
706 Component modal = TESTER.getComponentFromLastRenderedPage(
707 "body:content:tabbedPanel:panel:outerObjectsRepeater:5:outer");
708
709 FormTester formTester = TESTER.newFormTester(
710 "body:content:tabbedPanel:panel:outerObjectsRepeater:5:outer:form");
711
712 TESTER.executeAjaxEvent(
713 "body:content:tabbedPanel:panel:outerObjectsRepeater:5:outer:form:content:"
714 + "correlationRules:multiValueContainer:innerForm:content:panelPlus:add", Constants.ON_CLICK);
715
716 component = findComponentById(
717 "body:content:tabbedPanel:panel:outerObjectsRepeater:5:outer:form:content:"
718 + "correlationRules:multiValueContainer:innerForm:content:view:0:panel:rule",
719 "dropDownChoiceField");
720 assertNotNull(component);
721
722 formTester.setValue(component, "0");
723 TESTER.executeAjaxEvent(component, Constants.ON_CHANGE);
724 formTester.setValue(component, "0");
725
726 TESTER.clickLink(
727 "body:content:tabbedPanel:panel:outerObjectsRepeater:5:outer:dialog:footer:inputs:0:submit");
728
729 assertSuccessMessage();
730 TESTER.cleanupFeedbackMessages();
731
732 closeCallBack(modal);
733
734 deletePullPolicy(name);
735 }
736
737 @Test
738 public void issueSYNCOPE1030() {
739 String name = "SYNCOPE-1030";
740
741 createAccountPolicy(name);
742 composeDefaultAccountPolicy(name);
743
744
745 TESTER.clickLink("body:realmsLI:realms", false);
746 TESTER.assertRenderedPage(Realms.class);
747
748
749 TESTER.clickLink(
750 "body:content:body:container:content:tabbedPanel:panel:actions:actions:actionRepeater:1:action:action");
751 TESTER.assertComponent("body:content:body:outerObjectsRepeater:0:outer", Modal.class);
752
753
754 TESTER.assertLabel("body:content:body:outerObjectsRepeater:0:outer:form:content:form:view:details:container:"
755 + "policies:1:field-label", "Account Policy");
756
757 FormTester formTester = TESTER.newFormTester(
758 "body:content:body:outerObjectsRepeater:0:outer:form:content:form");
759 formTester.select("view:details:container:policies:1:dropDownChoiceField", 0);
760 formTester.submit("buttons:finish");
761
762 assertSuccessMessage();
763 TESTER.cleanupFeedbackMessages();
764
765 TESTER.executeAjaxEvent(
766 "body:content:body:outerObjectsRepeater:0:outer:form:content:action:actionRepeater:0:action:action",
767 Constants.ON_CLICK);
768
769
770 TESTER.clickLink("body:content:body:container:content:tabbedPanel:tabs-container:tabs:1:link");
771
772 Component component = findComponentByProp("username",
773 "body:content:body:container:content:tabbedPanel:panel:searchResult:container:content:"
774 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "rossini");
775 assertNotNull(component);
776
777 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
778 TESTER.clickLink("body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:"
779 + "1:outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:10:"
780 + "action:action");
781
782 TESTER.assertComponent(
783 "body:content:body:container:content:tabbedPanel:panel:searchResult:"
784 + "outerObjectsRepeater:0:outer:form:content:form:view:username:textField",
785 TextField.class);
786
787 formTester = TESTER.newFormTester(
788 "body:content:body:container:content:tabbedPanel:panel:searchResult:"
789 + "outerObjectsRepeater:0:outer:form:content:form");
790 assertNotNull(formTester);
791 formTester.submit("buttons:next");
792
793 formTester = TESTER.newFormTester(
794 "body:content:body:container:content:tabbedPanel:panel:searchResult:"
795 + "outerObjectsRepeater:0:outer:form:content:form");
796 assertNotNull(formTester);
797 formTester.submit("buttons:next");
798
799 formTester = TESTER.newFormTester(
800 "body:content:body:container:content:tabbedPanel:panel:searchResult:"
801 + "outerObjectsRepeater:0:outer:form:content:form");
802 assertNotNull(formTester);
803 formTester.submit("buttons:next");
804
805 formTester = TESTER.newFormTester(
806 "body:content:body:container:content:tabbedPanel:panel:searchResult:"
807 + "outerObjectsRepeater:0:outer:form:content:form");
808 assertNotNull(formTester);
809
810 formTester.setValue("view:plainSchemas:tabs:0:body:content:schemas:6:panel:textField", "rossini 1030");
811 formTester.setValue("view:plainSchemas:tabs:0:body:content:schemas:14:panel:textField", "ross1030@apace.org");
812 formTester.submit("buttons:finish");
813
814 assertSuccessMessage();
815 TESTER.cleanupFeedbackMessages();
816
817 TESTER.clickLink("body:content:body:container:content:tabbedPanel:panel:searchResult:"
818 + "outerObjectsRepeater:0:outer:form:content:action:actionRepeater:0:action:action");
819
820 component = findComponentByProp("username",
821 "body:content:body:container:content:tabbedPanel:panel:searchResult:container:content:"
822 + ":searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "rossini_clone");
823 assertNotNull(component);
824
825
826 TESTER.executeAjaxEvent(component.getPageRelativePath(), Constants.ON_CLICK);
827
828 TESTER.getRequest().addParameter("confirm", "true");
829 TESTER.clickLink(TESTER.getComponentFromLastRenderedPage(
830 "body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:"
831 + "1:outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:8:"
832 + "action:action"));
833
834 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
835 "body:content:body:container:content:tabbedPanel:panel:searchResult:outerObjectsRepeater:"
836 + "1:outer:container:content:togglePanelContainer:container:actions:actions:actionRepeater:11:"
837 + "action:action"), Constants.ON_CLICK);
838
839 assertSuccessMessage();
840 TESTER.cleanupFeedbackMessages();
841
842 component = findComponentByProp("username",
843 "body:content:body:container:content:tabbedPanel:panel:searchResult:container:content:"
844 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "rossini_clone");
845 assertNull(component);
846
847
848 TESTER.clickLink("body:configurationLI:configurationUL:policiesLI:policies", false);
849 TESTER.assertRenderedPage(Policies.class);
850 deleteAccountPolicy(name);
851 }
852 }