CADI AAF Integration and merging the code
[portal.git] / ecomp-portal-BE-common / src / test / java / org / onap / portalapp / portal / controller / UserRolesControllerTest.java
1 /*-
2  * ============LICENSE_START==========================================
3  * ONAP Portal
4  * ===================================================================
5  * Copyright (C) 2017-2018 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.portalapp.portal.controller;
39
40 import static org.junit.Assert.assertEquals;
41
42 import java.util.ArrayList;
43 import java.util.List;
44
45 import javax.servlet.http.HttpServletRequest;
46 import javax.servlet.http.HttpServletResponse;
47 import javax.servlet.http.HttpSession;
48
49 import org.junit.Before;
50 import org.junit.Test;
51 import org.junit.runner.RunWith;
52 import org.mockito.InjectMocks;
53 import org.mockito.Mock;
54 import org.mockito.Mockito;
55 import org.mockito.MockitoAnnotations;
56 import org.onap.portalapp.portal.controller.UserRolesController;
57 import org.onap.portalapp.portal.core.MockEPUser;
58 import org.onap.portalapp.portal.domain.EPUser;
59 import org.onap.portalapp.portal.domain.EcompAuditLog;
60 import org.onap.portalapp.portal.framework.MockitoTestSuite;
61 import org.onap.portalapp.portal.service.AdminRolesService;
62 import org.onap.portalapp.portal.service.SearchService;
63 import org.onap.portalapp.portal.service.UserRolesService;
64 import org.onap.portalapp.portal.transport.AppNameIdIsAdmin;
65 import org.onap.portalapp.portal.transport.AppWithRolesForUser;
66 import org.onap.portalapp.portal.transport.AppsListWithAdminRole;
67 import org.onap.portalapp.portal.transport.FieldsValidator;
68 import org.onap.portalapp.portal.transport.RoleInAppForUser;
69 import org.onap.portalapp.portal.transport.FieldsValidator.FieldName;
70 import org.onap.portalapp.portal.utils.EPCommonSystemProperties;
71 import org.onap.portalapp.portal.utils.EcompPortalUtils;
72 import org.onap.portalapp.util.EPUserUtils;
73 import org.onap.portalsdk.core.service.AuditService;
74 import org.onap.portalsdk.core.service.DataAccessService;
75 import org.onap.portalsdk.core.util.SystemProperties;
76 import org.powermock.core.classloader.annotations.PrepareForTest;
77 import org.powermock.modules.junit4.PowerMockRunner;
78
79 @RunWith(PowerMockRunner.class)
80 @PrepareForTest({EcompPortalUtils.class, EPCommonSystemProperties.class, EcompAuditLog.class, SystemProperties.class})
81 public class UserRolesControllerTest extends MockitoTestSuite {
82
83         String userid = "ab1234";
84
85         @Mock
86         UserRolesService userRolesService;
87         
88         @Mock
89         SearchService searchService;
90         
91         @Mock
92         AuditService auditService;
93         
94         @Mock
95         AdminRolesService adminRolesService;
96
97         @Mock
98         FieldsValidator fieldsValidator;
99
100         @InjectMocks
101         UserRolesController userRolesController = new UserRolesController();
102
103         @Mock
104         private DataAccessService dataAccessService;
105
106         @Before
107         public void setup() {
108                 MockitoAnnotations.initMocks(this);
109         }
110
111         MockitoTestSuite mockitoTestSuite = new MockitoTestSuite();
112
113         HttpServletRequest mockedRequest = mockitoTestSuite.getMockedRequest();
114         HttpServletResponse mockedResponse = mockitoTestSuite.getMockedResponse();
115
116         @Mock
117         EPUserUtils ePUserUtils = new EPUserUtils();
118
119         @Mock
120         EPUser epuser;
121
122         MockEPUser mockUser = new MockEPUser();
123
124         @Test
125         public void putAppWithUserRoleRequestTest() {
126
127                 FieldsValidator actualFieldsValidator = null;
128
129                 AppWithRolesForUser appWithRolesForUser = new AppWithRolesForUser();
130                 List<RoleInAppForUser> listofRoles = new ArrayList<RoleInAppForUser>();
131
132                 appWithRolesForUser.setOrgUserId("guest");
133                 appWithRolesForUser.setAppId((long) 550);
134                 appWithRolesForUser.setAppName("D2 Services Analytics Dashboard");
135                 appWithRolesForUser.setAppRoles(listofRoles);
136
137                 RoleInAppForUser roleInAppForUser = new RoleInAppForUser();
138                 roleInAppForUser.setIsApplied(false);
139                 roleInAppForUser.setRoleId((long) 1);
140                 roleInAppForUser.setRoleName("System Administrator");
141
142                 RoleInAppForUser roleInAppForUser1 = new RoleInAppForUser();
143                 roleInAppForUser1.setIsApplied(true);
144                 roleInAppForUser1.setRoleId((long) 16);
145                 roleInAppForUser1.setRoleName("Standard User");
146
147                 listofRoles.add(roleInAppForUser);
148                 listofRoles.add(roleInAppForUser1);
149                 EPUser user = mockUser.mockEPUser();
150                 FieldsValidator expectedFieldValidator = new FieldsValidator();
151                 List<FieldName> fields = new ArrayList<>();
152
153                 expectedFieldValidator.setHttpStatusCode((long) 200);
154                 expectedFieldValidator.setFields(fields);
155                 expectedFieldValidator.setErrorCode(null);
156                 HttpSession session = mockedRequest.getSession();
157                 session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME), user);
158
159                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
160                 Mockito.when(userRolesService.putUserAppRolesRequest(appWithRolesForUser, user))
161                                 .thenReturn(expectedFieldValidator);
162
163                 actualFieldsValidator = userRolesController.putAppWithUserRoleRequest(mockedRequest, appWithRolesForUser,
164                                 mockedResponse);
165                 assertEquals(expectedFieldValidator.getHttpStatusCode(), actualFieldsValidator.getHttpStatusCode());
166                 assertEquals(expectedFieldValidator.getErrorCode(), actualFieldsValidator.getErrorCode());
167                 assertEquals(expectedFieldValidator.getFields(), actualFieldsValidator.getFields());
168
169         }
170         @Test
171         public void testPutAppWithUserRoleStateForUser() {
172                 AppWithRolesForUser appWithRolesForUser =buildAppwithRoles();
173                 EPUser user = mockUser.mockEPUser();
174                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
175                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
176                 Mockito.when(adminRolesService.isAccountAdmin(user)).thenReturn(true);
177                 Mockito.when(userRolesService.setAppWithUserRoleStateForUser(user, appWithRolesForUser)).thenReturn(null);
178                 userRolesController.putAppWithUserRoleStateForUser(mockedRequest, appWithRolesForUser, mockedResponse); 
179                 
180         }
181         
182         @Test
183         public void testPutAppWithUserRoleStateForSuperAdminUser() {
184                 AppsListWithAdminRole adminRoleUser=buildAdminRoleUser();
185                 
186                 EPUser user = mockUser.mockEPUser();
187                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
188                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
189                 Mockito.when(adminRolesService.isAccountAdmin(user)).thenReturn(true);
190                 Mockito.when(adminRolesService.setAppsWithAdminRoleStateForUser( adminRoleUser)).thenReturn(true);
191                 userRolesController.putAppsWithAdminRoleStateForUser(mockedRequest, adminRoleUser, mockedResponse);     
192                 
193         }
194         
195         
196         
197         @Test
198         public void testPutAppWithUserRoleStateForAdminUser() {
199                 AppsListWithAdminRole adminRoleUser=buildAdminRoleUser();
200                 
201                 EPUser user = mockUser.mockEPUser();
202                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
203                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
204                 Mockito.when(adminRolesService.isAccountAdmin(user)).thenReturn(true);
205                 Mockito.when(adminRolesService.setAppsWithAdminRoleStateForUser( adminRoleUser)).thenReturn(true);
206                 userRolesController.putAppsWithAdminRoleStateForUser(mockedRequest, adminRoleUser, mockedResponse);     
207                 
208         }
209         @Test
210         public void testPutAppWithUserRoleStateForStandardUser() {
211                 AppWithRolesForUser appWithRolesForUser =buildAppwithRoles();
212                 EPUser user = mockUser.mockEPUser();
213                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
214                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
215                 Mockito.when(adminRolesService.isAccountAdmin(user)).thenReturn(false);
216                 userRolesController.putAppWithUserRoleStateForUser(mockedRequest, appWithRolesForUser, mockedResponse); 
217                 
218         }
219         
220         @Test
221         public void testPutAppWithUserRoleRequest() {
222                 AppWithRolesForUser appWithRolesForUser =buildAppwithRoles();
223                 EPUser user = mockUser.mockEPUser();
224                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
225                 FieldsValidator fieldsValidator=new FieldsValidator();
226                 fieldsValidator.setHttpStatusCode(200l);
227                 Mockito.when(userRolesService.putUserAppRolesRequest(appWithRolesForUser, user)).thenReturn(fieldsValidator);
228                 userRolesController.putAppWithUserRoleRequest(mockedRequest, appWithRolesForUser, mockedResponse);      
229                 
230         }
231         
232         @Test
233         public void testPutAppWithUserRoleBadRequest() {
234                 AppWithRolesForUser appWithRolesForUser =buildAppwithRoles();
235                 EPUser user = mockUser.mockEPUser();
236                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);               
237                 userRolesController.putAppWithUserRoleRequest(mockedRequest, appWithRolesForUser, mockedResponse);      
238                 
239         }
240         
241         private AppsListWithAdminRole buildAdminRoleUser() {
242                 AppsListWithAdminRole adminRoleUser=new AppsListWithAdminRole();
243                 ArrayList<AppNameIdIsAdmin> roles=new ArrayList<>();
244                 
245                 AppNameIdIsAdmin adminAppRole=new AppNameIdIsAdmin();
246                 adminAppRole.setAppName("test");
247                 adminAppRole.setIsAdmin(true);
248                 adminAppRole.setRestrictedApp(false);
249                 
250                 
251                 AppNameIdIsAdmin adminAppRole1=new AppNameIdIsAdmin();
252                 adminAppRole1.setAppName("Sample");
253                 adminAppRole1.setIsAdmin(true);
254                 adminAppRole1.setRestrictedApp(true);
255                 
256                 
257                 AppNameIdIsAdmin adminAppRole2=new AppNameIdIsAdmin();
258                 adminAppRole2.setAppName("testSample");
259                 adminAppRole2.setIsAdmin(false);
260                 adminAppRole2.setRestrictedApp(true);
261                 roles.add(adminAppRole);
262                 roles.add(adminAppRole1);
263                 roles.add(adminAppRole2);
264                 adminRoleUser.setAppsRoles(roles);
265                 
266                 
267                 return adminRoleUser;
268                 
269                 
270         }
271         
272         private AppWithRolesForUser buildAppwithRoles() {
273                 AppWithRolesForUser appWithRolesForUser = new AppWithRolesForUser();
274                 List<RoleInAppForUser> listofRoles = new ArrayList<RoleInAppForUser>();
275
276                 appWithRolesForUser.setOrgUserId("guest");
277                 appWithRolesForUser.setAppId((long) 550);
278                 appWithRolesForUser.setAppName("D2 Services Analytics Dashboard");
279                 appWithRolesForUser.setAppRoles(listofRoles);
280
281                 RoleInAppForUser roleInAppForUser = new RoleInAppForUser();
282                 roleInAppForUser.setIsApplied(false);
283                 roleInAppForUser.setRoleId((long) 1);
284                 roleInAppForUser.setRoleName("System Administrator");
285
286                 RoleInAppForUser roleInAppForUser1 = new RoleInAppForUser();
287                 roleInAppForUser1.setIsApplied(true);
288                 roleInAppForUser1.setRoleId((long) 16);
289                 roleInAppForUser1.setRoleName("Standard User");
290
291                 listofRoles.add(roleInAppForUser);
292                 listofRoles.add(roleInAppForUser1);
293                 appWithRolesForUser.setAppRoles(listofRoles);
294                 return appWithRolesForUser;
295         }
296         
297         @Test
298         public void getPhoneBookSearchResultBadPermissionsTest() {
299                 String searchString = "test";
300                 String actualResult = null;
301                 String expectedResult = null;
302                 
303                 EPUser user = mockUser.mockEPUser();
304                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
305                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
306                 Mockito.when(adminRolesService.isAccountAdmin(user)).thenReturn(false);
307                 Mockito.when(searchService.searchUsersInPhoneBook(searchString)).thenReturn(actualResult);
308                 
309                 actualResult = userRolesController.getPhoneBookSearchResult(mockedRequest, searchString, mockedResponse);
310                 assertEquals(expectedResult, actualResult);
311         
312         }
313         
314         @Test
315         public void getPhoneBookSearchResultValidationTest() {
316                 String searchString = " t";
317                 String actualResult = null;
318                 String expectedResult = null;
319                 
320                 EPUser user = mockUser.mockEPUser();
321                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
322                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
323                 Mockito.when(adminRolesService.isAccountAdmin(user)).thenReturn(false);
324                 Mockito.when(searchService.searchUsersInPhoneBook(searchString)).thenReturn(actualResult);
325                 
326                 actualResult = userRolesController.getPhoneBookSearchResult(mockedRequest, searchString, mockedResponse);
327                 assertEquals(expectedResult, actualResult);
328         
329         }       
330         
331         @Test
332         public void getPhoneBookSearchResultTest() {
333                 String searchString = "test";
334                 String actualResult = null;
335                 String expectedResult = null;
336                 
337                 EPUser user = mockUser.mockEPUser();
338                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
339                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
340                 Mockito.when(adminRolesService.isAccountAdmin(user)).thenReturn(false);
341                 Mockito.when(searchService.searchUsersInPhoneBook(searchString)).thenReturn(actualResult);
342                 
343                 actualResult = userRolesController.getPhoneBookSearchResult(mockedRequest, searchString, mockedResponse);
344                 assertEquals(expectedResult, actualResult);
345         
346         }
347         
348         @Test
349         public void getAppsWithAdminRoleStateForUserTest(){
350                 
351                 String orgUserId = "hb123f";
352                 AppsListWithAdminRole actualResult = new AppsListWithAdminRole();
353                 AppsListWithAdminRole expectedResult = new AppsListWithAdminRole();
354                 EPUser user = mockUser.mockEPUser();
355         //      PowerMockito.mockStatic(EcompPortalUtils.class);
356                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
357                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
358                 Mockito.when(adminRolesService.getAppsWithAdminRoleStateForUser(orgUserId)).thenReturn(actualResult);
359                 
360                 actualResult = userRolesController.getAppsWithAdminRoleStateForUser(mockedRequest, orgUserId, mockedResponse);
361                 assertEquals(expectedResult, actualResult);
362         }
363         
364         /*@Test
365         public void getAppsWithAdminRoleStateForUserBadRequestTest(){
366                 
367                 String orgUserId = "hb123f";
368                 AppsListWithAdminRole actualResult = null;
369                 AppsListWithAdminRole expectedResult = null;
370                 EPUser user = mockUser.mockEPUser();
371                 PowerMockito.mockStatic(EcompPortalUtils.class);
372                 PowerMockito.when(EcompPortalUtils.legitimateUserId(orgUserId)).thenReturn(false);
373                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
374                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
375                 Mockito.when(adminRolesService.getAppsWithAdminRoleStateForUser(orgUserId)).thenReturn(actualResult);
376                 
377                 actualResult = userRolesController.getAppsWithAdminRoleStateForUser(mockedRequest, orgUserId, mockedResponse);
378                 assertEquals(expectedResult, actualResult);
379         }*/
380         
381         @Test
382         public void putAppsWithAdminRoleStateForUserBadStatusCodeTest(){
383                 FieldsValidator actualFieldsValidator = null;
384                 AppsListWithAdminRole newAppsListWithAdminRoles = new  AppsListWithAdminRole();
385                 FieldsValidator expectedFieldsValidator = new FieldsValidator();
386                 List<FieldName> fieldNames = new ArrayList<FieldName>();
387                 expectedFieldsValidator.setErrorCode(null);
388                 expectedFieldsValidator.setFields(fieldNames);
389                 expectedFieldsValidator.setHttpStatusCode((long)200);
390                 
391                 EPUser user = mockUser.mockEPUser();
392                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(false);
393                 
394                 actualFieldsValidator = userRolesController.putAppsWithAdminRoleStateForUser(mockedRequest, newAppsListWithAdminRoles, mockedResponse);
395                 assertEquals(expectedFieldsValidator, actualFieldsValidator);
396         }
397         
398         
399         /*@Test
400         public void putAppsWithAdminRoleStateForUserTest() {
401                 
402                 FieldsValidator actualFieldsValidator = null;
403                 AppsListWithAdminRole newAppsListWithAdminRoles = new  AppsListWithAdminRole();
404                 EPUser user = mockUser.mockEPUser();
405                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
406                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
407                 Mockito.when(adminRolesService.isAccountAdmin(user)).thenReturn(false);
408                 PowerMockito.mockStatic(EPCommonSystemProperties.class);
409                 PowerMockito.mockStatic(EcompAuditLog.class);
410                 PowerMockito.mockStatic(SystemProperties.class);
411                 Mockito.when(SystemProperties.getProperty(EcompAuditLog.CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN)).thenReturn("1400");
412                 Mockito.when(SystemProperties.getProperty(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP)).thenReturn("1400");
413                 Mockito.when(SystemProperties.getProperty(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP)).thenReturn("1400");
414                 Mockito.when(SystemProperties.getProperty(SystemProperties.MDC_TIMER)).thenReturn("1400");
415                 
416                 actualFieldsValidator = userRolesController.putAppsWithAdminRoleStateForUser(mockedRequest, newAppsListWithAdminRoles, mockedResponse);
417
418                 System.out.println(actualFieldsValidator);
419                 Mockito.when(searchService.searchUsersInPhoneBook(searchString)).thenReturn(actualResult);
420                 
421                 actualResult = userRolesController.getPhoneBookSearchResult(mockedRequest, searchString, mockedResponse);
422                 assertEquals(expectedResult, actualResult);
423         
424         }*/
425         
426         /*@Test
427         public void putAppsWithAdminRoleStateForUserTest(){
428                 FieldsValidator actualFieldsValidator = null;
429                 AppsListWithAdminRole newAppsListWithAdminRoles = new  AppsListWithAdminRole();
430                 FieldsValidator expectedFieldsValidator = new FieldsValidator();
431                 List<FieldName> fieldNames = new ArrayList<FieldName>();
432                 expectedFieldsValidator.setErrorCode(null);
433                 expectedFieldsValidator.setFields(fieldNames);
434                 expectedFieldsValidator.setHttpStatusCode((long)200);
435                 
436                 EPUser user = mockUser.mockEPUser();
437                 PowerMockito.mockStatic(EPCommonSystemProperties.class);
438                 PowerMockito.mockStatic(EcompAuditLog.class);
439                 PowerMockito.mockStatic(SystemProperties.class);
440                 Mockito.when(adminRolesService.isSuperAdmin(user)).thenReturn(true);
441                 Mockito.when(adminRolesService.setAppsWithAdminRoleStateForUser(newAppsListWithAdminRoles));
442                 Mockito.when(EPUserUtils.getUserSession(mockedRequest)).thenReturn(user);
443
444         //      Mockito.call(auditService.logActivity(auditLog, null));
445 //              Mockito.when(SystemProperties.getProperty(EcompAuditLog.CD_ACTIVITY_UPDATE_ACCOUNT_ADMIN)).thenReturn("1400");
446 //              Mockito.when(SystemProperties.getProperty(EPCommonSystemProperties.AUDITLOG_BEGIN_TIMESTAMP)).thenReturn("1400");
447 //              Mockito.when(SystemProperties.getProperty(EPCommonSystemProperties.AUDITLOG_END_TIMESTAMP)).thenReturn("1400");
448 //              Mockito.when(SystemProperties.getProperty(SystemProperties.MDC_TIMER)).thenReturn("1400");
449                 
450                 actualFieldsValidator = userRolesController.putAppsWithAdminRoleStateForUser(mockedRequest, newAppsListWithAdminRoles, mockedResponse);
451                 assertEquals(expectedFieldsValidator, actualFieldsValidator);
452         }*/
453 }