40ab05deb0b21451975037eae785d72dcaa09e0a
[portal/sdk.git] /
1 /*
2  * ============LICENSE_START==========================================
3  * ONAP Portal SDK
4  * ===================================================================
5  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  * ===================================================================
7  *
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
12  *
13  *             http://www.apache.org/licenses/LICENSE-2.0
14  *
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.
20  *
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
25  *
26  *             https://creativecommons.org/licenses/by/4.0/
27  *
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.
33  *
34  * ============LICENSE_END============================================
35  *
36  * 
37  */
38 package org.onap.portalsdk.analytics.model.definition;
39
40 import java.io.FileInputStream;
41 import java.io.InputStream;
42 import java.sql.Connection;
43 import java.sql.PreparedStatement;
44 import java.sql.ResultSet;
45 import javax.servlet.http.HttpServletRequest;
46 import javax.servlet.http.HttpSession;
47 import org.apache.commons.io.IOUtils;
48 import org.junit.Before;
49 import org.junit.Test;
50 import org.junit.runner.RunWith;
51 import org.mockito.Mock;
52 import org.mockito.Mockito;
53 import org.mockito.MockitoAnnotations;
54 import org.onap.portalsdk.analytics.error.RaptorException;
55 import org.onap.portalsdk.analytics.error.ReportSQLException;
56 import org.onap.portalsdk.analytics.model.runtime.ReportRuntime;
57 import org.onap.portalsdk.analytics.system.AppUtils;
58 import org.onap.portalsdk.analytics.system.DbUtils;
59 import org.onap.portalsdk.analytics.system.Globals;
60 import org.onap.portalsdk.analytics.util.AppConstants;
61 import org.onap.portalsdk.analytics.util.DataSet;
62 import org.owasp.esapi.ESAPI;
63 import org.owasp.esapi.Encoder;
64 import org.powermock.api.mockito.PowerMockito;
65 import org.powermock.core.classloader.annotations.PrepareForTest;
66 import org.powermock.modules.junit4.PowerMockRunner;
67
68 @RunWith(PowerMockRunner.class)
69 @PrepareForTest({ AppUtils.class, Globals.class, DbUtils.class, AppUtils.class, ESAPI.class})
70
71 public class ReportScheduleTest {
72
73         ReportSchedule reportSchedule;
74         
75         private String REPORT_ID="1000";
76         private String USER_ID="USER#1";
77         
78         @Mock
79         HttpServletRequest httpServletRequest;
80         
81         @Mock
82         HttpSession httpSession;
83         
84         @Mock
85         ReportRuntime reportRuntime;
86         
87         @Mock
88         ReportDefinition reportDefinition;
89
90         @Mock
91         Encoder encoder;
92         
93         @Mock
94         DataSet dataSet1;
95         
96         @Mock
97         Connection connection;
98         
99         @Mock
100         PreparedStatement preparedStatement;
101         
102         @Mock
103         ResultSet resultSet;
104         
105         @Mock
106         java.sql.Clob clob;
107         
108         @Mock
109         FileInputStream fileInputStream;
110         
111         @Before
112         public void setUp() throws Exception {          
113                 
114                 PowerMockito.mockStatic(Globals.class);
115                 PowerMockito.mockStatic(AppUtils.class);
116                 PowerMockito.mockStatic(DbUtils.class);
117                 PowerMockito.mockStatic(AppUtils.class);
118                 PowerMockito.mockStatic(ESAPI.class);
119                                                 
120                 MockitoAnnotations.initMocks(this);
121                 
122                 Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(reportRuntime);
123                 Mockito.when(httpServletRequest.getSession()).thenReturn(httpSession);
124
125                 Mockito.when(reportRuntime.getReportID()).thenReturn(REPORT_ID);
126                 Mockito.when(AppUtils.getUserID(httpServletRequest)).thenReturn("USER1");
127                 
128                 PowerMockito.when(ESAPI.encoder()).thenReturn(encoder);
129                 
130                 createInstanceOfReportSchedule_case1();
131                 createInstanceOfReportSchedule_case2();
132
133         }
134
135         private void createInstanceOfReportSchedule_case1() throws Exception {
136                 String load_schedule_data = "SELECT rs.enabled_yn, DATE_FORMAT(rs.start_date, '%m/%d/%Y') start_date, DATE_FORMAT(rs.end_date, '%m/%d/%Y') end_date, DATE_FORMAT(rs.run_date, '%m/%d/%Y') run_date, coalesce(DATE_FORMAT(rs.run_date, '%h'), '12') run_hour, coalesce(DATE_FORMAT(rs.run_date, '%i'), '00') run_min, coalesce(DATE_FORMAT(rs.run_date, '%p'), 'AM') run_ampm, rs.recurrence, rs.conditional_yn, rs.notify_type, rs.max_row, rs.initial_formfields, rs.schedule_id, coalesce(DATE_FORMAT(rs.end_date, '%h'), '11') end_hour, coalesce(DATE_FORMAT(rs.end_date, '%i'), '45') end_min, coalesce(DATE_FORMAT(rs.end_date, '%p'), 'PM') end_ampm, encrypt_yn, attachment_yn FROM cr_report_schedule rs WHERE rs.rep_id = [reportID]";
137                 String load_schedule_getid = "SELECT rsu.user_id, concat(fuser.last_name,', ',fuser.first_name), fuser.login_id FROM cr_report_schedule_users rsu, fn_user fuser WHERE rsu.rep_id = [reportID]  AND rsu.schedule_id = [getScheduleID()] and rsu.user_id IS NOT NULL and rsu.user_id = fuser.user_id";
138                 String load_schedule_users = "SELECT rsu.role_id FROM cr_report_schedule_users rsu WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] AND rsu.role_id IS NOT NULL";
139                                 
140                 PowerMockito.when(Globals.getLoadScheduleData()).thenReturn(load_schedule_data);
141                 PowerMockito.when(Globals.getLoadScheduleGetId()).thenReturn(load_schedule_getid);
142                 PowerMockito.when(Globals.getLoadScheduleUsers()).thenReturn(load_schedule_users);
143                 PowerMockito.when(AppUtils.isAdminUser(httpServletRequest)).thenReturn(true);
144                 PowerMockito.when(Globals.isWeblogicServer()).thenReturn(true);
145
146                 //reportSchedule = new ReportSchedule(REPORT_ID, USER_ID, false, httpServletRequest);
147                 //String dataArray[] = {"Y", "10/10/2018", "10/10/2999", "01/11/2018", "9", "10", "AM", "Y", "Y", "0", "512","", "2000", "10", "30", "PM," };           
148                 
149                 PowerMockito.when(DbUtils.getConnection()).thenReturn(connection);
150                 
151                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
152                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
153                 Mockito.when(resultSet.next()).thenReturn(true);
154                 Mockito.when(resultSet.getClob(Mockito.anyInt())).thenReturn(clob);
155
156                 String source = "This is the source of my input stream";
157                 InputStream inputStream = IOUtils.toInputStream(source, "UTF-8");
158                 
159                 Mockito.when(clob.getAsciiStream()).thenReturn(inputStream);
160
161                 //SI_REPORT_RUNTIME
162                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyString())).thenReturn(dataSet1);
163                 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
164                 
165                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("Some Value1");
166                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyString())).thenReturn("Some Value2");
167
168                 reportSchedule = new ReportSchedule(REPORT_ID, USER_ID, true, httpServletRequest);
169
170                 
171                 /*
172                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyObject())).thenAnswer(new Answer<String>() {
173
174                         @Override
175                         public String answer(InvocationOnMock invocation) throws Throwable {
176                                 Object args[] = invocation.getArguments();
177                                 int columnIndex= 0;
178                                 
179                                 try {
180                                         columnIndex = Integer.parseInt((String)args[1]);
181                                 } catch (Exception e) {
182                                         if ("encrypt_yn".equals((String)args[1]))
183                                 }
184                                 
185                                 
186                                 return null;
187                         }
188                 });
189                 */
190         }
191         
192         private void createInstanceOfReportSchedule_case2() throws Exception {
193                 String load_schedule_data = "SELECT rs.enabled_yn, DATE_FORMAT(rs.start_date, '%m/%d/%Y') start_date, DATE_FORMAT(rs.end_date, '%m/%d/%Y') end_date, DATE_FORMAT(rs.run_date, '%m/%d/%Y') run_date, coalesce(DATE_FORMAT(rs.run_date, '%h'), '12') run_hour, coalesce(DATE_FORMAT(rs.run_date, '%i'), '00') run_min, coalesce(DATE_FORMAT(rs.run_date, '%p'), 'AM') run_ampm, rs.recurrence, rs.conditional_yn, rs.notify_type, rs.max_row, rs.initial_formfields, rs.schedule_id, coalesce(DATE_FORMAT(rs.end_date, '%h'), '11') end_hour, coalesce(DATE_FORMAT(rs.end_date, '%i'), '45') end_min, coalesce(DATE_FORMAT(rs.end_date, '%p'), 'PM') end_ampm, encrypt_yn, attachment_yn FROM cr_report_schedule rs WHERE rs.rep_id = [reportID]";
194                 String load_schedule_getid = "SELECT rsu.user_id, concat(fuser.last_name,', ',fuser.first_name), fuser.login_id FROM cr_report_schedule_users rsu, fn_user fuser WHERE rsu.rep_id = [reportID]  AND rsu.schedule_id = [getScheduleID()] and rsu.user_id IS NOT NULL and rsu.user_id = fuser.user_id";
195                 String load_schedule_users = "SELECT rsu.role_id FROM cr_report_schedule_users rsu WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] AND rsu.role_id IS NOT NULL";
196                                 
197                 String new_schedule_data = "select coalesce(max(schedule_id),0)+1  AS sequence from cr_report_schedule";
198                                 
199                 PowerMockito.when(Globals.getLoadScheduleData()).thenReturn(load_schedule_data);
200                 PowerMockito.when(Globals.getLoadScheduleGetId()).thenReturn(load_schedule_getid);
201                 PowerMockito.when(Globals.getLoadScheduleUsers()).thenReturn(load_schedule_users);
202                 PowerMockito.when(AppUtils.isAdminUser(httpServletRequest)).thenReturn(false);
203                 PowerMockito.when(Globals.isWeblogicServer()).thenReturn(false);
204                 PowerMockito.when(Globals.getNewScheduleData()).thenReturn(new_schedule_data);
205                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(false);
206                 
207                 PowerMockito.when(Globals.getUseLoginIdInSchedYN()).thenReturn("Y");
208                                 
209                 //reportSchedule = new ReportSchedule(REPORT_ID, USER_ID, false, httpServletRequest);
210                 //String dataArray[] = {"Y", "10/10/2018", "10/10/2999", "01/11/2018", "9", "10", "AM", "Y", "Y", "0", "512","", "2000", "10", "30", "PM," };           
211                 
212                 PowerMockito.when(DbUtils.getConnection()).thenReturn(connection);
213                 
214                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
215                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
216                 Mockito.when(resultSet.next()).thenReturn(true);
217                 Mockito.when(resultSet.getClob(Mockito.anyInt())).thenReturn(clob);
218
219                 String source = "This is the source of my input stream";
220                 InputStream inputStream = IOUtils.toInputStream(source, "UTF-8");
221                 
222                 Mockito.when(clob.getAsciiStream()).thenReturn(inputStream);
223
224                 //SI_REPORT_RUNTIME
225                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyString())).thenReturn(dataSet1);
226                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
227                 
228                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("Some Value1");
229                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyString())).thenReturn("Some Value2");
230
231                 reportSchedule = new ReportSchedule(REPORT_ID, "SCHDULE_ID", USER_ID, httpServletRequest);
232
233                 /*
234                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyObject())).thenAnswer(new Answer<String>() {
235
236                         @Override
237                         public String answer(InvocationOnMock invocation) throws Throwable {
238                                 Object args[] = invocation.getArguments();
239                                 int columnIndex= 0;
240                                 
241                                 try {
242                                         columnIndex = Integer.parseInt((String)args[1]);
243                                 } catch (Exception e) {
244                                         if ("encrypt_yn".equals((String)args[1]))
245                                 }
246                                 
247                                 
248                                 return null;
249                         }
250                 });
251                 */
252         }
253
254         
255         
256         @Test
257         public void testAddEmailToUser() {              
258                 reportSchedule.addEmailToUser("UserID1", "UserName1");
259                 reportSchedule.addEmailToUser("UserID2", "UserName2");
260                 reportSchedule.addEmailToUser("UserID2", "UserName2");
261
262         }
263         
264         @Test
265         public void testPersistScheduleData_case1() throws Exception {
266                 reportSchedule.persistScheduleData(connection, httpServletRequest);
267         }
268         
269         @Test
270         public void testPersistScheduleData_RowCount_case1() throws Exception {
271                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
272                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
273                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
274                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
275                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
276                 
277                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
278                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
279                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
280                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
281                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
282                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
283                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
284                 
285                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
286                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
287                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
288                                                         
289                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_LOCAL);
290                 
291                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
292                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
293                 Mockito.when(resultSet.next()).thenReturn(true);
294                 
295                 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
296                 
297                 reportSchedule.setDownloadLimit("1000");
298                 reportSchedule.setSchedEnabled("N");
299                 reportSchedule.setFormFields("Field1");
300                 reportSchedule.setNotify_type("1");
301                 reportSchedule.setStartDate("10/10/2018");
302                 reportSchedule.setEndDate("10/10/2019");
303                 reportSchedule.setRunDate("10/10/2019");
304                 reportSchedule.setRunHour("10");
305                 reportSchedule.setRunMin("10");
306                 reportSchedule.setRunAMPM("PM");
307                 reportSchedule.setRecurrence("Y");
308                 reportSchedule.setAttachmentMode("N");          
309                 reportSchedule.setConditionSQL("SELECT coalesce(cr.owner_id, cr.create_id) owner_id, cr.create_id, DATE_FORMAT(cr.create_date, '[Globals.getTimeFormat()]') create_date, maint_id, DATE_FORMAT(cr.maint_date, '[Globals.getTimeFormat()]') update_date, cr.menu_id, cr.menu_approved_yn FROM cr_report cr WHERE cr.rep_id= [reportID]");
310                 
311                 reportSchedule.persistScheduleData(connection, httpServletRequest);
312         }
313         
314         @Test
315         public void testPersistScheduleData_RowCount_case2() throws Exception {
316                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
317                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
318                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
319                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
320                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
321                 
322                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
323                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
324                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
325                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
326                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
327                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
328                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
329                 
330                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
331                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
332                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
333                                                         
334                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_DEV);
335                 
336                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
337                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
338                 Mockito.when(resultSet.next()).thenReturn(true);
339                 
340                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
341                 
342                 reportSchedule.setSchedEnabled("N");
343                 reportSchedule.setConditionSQL("SELECT coalesce(cr.owner_id, cr.create_id) owner_id, cr.create_id, DATE_FORMAT(cr.create_date, '[Globals.getTimeFormat()]') create_date, maint_id, DATE_FORMAT(cr.maint_date, '[Globals.getTimeFormat()]') update_date, cr.menu_id, cr.menu_approved_yn FROM cr_report cr WHERE cr.rep_id= [reportID]");
344                 
345                 reportSchedule.persistScheduleData(connection, httpServletRequest);
346         }
347         
348         
349         @Test
350         public void testDeleteScheduleData_case1() throws RaptorException {
351                 String delete_schedule_data = "SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
352                 String delete_schedule_data_users = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID]  and schedule_id = [getScheduleID()]";
353                 String delete_schedule_data_id = "DELETE FROM cr_report_schedule where rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
354                                 
355                 PowerMockito.when(Globals.getDeleteScheduleData()).thenReturn(delete_schedule_data);
356                 PowerMockito.when(Globals.getDeleteScheduleDataUsers()).thenReturn(delete_schedule_data_users);
357                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
358                 PowerMockito.when(Globals.getDeleteScheduleDataId()).thenReturn(delete_schedule_data_id);
359                 
360                 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
361         
362                 reportSchedule.deleteScheduleData(connection);
363         }
364
365         @Test
366         public void testDeleteScheduleData_case2() throws RaptorException {
367                 String delete_schedule_data = "SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
368                 String delete_schedule_data_users = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID]  and schedule_id = [getScheduleID()]";
369                 String delete_schedule_data_id = "DELETE FROM cr_report_schedule where rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
370                                 
371                 PowerMockito.when(Globals.getDeleteScheduleData()).thenReturn(delete_schedule_data);
372                 PowerMockito.when(Globals.getDeleteScheduleDataUsers()).thenReturn(delete_schedule_data_users);
373                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
374                 PowerMockito.when(Globals.getDeleteScheduleDataId()).thenReturn(delete_schedule_data_id);
375                 
376                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
377         
378                 reportSchedule.deleteScheduleData(connection);
379         }
380         
381         @Test(expected=RaptorException.class)
382         public void testDeleteScheduleData_case3() throws RaptorException {
383                 String delete_schedule_data = "SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
384                                 
385                 PowerMockito.when(Globals.getDeleteScheduleData()).thenReturn(delete_schedule_data);
386                 PowerMockito.when(DbUtils.startTransaction()).thenReturn(null);
387                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
388
389                 PowerMockito.doThrow(new ReportSQLException("Failed to save data...")).when(DbUtils.class);
390                 DbUtils.commitTransaction(Mockito.anyObject());
391                 
392                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
393                 
394                 reportSchedule.deleteScheduleData(null);
395         }
396         
397         @Test
398         public void testDeleteScheduleData_case4() throws RaptorException {
399                 reportSchedule.setReportID("-1");               
400                 reportSchedule.deleteScheduleData(null);
401         }
402                         
403         
404         @Test(expected=RuntimeException.class)
405         public void testLoadConditionalSQL_Error_case1() throws Exception {
406                 String load_cond_sql = "SELECT condition_large_sql FROM cr_report_schedule WHERE schedule_id=?";
407                                 
408                 Mockito.when(DbUtils.getConnection()).thenReturn(connection);
409                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
410                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
411                 PowerMockito.when(Globals.isWeblogicServer()).thenReturn(true);
412                 Mockito.when(resultSet.next()).thenReturn(false);
413                 
414                 PowerMockito.when(Globals.getLoadCondSql()).thenReturn(load_cond_sql);
415                 
416                 ReportSchedule.loadConditionalSQL("scheduleId#123");
417         }
418         
419         /*
420         @Test
421         public void testLoadConditionalSQL_Error_case2() throws Exception {
422         
423                 String load_cond_sql = "SELECT condition_large_sql FROM cr_report_schedule WHERE schedule_id=?";
424                 Mockito.when(DbUtils.getConnection()).thenReturn(connection);
425                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
426                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
427                 Mockito.when(Globals.isWeblogicServer()).thenReturn(false);
428                 Mockito.when(Globals.isPostgreSQL()).thenReturn(false);
429                 Mockito.when(Globals.isMySQL()).thenReturn(true);
430                 
431                 Mockito.when(resultSet.next()).thenReturn(false);
432                 
433                 PowerMockito.when(Globals.getLoadCondSql()).thenReturn(load_cond_sql);
434                 
435                 ReportSchedule.loadConditionalSQL("scheduleId#123");
436         }*/
437         
438         
439         /*
440
441         @Test
442         public void testAddEmailArrayToUser() {
443                 fail("Not yet implemented");
444         }
445
446         @Test
447         public void testRemoveEmailToUser() {
448                 fail("Not yet implemented");
449         }
450
451         @Test
452         public void testAddEmailToRole() {
453                 fail("Not yet implemented");
454         }
455
456         @Test
457         public void testAddEmailArrayToRole() {
458                 fail("Not yet implemented");
459         }
460
461         @Test
462         public void testRemoveEmailToRole() {
463                 fail("Not yet implemented");
464         }
465
466         @Test
467         public void testPersistScheduleData() {
468                 fail("Not yet implemented");
469         }
470
471         @Test
472         public void testDeleteScheduleData() {
473                 fail("Not yet implemented");
474         }
475
476         @Test
477         public void testLoadConditionalSQL() {
478                 fail("Not yet implemented");
479         }
480         */
481
482 }