Improve testing stability
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / validation / UserValidationsTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.components.validation;
22
23 import org.junit.jupiter.api.BeforeEach;
24 import org.junit.jupiter.api.Test;
25 import org.mockito.InjectMocks;
26 import org.mockito.Mock;
27 import org.mockito.Mockito;
28 import org.mockito.MockitoAnnotations;
29 import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentException;
30 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
31 import org.openecomp.sdc.be.config.ConfigurationManager;
32 import org.openecomp.sdc.be.dao.api.ActionStatus;
33 import org.openecomp.sdc.be.dao.utils.UserStatusEnum;
34 import org.openecomp.sdc.be.model.User;
35 import org.openecomp.sdc.be.user.Role;
36 import org.openecomp.sdc.be.user.UserBusinessLogic;
37
38 import java.util.LinkedList;
39 import java.util.List;
40 import org.openecomp.sdc.common.impl.ExternalConfiguration;
41 import org.openecomp.sdc.common.impl.FSConfigurationSource;
42
43 import static org.junit.jupiter.api.Assertions.*;
44
45 public class UserValidationsTest {
46
47         @InjectMocks
48         UserValidations testSubject;
49         
50         @Mock
51         UserBusinessLogic userAdmin;
52         
53         @BeforeEach
54         public void setUp() {
55                 //TestUtilsSdc.setFinalStatic(UserValidations.class, "log", LoggerFactory.getLogger(UserValidations.class));
56                 MockitoAnnotations.openMocks(this);
57                 new ConfigurationManager(new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be"));
58         }
59
60         @Test
61         public void testValidateUserExists() {
62                 String userId = "mock";
63                 User usr = new User();
64                 usr.setUserId(userId);
65                 usr.setStatus(UserStatusEnum.INACTIVE);
66                 Mockito.when(userAdmin.getUser(Mockito.anyString())).thenReturn(usr);
67
68                 assertThrows(ByActionStatusComponentException.class, () -> {
69                         testSubject.validateUserExists(userId);
70                 });
71                 Mockito.verify(userAdmin, Mockito.times(1)).getUser(Mockito.anyString());
72
73                 // default test
74                 usr.setStatus(UserStatusEnum.ACTIVE);
75                 User result = testSubject.validateUserExists(userId);
76                 assertNotNull(result);
77                 assertEquals(usr, result);
78         }
79
80         @Test
81         public void testValidateNonExistingUser2() {
82                 String userId = "mock";
83                 Mockito.when(userAdmin.getUser(Mockito.anyString())).thenThrow(new ByActionStatusComponentException(ActionStatus.USER_NOT_FOUND));
84
85                 assertThrows(ComponentException.class, () -> {
86                         testSubject.validateUserExists(userId);
87                 });
88                 Mockito.verify(userAdmin, Mockito.times(1)).getUser(Mockito.anyString());
89         }
90
91         @Test
92         public void testValidateUserRole() {
93                 User user = new User();
94                 List<Role> roles = new LinkedList<>();
95                 user.setRole(Role.DESIGNER.name());
96
97                 assertThrows(ByActionStatusComponentException.class, () -> {
98                         testSubject.validateUserRole(user, roles);
99                 });
100
101                 roles.add(Role.DESIGNER);
102                 assertDoesNotThrow(() -> testSubject.validateUserRole(user, roles));
103         }
104
105         @Test
106         public void testValidateUserExistsActionStatus() {
107                 String userId = "mock";
108                 ActionStatus result;
109                 User usr = new User();
110                 usr.setUserId(userId);
111                 usr.setStatus(UserStatusEnum.ACTIVE);
112
113                 Mockito.when(userAdmin.hasActiveUser(Mockito.anyString())).thenReturn(false);
114                 assertEquals(ActionStatus.RESTRICTED_OPERATION, testSubject.validateUserExistsActionStatus(userId));
115                 Mockito.verify(userAdmin, Mockito.times(1)).hasActiveUser(Mockito.anyString());
116
117                 Mockito.when(userAdmin.hasActiveUser(Mockito.anyString())).thenReturn(true);
118                 assertEquals(ActionStatus.OK, testSubject.validateUserExistsActionStatus(userId));
119                 Mockito.verify(userAdmin, Mockito.times(2)).hasActiveUser(Mockito.anyString());
120         }
121
122         @Test
123         public void testValidateUserExistsActionStatus2() {
124                 String userId = "mock";
125                 Mockito.when(userAdmin.hasActiveUser(Mockito.anyString())).thenThrow(new ByActionStatusComponentException((ActionStatus.USER_NOT_FOUND)));
126                 
127                 // default test
128                 assertThrows(ComponentException.class, () -> {
129                         testSubject.validateUserExistsActionStatus(userId);
130                 });
131                 Mockito.verify(userAdmin, Mockito.times(1)).hasActiveUser(Mockito.anyString());
132         }
133         
134         @Test
135         public void testValidateUserNotEmpty() {
136                 User user = new User();
137                 user.setUserId("");
138                 String ecompErrorContext = "mock";
139                 User result;
140
141                 // default test
142                 assertThrows(ByActionStatusComponentException.class, () -> {
143                         testSubject.validateUserNotEmpty(user, ecompErrorContext);
144                 });
145
146                 user.setUserId("userId");
147                 result = testSubject.validateUserNotEmpty(user, ecompErrorContext);
148                 assertEquals(user, result);
149         }
150
151         @Test
152         public void testValidateNonExistingUser() {
153                 String userId = "";
154
155                 Mockito.when(userAdmin.getUser(Mockito.anyString())).thenThrow(new ByActionStatusComponentException(ActionStatus.USER_NOT_FOUND));
156                 
157                 // default test
158                 assertThrows(ComponentException.class, () -> {
159                         testSubject.validateUserExists(userId);
160                 });
161                 Mockito.verify(userAdmin, Mockito.times(1)).getUser(Mockito.anyString());
162         }
163 }