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.Reports;
26 import org.apache.syncope.client.ui.commons.Constants;
27 import org.apache.wicket.Component;
28 import org.apache.wicket.markup.html.form.TextField;
29 import org.apache.wicket.util.tester.FormTester;
30 import org.junit.jupiter.api.BeforeEach;
31 import org.junit.jupiter.api.Test;
32
33 public class ReportsITCase extends AbstractConsoleITCase {
34
35 @BeforeEach
36 public void login() {
37 doLogin(ADMIN_UNAME, ADMIN_PWD);
38 TESTER.clickLink("body:reportsLI:reports", false);
39 TESTER.assertRenderedPage(Reports.class);
40 }
41
42 private static void createReport(final String name) {
43 TESTER.clickLink(
44 "body:content:reportsPanel:firstLevelContainer:first:container:content:add");
45
46 TESTER.assertComponent(
47 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:0:outer", Modal.class);
48
49 FormTester formTester = TESTER.newFormTester(
50 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:0:outer:form");
51 formTester.setValue("content:form:view:name:textField", name);
52 formTester.setValue("content:form:view:mimeType:textField", "application/pdf");
53 formTester.setValue("content:form:view:fileExt:textField", "pdf");
54 formTester.select("content:form:view:jobDelegate:dropDownChoiceField", 0);
55 formTester.submit("content:form:buttons:next");
56
57 TESTER.assertComponent(
58 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater"
59 + ":0:outer:form:content:form:view:schedule:seconds:textField", TextField.class);
60
61 formTester = TESTER.newFormTester(
62 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:0:outer:form");
63 formTester.submit("content:form:buttons:finish");
64
65 assertSuccessMessage();
66 TESTER.cleanupFeedbackMessages();
67
68 TESTER.clickLink("body:reportsLI:reports", false);
69 }
70
71 private static void delete(final String name) {
72 TESTER.clickLink("body:reportsLI:reports", false);
73
74 Component result = findComponentByProp(
75 "name", "body:content:reportsPanel:firstLevelContainer:first:container:"
76 + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name);
77
78 assertNotNull(result);
79
80 TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
81 TESTER.getRequest().addParameter("confirm", "true");
82 TESTER.clickLink(
83 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:1:outer:"
84 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:4:action:action");
85
86 TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
87 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:1:outer:"
88 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:4:action:action"),
89 Constants.ON_CLICK);
90
91 assertSuccessMessage();
92 TESTER.cleanupFeedbackMessages();
93
94 assertNull(findComponentByProp(
95 "name", "body:content:reportsPanel:firstLevelContainer:first:container:"
96 + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "deleteReport"));
97 }
98
99 @Test
100 public void read() {
101 Component result = findComponentByProp(
102 "name", "body:content:reportsPanel:firstLevelContainer:first:container:"
103 + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "test");
104
105 assertNotNull(result);
106
107 TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
108 TESTER.clickLink(
109 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:1:outer:"
110 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
111
112 TESTER.assertModelValue(
113 "body:content:reportsPanel:secondLevelContainer:title", "Executions of report 'test'");
114 result = findComponentByProp("status",
115 "body:content:reportsPanel:secondLevelContainer:second:executions:"
116 + "firstLevelContainer:first:container:content:searchContainer:resultTable:tablePanel:groupForm:"
117 + "checkgroup:dataTable", "SUCCESS");
118
119 assertNotNull(result);
120
121 TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
122 TESTER.clickLink(
123 "body:content:reportsPanel:secondLevelContainer:second:executions:firstLevelContainer:"
124 + "first:outerObjectsRepeater:1:outer:container:content:togglePanelContainer:container:actions:"
125 + "actions:actionRepeater:0:action:action");
126
127 TESTER.clickLink(
128 "body:content:reportsPanel:secondLevelContainer:second:executions:secondLevelContainer:back");
129
130 TESTER.clickLink("body:content:reportsPanel:secondLevelContainer:back");
131
132 assertNotNull(findComponentByProp(
133 "name", "body:content:reportsPanel:firstLevelContainer:first:container:"
134 + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "test"));
135 }
136
137 @Test
138 public void update() {
139 createReport("updateReport");
140 Component result = findComponentByProp(
141 "name", "body:content:reportsPanel:firstLevelContainer:first:container:"
142 + "content:searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", "updateReport");
143
144 assertNotNull(result);
145
146 TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
147 TESTER.clickLink(
148 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:1:outer:"
149 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
150
151 TESTER.assertModelValue(
152 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:"
153 + "0:outer:dialog:header:header-label", "Edit Report updateReport");
154
155 FormTester formTester = TESTER.newFormTester(
156 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:0:outer:form");
157 formTester.setValue("content:form:view:mimeType:textField", "application/csv");
158 formTester.setValue("content:form:view:fileExt:textField", "csv");
159
160 formTester = TESTER.newFormTester(
161 "body:content:reportsPanel:firstLevelContainer:first:outerObjectsRepeater:0:outer:form");
162 formTester.submit("content:form:buttons:finish");
163
164 assertSuccessMessage();
165 TESTER.cleanupFeedbackMessages();
166
167 delete("updateReport");
168 }
169 }