re base code
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / externalApis / UserAPIs.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 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.externalApis;
22
23 import com.google.gson.Gson;
24 import com.google.gson.reflect.TypeToken;
25 import org.junit.Rule;
26 import org.junit.rules.TestName;
27 import org.openecomp.portalsdk.core.restful.domain.EcompRole;
28 import org.openecomp.portalsdk.core.restful.domain.EcompUser;
29 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
30 import org.openecomp.sdc.be.model.Resource;
31 import org.openecomp.sdc.be.model.User;
32 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
33 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
34 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
35 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
36 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
37 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
38 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
39 import org.openecomp.sdc.ci.tests.utils.rest.EcompUserRestUtils;
40 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
41 import org.openecomp.sdc.ci.tests.utils.rest.UserRestUtils;
42 import org.testng.Assert;
43 import org.testng.annotations.Test;
44
45 import java.io.IOException;
46 import java.lang.reflect.Type;
47 import java.util.*;
48
49 import static org.testng.AssertJUnit.assertFalse;
50 import static org.testng.AssertJUnit.assertTrue;
51
52 public class UserAPIs extends ComponentBaseTest {
53         
54         @Rule
55         public static TestName name = new TestName();
56
57         public UserAPIs() {
58                 super(name, UserAPIs.class.getName());
59         }
60
61         public User adminUser = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
62
63         
64         @Test
65         public void createUserAllPosibleRolesThenDeactivate() throws Exception {
66                 
67                 EcompUser ecompUser = new EcompUser();
68                 EcompRole ecompRole = new EcompRole();
69                 
70                 List<EcompRole> allRoles = getAllRoles();
71         
72                 for (EcompRole ecompRole2 : allRoles) {
73                         try {
74                                 
75                                 ///get list of users
76                                 List<EcompUser> allusersList = getAllusersList();
77                                 int sizeBeforeChange = allusersList.size();
78         
79                                 //create user
80                                 ecompUser.setLoginId(getUser());
81                                 ecompRole.setId((long) ecompRole2.getId());
82                                 ecompRole.setName(ecompRole2.getName());
83                                 System.out.println(ecompRole2.getName());
84                                 Set<EcompRole> setRoles = new HashSet<EcompRole>();
85                                 setRoles.add(ecompRole);
86                                 ecompUser.setRoles(setRoles);
87                                 RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
88                                 BaseRestUtils.checkSuccess(pushUser);
89                                 
90                                 ///get list of users verify list size changed
91                                 allusersList = getAllusersList();
92                                 int sizeAfterChange = allusersList.size();
93                                 
94                                 Assert.assertEquals(sizeBeforeChange + 1, sizeAfterChange, "Expected that list will change.");
95                                 sizeBeforeChange = sizeAfterChange;
96                                 pushUser = EcompUserRestUtils.pushUser(ecompUser);      
97                                 
98                                 //deactivate user
99                                 ecompRole = new EcompRole();;
100                                 List<EcompRole> list= new ArrayList<EcompRole>();
101                                 list.add(ecompRole);
102                                 
103                                 RestResponse deactivateUserResponse = EcompUserRestUtils.pushUserRoles(ecompUser.getLoginId(), list);
104                                 BaseRestUtils.checkSuccess(deactivateUserResponse);
105                                 
106                                 ///get list of users verify list size changed
107                                 allusersList = getAllusersList();
108                                 sizeAfterChange = allusersList.size();
109                                 Assert.assertEquals(sizeBeforeChange, sizeAfterChange + 1, "Expected that list will change.");
110                                 
111                                 } finally {
112                                 deleteUser(ecompUser.getLoginId());
113                         }
114                                                         
115                 }
116                                         
117         }
118         
119         @Test
120         public void createSameUserTwiceTest() throws Exception {
121                 
122                 EcompUser ecompUser = new EcompUser();
123                 EcompRole ecompRole = new EcompRole();
124                 try {
125                         
126                         ///get list of users
127                         List<EcompUser> allusersList = getAllusersList();
128                         int sizeBeforeChange = allusersList.size();
129
130                         //create user
131                         ecompUser.setLoginId(getUser());
132                         ecompRole.setId((long) 1);
133                         ecompRole.setName("TESTER");
134                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
135                         setRoles.add(ecompRole);
136                         ecompUser.setRoles(setRoles);
137                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
138                         BaseRestUtils.checkSuccess(pushUser);
139                         
140                         ///get list of users verify list size changed
141                         allusersList = getAllusersList();
142                         int sizeAfterChange = allusersList.size();
143                                         
144                         assertTrue("List is Equel" , sizeBeforeChange != sizeAfterChange );
145                         pushUser = EcompUserRestUtils.pushUser(ecompUser);      
146                         
147                 } finally {
148                         deleteUser(ecompUser.getLoginId());
149                 }
150                 
151         }
152         
153         @Test
154         public void createSameUserTwiceDiffrentDataTest() throws Exception {
155                 
156                 EcompUser ecompUser = new EcompUser();
157                 EcompRole ecompRole = new EcompRole();
158                 try {
159                         ///get list of users
160                         List<EcompUser> allusersList = getAllusersList();
161                         int sizeBeforeChange = allusersList.size();
162
163                         //create user
164                         ecompUser.setLoginId(getUser());
165                         ecompRole.setId((long) 1);
166                         ecompRole.setName("TESTER");
167                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
168                         setRoles.add(ecompRole);
169                         ecompUser.setRoles(setRoles);
170                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
171                         BaseRestUtils.checkSuccess(pushUser);
172                         
173                         ///get list of users verify list size changed
174                         allusersList = getAllusersList();
175                         int sizeAfterChange = allusersList.size();
176                                         
177                         assertTrue("Lists are Equal" , sizeBeforeChange != sizeAfterChange );
178                         
179                         //update role
180                         ecompRole.setId((long) 2);
181                         ecompRole.setName("DESIGNER");
182                         setRoles = new HashSet<EcompRole>();
183                         setRoles.add(ecompRole);
184                         ecompUser.setRoles(setRoles);
185                         
186                         pushUser = EcompUserRestUtils.pushUser(ecompUser);      
187                         
188                 } finally {
189                         deleteUser(ecompUser.getLoginId());
190                 }
191                 
192         }
193         
194         @Test
195         public void updateUserRoleTest() throws Exception {
196                 
197                 EcompUser ecompUser = new EcompUser();
198                 EcompRole ecompRole = new EcompRole();
199                 try {
200                         //create user
201                         ecompUser.setLoginId(getUser());
202                         ecompRole.setId((long) 1);
203                         ecompRole.setName("TESTER");
204                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
205                         setRoles.add(ecompRole);
206                         ecompUser.setRoles(setRoles);
207                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
208                         BaseRestUtils.checkSuccess(pushUser);
209                         
210                         List<EcompRole> userRolesBefore = getUserRoles(ecompUser);
211                         
212                         //update role
213                         ecompRole = new EcompRole();
214                         ecompRole.setId((long) 2);
215                         ecompRole.setName("DESIGNER");
216                         List<EcompRole> list= new ArrayList<EcompRole>();
217                         list.add(ecompRole);
218                         
219                         EcompUserRestUtils.pushUserRoles(ecompUser.getLoginId(), list);
220                         
221                         List<EcompRole> userRolesAfter = getUserRoles(ecompUser); 
222                         
223                         assertFalse("role wasn't changed", userRolesBefore.equals(userRolesAfter));
224                 } finally {
225                         deleteUser(ecompUser.getLoginId());
226                 }
227                 
228         }
229
230         @Test
231         public void addUserCreateResource() throws Exception {
232                 
233                 EcompUser ecompUser = new EcompUser();
234                 EcompRole ecompRole = new EcompRole();
235                 Resource resource = new Resource();
236                 
237                 try {
238                         //create user
239                         ecompUser.setLoginId(getUser());
240                         ecompRole.setId((long) 2);
241                         ecompRole.setName("DESIGNER");
242                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
243                         setRoles.add(ecompRole);
244                         ecompUser.setRoles(setRoles);
245                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
246                         BaseRestUtils.checkSuccess(pushUser);
247                         
248                         UserRoleEnum.DESIGNER.setUserId(ecompUser.getLoginId());
249                         resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
250                         
251                 } finally {
252                         ResourceRestUtils.deleteResource(resource.getUniqueId(), adminUser.getUserId());
253                         deleteUser(ecompUser.getLoginId());
254                 }
255                 
256         }
257         
258         // First try update to Tester and verify it not success
259         // Then try to deactivate and verify it not success
260         @Test
261         public void changeUserRoleWithCheckOutResourceThenDeactivate() throws Exception {
262                 EcompUser ecompUser = new EcompUser();
263                 EcompRole ecompRole = new EcompRole();
264                 Resource resource = new Resource();             
265                 try {
266                         //create user
267                         ecompUser.setLoginId(getUser());
268                         ecompRole.setId((long) 2);
269                         ecompRole.setName("DESIGNER");
270                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
271                         setRoles.add(ecompRole);
272                         ecompUser.setRoles(setRoles);
273                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
274                         BaseRestUtils.checkSuccess(pushUser);
275                         
276                         UserRoleEnum.DESIGNER.setUserId(ecompUser.getLoginId());
277                         resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
278                         
279                         int sizeBeforeChange = getAllusersList().size();
280                         
281                         //update role
282                         ecompRole = new EcompRole();
283                         ecompRole.setId((long) 1);
284                         ecompRole.setName("TESTER");
285                         List<EcompRole> list= new ArrayList<EcompRole>();
286                         list.add(ecompRole);
287                         
288                         RestResponse pushUserRoles = EcompUserRestUtils.pushUserRoles(ecompUser.getLoginId(), list);
289                         Assert.assertEquals(pushUserRoles.getErrorCode(), (Integer)BaseRestUtils.STATUS_CODE_UNSUPPORTED_ERROR, "Not correct response code");
290                         
291                         //deactivate user
292                         ecompRole = new EcompRole();;
293                         list= new ArrayList<EcompRole>();
294                         list.add(ecompRole);
295                         
296                         RestResponse deactivateUserResponse = EcompUserRestUtils.pushUserRoles(ecompUser.getLoginId(), list);
297                         Assert.assertEquals(deactivateUserResponse.getErrorCode(), (Integer)BaseRestUtils.STATUS_CODE_UNSUPPORTED_ERROR, "Not correct response code");
298                         
299                         ///get list of users verify list size changed
300                         int sizeAfterChange = getAllusersList().size();
301                         Assert.assertEquals(sizeBeforeChange, sizeAfterChange, "Expected that list will not change.");
302                         
303                 } finally {
304                         ResourceRestUtils.deleteResource(resource.getUniqueId(), adminUser.getUserId());
305                         deleteUser(ecompUser.getLoginId());
306                 }
307         }
308         
309         /*@Test
310         public void deactivateUserRoleWithStartTestingResource() throws Exception {
311                 
312                 EcompUser ecompUser = new EcompUser();
313                 EcompRole ecompRole = new EcompRole();
314                 Resource resource= new Resource();
315
316                 try {
317                         //create user
318                         ecompUser.setLoginId(getUser());
319                         ecompRole.setId((long) 2);
320                         ecompRole.setName("DESIGNER");
321                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
322                         setRoles.add(ecompRole);
323                         ecompUser.setRoles(setRoles);
324                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
325                         BaseRestUtils.checkSuccess(pushUser);
326                         int sizeBeforeChange = getAllusersList().size();
327                         UserRoleEnum.DESIGNER.setUserId(ecompUser.getLoginId());
328                         
329                         resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
330                         AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFICATIONREQUEST, true);
331                         
332                         
333                         //update role
334                         ecompRole = new EcompRole();
335                         ecompRole.setId((long) 1);
336                         ecompRole.setName("TESTER");
337                         List<EcompRole> list= new ArrayList<EcompRole>();
338                         list.add(ecompRole);
339                         
340                         RestResponse pushUserRoles = EcompUserRestUtils.pushUserRoles(ecompUser.getLoginId(), list);
341                         BaseRestUtils.checkSuccess(pushUserRoles);
342                         
343                         UserRoleEnum.TESTER.setUserId(ecompUser.getLoginId());
344                         AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.TESTER, LifeCycleStatesEnum.STARTCERTIFICATION, true);
345                         
346                         //deactivate user
347                         ecompRole = new EcompRole();;
348                         list= new ArrayList<EcompRole>();
349                         list.add(ecompRole);
350                         
351                         RestResponse deactivateUserResponse = EcompUserRestUtils.pushUserRoles(ecompUser.getLoginId(), list);
352                         Assert.assertEquals(deactivateUserResponse.getErrorCode(), (Integer)BaseRestUtils.STATUS_CODE_UNSUPPORTED_ERROR, "Not correct response code");
353                         
354                         ///get list of users verify list size changed
355                         int sizeAfterChange = getAllusersList().size();
356                         Assert.assertEquals(sizeBeforeChange, sizeAfterChange, "Expected that list will not change.");
357                         
358                 } finally {
359                         ResourceRestUtils.deleteResource(resource.getUniqueId(), adminUser.getUserId());
360                         deleteUser(ecompUser.getLoginId());
361                 }
362         }*/
363         
364         @Test
365         public void changeUserRoleWithStartTestingResource() throws Exception {
366                 
367                 EcompUser ecompUser = new EcompUser();
368                 EcompRole ecompRole = new EcompRole();
369                 Resource resource= new Resource();
370
371                 try {
372                         //create user
373                         ecompUser.setLoginId(getUser());
374                         ecompRole.setId((long) 2);
375                         ecompRole.setName("DESIGNER");
376                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
377                         setRoles.add(ecompRole);
378                         ecompUser.setRoles(setRoles);
379                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
380                         BaseRestUtils.checkSuccess(pushUser);
381                         
382                         UserRoleEnum.DESIGNER.setUserId(ecompUser.getLoginId());
383                         
384                         resource = AtomicOperationUtils.createResourceByType(ResourceTypeEnum.VF, UserRoleEnum.DESIGNER, true).left().value();
385                         AtomicOperationUtils.changeComponentState(resource, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.STARTCERTIFICATION, true);
386                         
387                         
388                         //update role
389                         ecompRole = new EcompRole();
390                         ecompRole.setId((long) 1);
391                         ecompRole.setName("TESTER");
392                         List<EcompRole> list= new ArrayList<EcompRole>();
393                         list.add(ecompRole);
394                         
395                         RestResponse pushUserRoles = EcompUserRestUtils.pushUserRoles(ecompUser.getLoginId(), list);
396                         BaseRestUtils.checkSuccess(pushUserRoles);
397                         
398                 } finally {
399                         ResourceRestUtils.deleteResource(resource.getUniqueId(), adminUser.getUserId());
400                         deleteUser(ecompUser.getLoginId());
401                 }
402         }
403         
404         @Test
405         public void fillAllEcompFields() throws Exception {
406                 EcompUser ecompUser = new EcompUser();
407                 EcompRole ecompRole = new EcompRole();
408                 try {
409
410                         ///get list of users
411                         List<EcompUser> allusersList = getAllusersList();
412                         int sizeBeforeChange = allusersList.size();
413
414                         //create user
415                         ecompUser.setLoginId(getUser());
416                         ecompUser.setOrgId((long) 123);
417                         ecompUser.setManagerId("ci4321");
418                         ecompUser.setFirstName("firstName");
419                         ecompUser.setMiddleInitial("middleInitial");
420                         ecompUser.setLastName("lastName");
421                         ecompUser.setPhone("phone");
422                         ecompUser.setEmail("email@email.com");
423                         ecompUser.setHrid("hrid");
424                         ecompUser.setOrgUserId("orgUserId");
425                         ecompUser.setOrgCode("orgCode");
426                         ecompUser.setOrgManagerUserId("ci1234");
427                         ecompUser.setJobTitle("jobTitle");
428                         ecompUser.setActive(true);
429                         
430                         
431                         ecompRole.setId((long) 1);
432                         ecompRole.setName("TESTER");
433                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
434                         setRoles.add(ecompRole);
435                         ecompUser.setRoles(setRoles);
436                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
437                         BaseRestUtils.checkSuccess(pushUser);
438                         
439                         ///get list of users verify list size changed
440                         allusersList = getAllusersList();
441                         int sizeAfterChange = allusersList.size();
442                                         
443                         assertTrue("List is Equel" , sizeBeforeChange != sizeAfterChange );
444                         
445                 } finally {
446                         
447                         deleteUser(ecompUser.getLoginId());
448                 }
449         }
450         
451         @Test
452         public void missingMandatoryFieldRole() throws Exception {
453                 
454                 EcompUser ecompUser = new EcompUser();
455                 try {
456                         ///get list of users
457                         List<EcompUser> allusersList = getAllusersList();
458                         int sizeBeforeChange = allusersList.size();
459
460                         //create user
461                         ecompUser.setLoginId(getUser());
462                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
463                         BaseRestUtils.checkSuccess(pushUser);
464                         
465                         ///get list of users verify list size changed
466                         allusersList = getAllusersList();
467                         int sizeAfterChange = allusersList.size();
468                                         
469                         assertTrue("List is Equel" , sizeBeforeChange != sizeAfterChange );
470                         
471                 } finally {
472                         deleteUser(ecompUser.getLoginId());
473                 }
474         }
475         
476         @Test
477         public void missingMandatoryFieldATTid() throws Exception {
478                 
479                 EcompUser ecompUser = new EcompUser();
480                 EcompRole ecompRole = new EcompRole();
481                 try {
482                         
483                         //create user
484                         ecompUser.setLoginId("");
485                         ecompRole.setId((long) 1);
486                         ecompRole.setName("TESTER");
487                         Set<EcompRole> setRoles = new HashSet<EcompRole>();
488                         setRoles.add(ecompRole);
489                         ecompUser.setRoles(setRoles);
490                         RestResponse pushUser = EcompUserRestUtils.pushUser(ecompUser);
491                         assertTrue("wrong response code :" , pushUser.getErrorCode() == BaseRestUtils.STATUS_CODE_INVALID_CONTENT);
492                         
493                 } finally {
494                         deleteUser(ecompUser.getLoginId());
495                 }
496                 
497                 
498         }
499
500         private List<EcompRole> getUserRoles(EcompUser ecompUser) throws IOException {
501                 RestResponse userRoles = EcompUserRestUtils.getUserRoles(ecompUser.getLoginId());
502                 Type listType = new TypeToken<List<EcompRole>>() {}.getType();
503                 List<EcompRole> roleList = new Gson().fromJson(userRoles.getResponse(), listType);
504                 return roleList;
505         }
506
507         private void deleteUser(String userId) throws IOException {
508                 User defaultUser = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
509                 defaultUser.setUserId(userId);
510                 
511                 UserRestUtils.deleteUser(defaultUser, adminUser, true);
512         }
513         
514         private  List<EcompUser> getAllusersList() throws IOException {
515                 RestResponse allUsers = EcompUserRestUtils.getAllUsers();
516                 
517                 Type listType = new TypeToken<List<EcompUser>>() {}.getType();
518                 List<EcompUser> usersList = new Gson().fromJson(allUsers.getResponse(), listType);
519                 
520                 return usersList;
521         }
522         
523         private  List<EcompRole> getAllRoles() throws IOException {
524                 RestResponse allRoles = EcompUserRestUtils.getAllAvailableRoles();
525                 
526                 Type listType = new TypeToken<List<EcompRole>>() {}.getType();
527                 List<EcompRole> availableRoles = new Gson().fromJson(allRoles.getResponse(), listType);
528                 
529                 return availableRoles;
530         }
531         
532         private String getUser() {
533                 int nextInt = rnd.nextInt(8999) + 1000;
534 //              String returnMe = "ci"+ new BigInteger(getRandomNumber(4));
535                 String returnMe = "ci"+ nextInt;
536                 System.out.println(returnMe);
537                 
538                 
539                 return returnMe;
540         }
541         
542         private static Random rnd = new Random();
543
544         public static String getRandomNumber(int digCount) {
545             StringBuilder sb = new StringBuilder(digCount);
546             for(int i=1; i <= digCount; i++){
547                 sb.append((char)('0' + rnd.nextInt(10)));
548             }
549             return sb.toString();
550         }
551 }