re base code
[sdc.git] / ui-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / sanity / AdminUserManagment.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.ci.tests.execute.sanity;
22
23 import com.aventstack.extentreports.Status;
24 import org.openecomp.sdc.be.dao.api.ActionStatus;
25 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
26 import org.openecomp.sdc.be.model.User;
27 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum;
28 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
29 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
30 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
31 import org.openecomp.sdc.ci.tests.execute.setup.ExtentTestActions;
32 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
33 import org.openecomp.sdc.ci.tests.pages.AdminGeneralPage;
34 import org.openecomp.sdc.ci.tests.utilities.AdminWorkspaceUIUtilies;
35 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
36 import org.openecomp.sdc.ci.tests.utilities.ResourceUIUtils;
37 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
38 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
39 import org.openecomp.sdc.ci.tests.utils.rest.UserRestUtils;
40 import org.openecomp.sdc.ci.tests.verificator.ErrorMessageUIVerificator;
41 import org.openecomp.sdc.ci.tests.verificator.UserManagementVerificator;
42 import org.openqa.selenium.By;
43 import org.openqa.selenium.WebElement;
44 import org.testng.Assert;
45 import org.testng.annotations.DataProvider;
46 import org.testng.annotations.Test;
47
48 import java.io.IOException;
49 import java.util.List;
50
51 public class AdminUserManagment extends SetupCDTest {
52         
53         @DataProvider(name = "searchValues")
54         private final Object[][] searchString(){
55                 User newUser = createNewUserUsingAPI();
56                 GeneralUIUtils.getDriver().navigate().refresh();
57                 return new Object[][]{{newUser.getUserId(), newUser}, {newUser.getFirstName(), newUser}, {newUser.getLastName(), newUser}, {newUser.getEmail(), newUser}};
58         }
59         
60         //TC915101
61         @Test(dataProvider = "searchValues")
62         public void searchUserByCriterionsTest(String searchCriterion, User user) throws IOException{
63                 setLog(searchCriterion);
64                 AdminWorkspaceUIUtilies.searchForUser(searchCriterion);
65                 UserManagementVerificator.validateFirstRowDisplayedCorrectly(user);
66         }
67
68         //TC915100
69         @Test
70         public void createNewUserTest() throws Exception {
71                 
72                 String userId = generateValidUserId();
73                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
74                 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
75                 GeneralUIUtils.ultimateWait();
76                 UserManagementVerificator.validateUserCreated(userId, userRole);
77         }
78         
79         //TC922253
80         @Test
81         public void createNewUser_MacIdTest() throws Exception {
82                 
83                 String macId = generateValidMacId();
84                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
85                 AdminWorkspaceUIUtilies.createNewUser(macId, userRole);
86                 GeneralUIUtils.ultimateWait();
87                 UserManagementVerificator.validateUserCreated(macId, userRole);
88         }
89         
90         //TC922253
91         @Test
92         public void createExistingUserTest(){
93                 String userId = generateValidUserId();
94                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
95                 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
96                 ExtentTestActions.log(Status.INFO, "Trying to create the same user once again.");
97                 GeneralUIUtils.ultimateWait(); // extra wait, necessary for system with large user list
98                 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
99                 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.USER_ALREADY_EXIST);
100         }
101
102         
103         // design changed and now one letter user should exist  
104         //TC922253
105         @Test(enabled=false)
106         public void createInvalidMacIdTest(){
107                 
108                 if(true){
109 //                      throw new SkipException("Open bug 324032");
110                         ExtentTestActions.log(Status.INFO, "Open bug 324032");                  
111                 }
112                 
113                 String macId = generateValidMacId();
114                 StringBuilder invalidMacId = new StringBuilder(macId);
115                 invalidMacId.setCharAt(0, 'a');
116                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
117                 ExtentTestActions.log(Status.INFO, "Trying to create an invalid macId.");
118                 AdminWorkspaceUIUtilies.createNewUser(invalidMacId.toString(), userRole);
119                 GeneralUIUtils.ultimateWait();
120                 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.INVALID_USER_ID);
121         }
122         
123         //TC922253
124         @Test
125         public void specialCharInUserIdTest(){
126                 String expectedErrorMsg = "User id not valid.";
127                 String userId = generateValidUserId();
128                 StringBuilder invalidUserId = new StringBuilder(userId);
129                 invalidUserId.setCharAt(1, '#');
130                 ExtentTestActions.log(Status.INFO, String.format("Trying to create an invalid user with special character (%s)", userId));
131                 AdminGeneralPage.getUserManagementTab().setNewUserBox(invalidUserId.toString());
132                 ExtentTestActions.log(Status.INFO, "Validating an error message is displayed as a result of invalid character.");
133                 List<WebElement> inputErrors = null;
134                 int inputErrorsSize = 0;
135                 
136                 try{
137                         WebElement inputField = GeneralUIUtils.getWebElementByClassName("input-error");
138                         ExtentTestActions.log(Status.INFO, String.format("Validating the message is : '%s'", expectedErrorMsg));
139                         inputErrors = inputField.findElements(By.className("ng-scope"));
140                         inputErrorsSize = inputErrors.size();
141                         for (WebElement err : inputErrors){
142                                 String actualErrorMessage = err.getText();
143                                 if (actualErrorMessage.equals(expectedErrorMsg)){
144                                         inputErrorsSize--;
145                                 }
146                         }
147                 }
148                 catch(Exception e){
149                         ExtentTestActions.log(Status.INFO, "Did not find an error input.");
150                         Assert.fail("Did not find an error message input.");
151                 }
152                 
153                 Assert.assertEquals(inputErrors.size() - 1 , inputErrorsSize, "Did not find an error : " + expectedErrorMsg);
154         }
155         
156
157
158         //TC915101
159         @Test
160         public void searchForUserByRoleTest(){
161                 String userId = generateValidUserId();
162                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
163                 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
164                 AdminWorkspaceUIUtilies.searchForUser(userRole.name());
165                 List<WebElement> allRows = GeneralUIUtils.getWebElementsListByContainTestID(DataTestIdEnum.UserManagementEnum.USER_ID.getValue());
166                 ExtentTestActions.log(Status.INFO, String.format("Found %s rows, looking for the user %s.", allRows.size(), userId));
167                 int rowsCount = allRows.size();
168                 for (int i = 0 ; i < allRows.size() ; i++){
169                         String userIdFromTable = GeneralUIUtils.getTextContentAttributeValue(allRows.get(i));
170                         if (userIdFromTable.equals(userId)){
171                                 rowsCount--;
172                                 break;
173                         }
174                 }
175                 Assert.assertEquals(allRows.size() - 1 , rowsCount , "Did not find a row with the userId " + userId);
176         }
177         
178         //TC915102
179         @Test
180         public void modifyUserRoleTest(){
181                 User user = new User();
182                 user.setUserId(generateValidUserId());
183                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
184                 AdminWorkspaceUIUtilies.createNewUser(user.getUserId(), userRole);
185                 UserRoleEnum updatedUserRole = UserRoleEnum.TESTER;
186                 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
187                 UserManagementVerificator.validateUserRoleUpdated(0, updatedUserRole);
188                 UserManagementVerificator.validateUserRoleUpdatedViaRest(user, getUser(), updatedUserRole);
189         }
190         
191         //TC915103
192         @Test
193         public void deleteUserTest(){
194                 User user = new User();
195                 user.setUserId(generateValidUserId());
196                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
197                 AdminWorkspaceUIUtilies.createNewUser(user.getUserId(), userRole);
198                 AdminWorkspaceUIUtilies.deleteFirstRow();
199                 UserManagementVerificator.validateUserIdNotFound(user.getUserId());
200                 UserManagementVerificator.validateUserNotFoundViaRest(user, getUser());
201         }
202         
203         //TC951428
204         @Test
205         public void modifyUserRoleWithTaskInHand_Checkout() throws Exception{
206                 User newUser = new User();
207                 newUser.setUserId(generateValidUserId());
208                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
209                 AdminWorkspaceUIUtilies.createNewUser(newUser.getUserId(), userRole);
210                 
211                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, newUser);
212                 ExtentTestActions.log(Status.INFO, "Creating a new VF named " + resourceMetaData.getName() + " with the user " + newUser.getUserId());
213                 RestResponse createResourceResp = ResourceRestUtils.createResource(resourceMetaData, newUser);
214                 Assert.assertEquals(createResourceResp.getErrorCode().intValue(), 201, "Did not succeed to create a VF");
215                 
216                 UserRoleEnum updatedUserRole = UserRoleEnum.TESTER;
217                 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
218                 
219                 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS);
220         }
221
222         //obsolete test since no more start certification request
223         /*@Test
224         public void modifyUserRoleWithTaskInHand_InTesting() throws Exception{
225                 User newTesterUser = new User();
226                 newTesterUser.setUserId(generateValidUserId());
227                 UserRoleEnum userTesterRole = UserRoleEnum.TESTER;
228                 userTesterRole.setUserId(newTesterUser.getUserId());
229                 AdminWorkspaceUIUtilies.createNewUser(newTesterUser.getUserId(), userTesterRole);
230                 
231                 reloginWithNewRole(UserRoleEnum.DESIGNER);
232                 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());
233                 ExtentTestActions.log(Status.INFO, "Creating a new VF named " + resourceMetaData.getName());
234                 ResourceUIUtils.createVF(resourceMetaData, getUser());
235                 //TODO Andrey should click on certify button
236                 ResourceGeneralPage.clickSubmitForTestingButton(resourceMetaData.getName());
237                 Resource resourceObjectByNameAndVersion = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resourceMetaData.getName(), "0.1");
238                 ExtentTestActions.log(Status.INFO, "Getting the VF to 'In Testing' state.");
239                 AtomicOperationUtils.changeComponentState(resourceObjectByNameAndVersion, userTesterRole, LifeCycleStatesEnum.STARTCERTIFICATION, true);
240                 ExtentTestActions.log(Status.INFO, "Succeeded - The VF is in testing state.");
241                 
242                 reloginWithNewRole(UserRoleEnum.ADMIN);
243                 UserRoleEnum updatedUserRole = UserRoleEnum.DESIGNER;
244                 AdminWorkspaceUIUtilies.searchForUser(newTesterUser.getUserId());
245                 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
246                 
247                 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS);
248         }*/
249         
250         
251         private static String generateValidUserId() {
252                 String charsPattern = "abcdefghijklmnopqrstuvwxyz";
253                 String digitPatter = "0123456789";
254                 String chars = ResourceUIUtils.buildStringFromPattern(charsPattern, 2);
255                 String digits = ResourceUIUtils.buildStringFromPattern(digitPatter, 4);
256                 return chars + digits;
257         }
258         
259         private String generateValidMacId() {
260                 String digitPatter = "0123456789";
261                 String digits = ResourceUIUtils.buildStringFromPattern(digitPatter, 5);
262                 return "m" + digits;
263         }
264         
265         private User createNewUserUsingAPI() {
266                 UserRoleEnum role = UserRoleEnum.DESIGNER;
267                 String userId = generateValidUserId();
268                 User userByEnv = new User(generateValidUserId(), generateValidUserId(), userId, generateValidUserId()+"@intl.sdc.com", role.name(), null);
269                 User adminUser = getUserByEnv(UserRoleEnum.ADMIN);
270                 try {
271                         RestResponse createUserResp = UserRestUtils.createUser(userByEnv, adminUser);
272                         Assert.assertEquals(createUserResp.getErrorCode().intValue(), 201, "Did not succeed to create a new user using API.");
273                 } catch (IOException e) {
274                         e.printStackTrace();
275                 }
276                 return userByEnv;
277         }
278         
279         
280         private User getUserByEnv(UserRoleEnum userRole) {
281                 try{
282 //                      if (!getConfig().getUrl().contains("localhost") && !getConfig().getUrl().contains("127.0.0.1")) {
283 //                              return getUserFromFileByRole(userRole);
284 //                      }
285 //                      else{
286                                 return getUser(userRole);
287 //                      }
288                 }
289                 catch (Exception e){
290                         throw new RuntimeException(e);
291                 }
292         }
293
294
295
296         @Override
297         protected UserRoleEnum getRole() {
298                 return UserRoleEnum.ADMIN;
299         }
300
301 }