2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
8 * Unless otherwise specified, all software contained herein is licensed
9 * under the Apache License, Version 2.0 (the "License");
10 * you may not use this software except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * Unless otherwise specified, all documentation contained herein is licensed
22 * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23 * you may not use this documentation except in compliance with the License.
24 * You may obtain a copy of the License at
26 * https://creativecommons.org/licenses/by/4.0/
28 * Unless required by applicable law or agreed to in writing, documentation
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 * ============LICENSE_END============================================
36 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
38 package org.onap.portalsdk.analytics.xmlobj;
40 import static org.mockito.Mockito.mock;
41 import static org.mockito.Mockito.when;
43 import java.awt.Color;
46 import java.sql.Connection;
47 import java.sql.ResultSet;
48 import java.sql.ResultSetMetaData;
49 import java.sql.Statement;
50 import java.util.ArrayList;
51 import java.util.List;
52 import java.util.TreeMap;
54 import javax.servlet.ServletContext;
55 import javax.servlet.http.HttpServletRequest;
56 import javax.servlet.http.HttpServletResponse;
58 import org.junit.Before;
59 import org.junit.Test;
60 import org.junit.runner.RunWith;
61 import org.mockito.InjectMocks;
62 import org.mockito.Matchers;
63 import org.mockito.Mockito;
64 import org.mockito.MockitoAnnotations;
65 import org.onap.portalsdk.analytics.model.DataCache;
66 import org.onap.portalsdk.analytics.model.ReportLoader;
67 import org.onap.portalsdk.analytics.model.base.ReportWrapper;
68 import org.onap.portalsdk.analytics.model.definition.ReportDefinition;
69 import org.onap.portalsdk.analytics.model.pdf.PdfReportHandler;
70 import org.onap.portalsdk.analytics.model.runtime.ReportRuntime;
71 import org.onap.portalsdk.analytics.system.AppUtils;
72 import org.onap.portalsdk.analytics.system.ConnectionUtils;
73 import org.onap.portalsdk.analytics.system.DbUtils;
74 import org.onap.portalsdk.analytics.system.Globals;
75 import org.onap.portalsdk.analytics.util.AppConstants;
76 import org.onap.portalsdk.analytics.util.DataSet;
77 import org.onap.portalsdk.analytics.util.HtmlStripper;
78 import org.onap.portalsdk.analytics.util.Utils;
79 import org.onap.portalsdk.analytics.util.XSSFilter;
80 import org.onap.portalsdk.analytics.view.ColumnHeader;
81 import org.onap.portalsdk.analytics.view.ColumnHeaderRow;
82 import org.onap.portalsdk.analytics.view.DataRow;
83 import org.onap.portalsdk.analytics.view.ReportColumnHeaderRows;
84 import org.onap.portalsdk.analytics.view.ReportData;
85 import org.onap.portalsdk.analytics.view.ReportDataRows;
86 import org.onap.portalsdk.analytics.view.ReportRowHeaderCols;
87 import org.onap.portalsdk.analytics.view.RowHeader;
88 import org.onap.portalsdk.analytics.view.RowHeaderCol;
89 import org.onap.portalsdk.core.util.SecurityCodecUtil;
90 import org.onap.portalsdk.core.web.support.UserUtils;
91 import org.owasp.esapi.ESAPI;
92 import org.owasp.esapi.codecs.Codec;
93 import org.powermock.api.mockito.PowerMockito;
94 import org.powermock.core.classloader.annotations.PrepareForTest;
95 import org.powermock.modules.junit4.PowerMockRunner;
97 import com.lowagie.text.Document;
99 @RunWith(PowerMockRunner.class)
100 @PrepareForTest({ PdfReportHandler.class, AppConstants.class, Globals.class, AppUtils.class, ReportWrapper.class, DataCache.class,
101 DbUtils.class, DataSet.class, Font.class, ReportLoader.class, ReportRuntime.class, Utils.class, ESAPI.class, Codec.class,
102 SecurityCodecUtil.class, ConnectionUtils.class, XSSFilter.class, ReportDefinition.class, UserUtils.class})
103 public class PdfReportHandlerTest {
106 PdfReportHandler pdfReportHandler;
109 public void init() throws Exception {
110 PowerMockito.mockStatic(Globals.class);
111 PowerMockito.mockStatic(AppUtils.class);
112 PowerMockito.mockStatic(DbUtils.class);
113 MockitoAnnotations.initMocks(this);
116 MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
117 HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();
118 HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();
120 @SuppressWarnings({ "rawtypes", "unchecked" })
122 public void createPdfFileContentTest() throws Exception {
123 Document doc = mock(Document.class);
124 PowerMockito.whenNew(Document.class).withNoArguments().thenReturn(doc);
125 PowerMockito.when(doc.newPage()).thenReturn(true);
126 when(AppUtils.getUserID(mockedRequest)).thenReturn("test");
127 ReportRuntime rr = mock(ReportRuntime.class);
128 ReportData rd = mock(ReportData.class);
129 when(Globals.isCoverPageNeeded()).thenReturn(true);
130 when(Globals.getSessionInfoForTheCoverPage()).thenReturn("test,test1");
131 when(AppUtils.getRequestNvlValue(mockedRequest, "test1")).thenReturn("test1");
132 when(rr.isPDFCoverPage()).thenReturn(true);
133 when(rr.getReportID()).thenReturn("test");
134 when(rr.getPDFOrientation()).thenReturn("portait");
135 when(mockedRequest.getSession().getAttribute("report_runtime")).thenReturn(rr);
136 when(mockedRequest.getSession().getAttribute("dashboard_report_id")).thenReturn("test");
137 ServletContext servConxt = mock(ServletContext.class);
138 when(mockedRequest.getSession().getServletContext()).thenReturn(servConxt);
139 when(servConxt.getRealPath(File.separator)).thenReturn("testpath");
140 when(rr.getChartType()).thenReturn("test");
141 when(rr.getDisplayChart()).thenReturn(true);
142 ArrayList paramNamePDFValues = new ArrayList();
143 paramNamePDFValues.add("test1");
144 paramNamePDFValues.add("test2");
145 when(rr.getParamNameValuePairsforPDFExcel(mockedRequest, 2)).thenReturn(paramNamePDFValues);
146 when(rr.getFormFieldComments(mockedRequest)).thenReturn("test");
147 TreeMap values = new TreeMap<>();
148 values.put("test", rr);
149 TreeMap values2 = new TreeMap<>();
150 values2.put("test3", rd);
151 TreeMap values3 = new TreeMap<>();
152 values3.put("test4", "c");
153 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP)).thenReturn(values);
154 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP)).thenReturn(values2);
155 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP)).thenReturn(values3);
156 pdfReportHandler.createPdfFileContent(mockedRequest, mockedResponse, 3);
159 @SuppressWarnings({ "rawtypes", "unchecked" })
161 public void createPdfFileContentIfNotDashBoardTest() throws Exception {
162 PowerMockito.mockStatic(Color.class);
163 PowerMockito.mockStatic(AppConstants.class);
164 PowerMockito.mockStatic(Globals.class);
165 PowerMockito.mockStatic(DbUtils.class);
166 PowerMockito.mockStatic(ConnectionUtils.class);
168 ReportRuntime rr = mock(ReportRuntime.class);
169 ReportData rd = mock(ReportData.class);
170 ReportDataRows rdr = new ReportDataRows();
171 CustomReportType crType = mock(CustomReportType.class);
172 Connection conn = mock(Connection.class);
173 Statement st = mock(Statement.class);
174 ResultSet resSet = mock(ResultSet.class);
175 ResultSetMetaData resSetMD = mock(ResultSetMetaData.class);
176 DataRow dr = new DataRow();
178 rd.reportDataRows = rdr;
179 when(rr.getCustomReport()).thenReturn(crType);
180 when(rr.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED);
181 when(crType.getReportType()).thenReturn("Linear");
182 when(Globals.getDataTableHeaderFontColor()).thenReturn("black");
184 DataSourceList dataSourceList = new DataSourceList();
186 List<DataSourceType> list = new ArrayList<>();
187 DataSourceType dataSourceType = new DataSourceType();
188 dataSourceType.setTableName("test");
189 dataSourceType.setRefTableId("1");
190 dataSourceType.setTableId("1");
191 List<DataColumnType> dataColumnTypeList = new ArrayList<>();
192 DataColumnType dataColumnType = new DataColumnType();
193 dataColumnType.setChartGroup("test");
194 dataColumnType.setYAxis("test");
195 dataColumnType.setColName("[test");
196 dataColumnType.setColOnChart("LEGEND");
197 dataColumnType.setDisplayName("chart_total");
198 dataColumnType.setColId("1");
199 dataColumnType.setTableId("1");
200 dataColumnType.setColType("DATE");
201 dataColumnType.setCrossTabValue("ROW");
202 dataColumnType.setPdfDisplayWidthInPxls("0.0");
203 dataColumnType.setVisible(true);
204 dataColumnType.setCalculated(true);
205 dataColumnTypeList.add(dataColumnType);
206 DataColumnType dataColumnType1 = new DataColumnType();
207 dataColumnType1.setCrossTabValue("COLUMN");
208 dataColumnType1.setColId("1");
209 dataColumnType1.setVisible(true);
210 dataColumnType1.setPdfDisplayWidthInPxls("1.0");
211 dataColumnTypeList.add(dataColumnType1);
213 DataColumnList dataColumnList = new DataColumnList();
214 dataColumnList.dataColumn = dataColumnTypeList;
215 dataSourceType.setDataColumnList(dataColumnList);
216 list.add(dataSourceType);
217 dataSourceList.dataSource = list;
218 when(crType.getDataSourceList()).thenReturn(dataSourceList);
220 when(ConnectionUtils.getConnection(Matchers.anyString())).thenReturn(conn);
221 when(conn.createStatement()).thenReturn(st);
222 when( st.executeQuery(Matchers.anyString())).thenReturn(resSet);
223 when(resSet.getMetaData()).thenReturn(resSetMD);
225 when(mockedRequest.getParameter("parent")).thenReturn("parent_test");
226 when(mockedRequest.getSession().getAttribute("parent_test_rr")).thenReturn(rr);
227 when(mockedRequest.getSession().getAttribute("parent_test_rd")).thenReturn(rd);
229 when(mockedRequest.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(rr);
230 when(mockedRequest.getSession().getAttribute(AppConstants.RI_REPORT_DATA)).thenReturn(rd);
231 when(mockedRequest.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE)).thenReturn("test_sql_whole");
232 when(rd.getTotalColumnCount()).thenReturn(2);
233 ReportColumnHeaderRows reportColumnHeaderRows = new ReportColumnHeaderRows();
234 ColumnHeaderRow columnHeaderRow = new ColumnHeaderRow();
235 ColumnHeader columnHeader = new ColumnHeader();
236 columnHeaderRow.add(columnHeader);
237 reportColumnHeaderRows.add(columnHeaderRow);
238 rd.reportColumnHeaderRows = reportColumnHeaderRows;
240 ReportRowHeaderCols reportRowHeaderCols = new ReportRowHeaderCols();
241 RowHeaderCol rowHeaderCol = new RowHeaderCol();
242 RowHeader rowHeader = new RowHeader();
243 rowHeader.setRowTitle("test");
244 rowHeaderCol.add(rowHeader);
245 RowHeaderCol rowHeaderCol1 = new RowHeaderCol();
246 RowHeader rowHeader1 = new RowHeader();
247 rowHeader1.setRowTitle("test1");
248 rowHeaderCol1.add(rowHeader1);
249 reportRowHeaderCols.addRowHeaderCol(rowHeaderCol);
250 reportRowHeaderCols.addRowHeaderCol(rowHeaderCol1);
251 rd.reportRowHeaderCols = reportRowHeaderCols;
253 when(mockedRequest.getParameter(AppConstants.RI_ACTION)).thenReturn("report.edit");
254 when(mockedRequest.getParameter(AppConstants.RI_WIZARD_ACTION)).thenReturn("test");
255 when(mockedRequest.getSession().getAttribute(
256 AppConstants.SI_REPORT_RUNTIME)).thenReturn(rr);
257 Mockito.when(Globals.getNewScheduleData()).thenReturn("test");
258 DataSet datset = PowerMockito.mock(DataSet.class);
259 when(DbUtils.executeQuery(Matchers.anyString())).thenReturn(datset);
260 when(datset.getString(Matchers.anyInt(), Matchers.anyInt())).thenReturn(null);
262 Document doc = mock(Document.class);
263 PowerMockito.whenNew(Document.class).withNoArguments().thenReturn(doc);
264 PowerMockito.when(doc.newPage()).thenReturn(true);
265 when(AppUtils.getUserID(mockedRequest)).thenReturn("test");
266 when(Globals.isCoverPageNeeded()).thenReturn(true);
267 when(Globals.getSessionInfoForTheCoverPage()).thenReturn("test,test1");
268 when(AppUtils.getRequestNvlValue(mockedRequest, "test1")).thenReturn("test1");
269 when(rr.isPDFCoverPage()).thenReturn(true);
270 when(rr.getReportID()).thenReturn("test");
271 when(rr.getPDFOrientation()).thenReturn("portait");
272 when(rr.getReportType()).thenReturn(AppConstants.RT_LINEAR);
273 ServletContext servConxt = mock(ServletContext.class);
274 when(mockedRequest.getSession().getServletContext()).thenReturn(servConxt);
275 when(servConxt.getRealPath(File.separator)).thenReturn("testpath");
276 when(rr.getChartType()).thenReturn("test");
277 when(rr.getDisplayChart()).thenReturn(true);
278 ArrayList paramNamePDFValues = new ArrayList();
279 paramNamePDFValues.add("test1");
280 paramNamePDFValues.add("test2");
281 when(rr.getParamNameValuePairsforPDFExcel(mockedRequest, 1)).thenReturn(paramNamePDFValues);
282 when(rr.getFormFieldComments(mockedRequest)).thenReturn("test");
283 TreeMap values = new TreeMap<>();
284 values.put("test", rr);
285 TreeMap values2 = new TreeMap<>();
286 values2.put("test3", rd);
287 TreeMap values3 = new TreeMap<>();
288 values3.put("test4", "c");
289 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP)).thenReturn(values);
290 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP)).thenReturn(values2);
291 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP)).thenReturn(values3);
292 pdfReportHandler.createPdfFileContent(mockedRequest, mockedResponse, 3);
296 @SuppressWarnings({ "rawtypes", "unchecked" })
298 public void createPdfFileContentIfNotDashBoardAndTypeTwoTest() throws Exception {
299 PowerMockito.mockStatic(Color.class);
300 PowerMockito.mockStatic(AppConstants.class);
301 PowerMockito.mockStatic(Globals.class);
302 PowerMockito.mockStatic(DbUtils.class);
303 PowerMockito.mockStatic(Font.class);
304 PowerMockito.mockStatic(ConnectionUtils.class);
305 HtmlStripper htmlStr = mock(HtmlStripper.class);
306 PowerMockito.whenNew(HtmlStripper.class).withNoArguments().thenReturn(htmlStr);
307 when(htmlStr.stripHtml(Matchers.anyString())).thenReturn("test");
308 ReportRuntime rr = mock(ReportRuntime.class);
309 ReportData rd = mock(ReportData.class);
310 ReportDataRows rdr = new ReportDataRows();
311 CustomReportType crType = mock(CustomReportType.class);
312 Connection conn = mock(Connection.class);
313 Statement st = mock(Statement.class);
314 ResultSet resSet = mock(ResultSet.class);
315 ResultSetMetaData resSetMD = mock(ResultSetMetaData.class);
316 DataRow dr = new DataRow();
318 rd.reportDataRows = rdr;
319 when(rr.getCustomReport()).thenReturn(crType);
320 when(rr.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED);
321 when(crType.getReportType()).thenReturn("Linear");
322 when(Globals.getDataTableHeaderFontColor()).thenReturn("black");
324 DataSourceList dataSourceList = new DataSourceList();
326 List<DataSourceType> list = new ArrayList<>();
327 DataSourceType dataSourceType = new DataSourceType();
328 dataSourceType.setTableName("test");
329 dataSourceType.setRefTableId("1");
330 dataSourceType.setTableId("1");
331 List<DataColumnType> dataColumnTypeList = new ArrayList<>();
332 DataColumnType dataColumnType = new DataColumnType();
333 dataColumnType.setChartGroup("test");
334 dataColumnType.setYAxis("test");
335 dataColumnType.setColName("[test");
336 dataColumnType.setColOnChart("LEGEND");
337 dataColumnType.setDisplayName("chart_total");
338 dataColumnType.setColId("1");
339 dataColumnType.setTableId("1");
340 dataColumnType.setColType("DATE");
341 dataColumnType.setCrossTabValue("ROW");
342 dataColumnType.setPdfDisplayWidthInPxls("0.0");
343 dataColumnType.setVisible(true);
344 dataColumnType.setCalculated(true);
345 dataColumnTypeList.add(dataColumnType);
346 DataColumnType dataColumnType1 = new DataColumnType();
347 dataColumnType1.setCrossTabValue("COLUMN");
348 dataColumnType1.setColId("1");
349 dataColumnType1.setVisible(true);
350 dataColumnType1.setPdfDisplayWidthInPxls("1.0");
351 dataColumnTypeList.add(dataColumnType1);
353 DataColumnList dataColumnList = new DataColumnList();
354 dataColumnList.dataColumn = dataColumnTypeList;
355 dataSourceType.setDataColumnList(dataColumnList);
356 list.add(dataSourceType);
357 dataSourceList.dataSource = list;
358 when(crType.getDataSourceList()).thenReturn(dataSourceList);
360 when(ConnectionUtils.getConnection(Matchers.anyString())).thenReturn(conn);
361 when(conn.createStatement()).thenReturn(st);
362 when( st.executeQuery(Matchers.anyString())).thenReturn(resSet);
363 when(resSet.getMetaData()).thenReturn(resSetMD);
365 when(mockedRequest.getParameter("parent")).thenReturn("parent_test");
366 when(mockedRequest.getSession().getAttribute("parent_test_rr")).thenReturn(rr);
367 when(mockedRequest.getSession().getAttribute("parent_test_rd")).thenReturn(rd);
369 when(mockedRequest.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(rr);
370 when(mockedRequest.getSession().getAttribute(AppConstants.RI_REPORT_DATA)).thenReturn(rd);
371 when(mockedRequest.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE)).thenReturn("test_sql_whole");
372 when(rd.getTotalColumnCount()).thenReturn(2);
373 ReportColumnHeaderRows reportColumnHeaderRows = new ReportColumnHeaderRows();
374 ColumnHeaderRow columnHeaderRow = new ColumnHeaderRow();
375 ColumnHeader columnHeader = new ColumnHeader();
376 columnHeaderRow.add(columnHeader);
377 reportColumnHeaderRows.add(columnHeaderRow);
378 rd.reportColumnHeaderRows = reportColumnHeaderRows;
380 ReportRowHeaderCols reportRowHeaderCols = new ReportRowHeaderCols();
381 rd.reportRowHeaderCols = reportRowHeaderCols;
383 when(mockedRequest.getParameter(AppConstants.RI_ACTION)).thenReturn("report.edit");
384 when(mockedRequest.getParameter(AppConstants.RI_WIZARD_ACTION)).thenReturn("test");
385 when(mockedRequest.getSession().getAttribute(
386 AppConstants.SI_REPORT_RUNTIME)).thenReturn(rr);
387 Mockito.when(Globals.getNewScheduleData()).thenReturn("test");
388 DataSet datset = PowerMockito.mock(DataSet.class);
389 when(DbUtils.executeQuery(Matchers.anyString())).thenReturn(datset);
390 when(datset.getString(Matchers.anyInt(), Matchers.anyInt())).thenReturn(null);
392 Document doc = mock(Document.class);
393 PowerMockito.whenNew(Document.class).withNoArguments().thenReturn(doc);
394 PowerMockito.when(doc.newPage()).thenReturn(true);
395 when(AppUtils.getUserID(mockedRequest)).thenReturn("test");
396 when(Globals.isCoverPageNeeded()).thenReturn(true);
397 when(Globals.getSessionInfoForTheCoverPage()).thenReturn("test,test1");
398 when(AppUtils.getRequestNvlValue(mockedRequest, "test1")).thenReturn("test1");
399 when(rr.isPDFCoverPage()).thenReturn(true);
400 when(rr.getReportID()).thenReturn("test");
401 when(rr.getPDFOrientation()).thenReturn("portait");
402 when(rr.getReportType()).thenReturn(AppConstants.RT_LINEAR);
403 ServletContext servConxt = mock(ServletContext.class);
404 when(mockedRequest.getSession().getServletContext()).thenReturn(servConxt);
405 when(servConxt.getRealPath(File.separator)).thenReturn("testpath");
406 when(rr.getChartType()).thenReturn("test");
407 when(rr.getDisplayChart()).thenReturn(true);
408 ArrayList paramNamePDFValues = new ArrayList();
409 paramNamePDFValues.add("test1");
410 paramNamePDFValues.add("test2");
411 when(rr.getParamNameValuePairsforPDFExcel(mockedRequest, 1)).thenReturn(paramNamePDFValues);
412 when(rr.getFormFieldComments(mockedRequest)).thenReturn("test");
413 TreeMap values = new TreeMap<>();
414 values.put("test", rr);
415 TreeMap values2 = new TreeMap<>();
416 values2.put("test3", rd);
417 TreeMap values3 = new TreeMap<>();
418 values3.put("test4", "c");
419 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP)).thenReturn(values);
420 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP)).thenReturn(values2);
421 when(mockedRequest.getSession().getAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP)).thenReturn(values3);
422 pdfReportHandler.createPdfFileContent(mockedRequest, mockedResponse, 2);