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 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 }