2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.ci.tests.execute.sanity;
23 import java.io.IOException;
24 import java.util.List;
26 import org.openecomp.sdc.be.dao.api.ActionStatus;
27 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
28 import org.openecomp.sdc.be.model.Resource;
29 import org.openecomp.sdc.be.model.User;
30 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum;
31 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
32 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
33 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
34 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
35 import org.openecomp.sdc.ci.tests.execute.setup.ExtentTestActions;
36 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
37 import org.openecomp.sdc.ci.tests.pages.AdminGeneralPage;
38 import org.openecomp.sdc.ci.tests.pages.ResourceGeneralPage;
39 import org.openecomp.sdc.ci.tests.utilities.AdminWorkspaceUIUtilies;
40 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
41 import org.openecomp.sdc.ci.tests.utilities.ResourceUIUtils;
42 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
43 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
44 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
45 import org.openecomp.sdc.ci.tests.utils.rest.UserRestUtils;
46 import org.openecomp.sdc.ci.tests.verificator.ErrorMessageUIVerificator;
47 import org.openecomp.sdc.ci.tests.verificator.UserManagementVerificator;
48 import org.openqa.selenium.By;
49 import org.openqa.selenium.WebElement;
50 import org.testng.Assert;
51 import org.testng.SkipException;
52 import org.testng.annotations.DataProvider;
53 import org.testng.annotations.Test;
55 import com.aventstack.extentreports.Status;
57 public class AdminUserManagment extends SetupCDTest {
59 @DataProvider(name = "searchValues")
60 private final Object[][] searchString(){
61 User newUser = createNewUserUsingAPI();
62 GeneralUIUtils.getDriver().navigate().refresh();
63 return new Object[][]{{newUser.getUserId(), newUser}, {newUser.getFirstName(), newUser}, {newUser.getLastName(), newUser}, {newUser.getEmail(), newUser}};
67 @Test(dataProvider = "searchValues")
68 public void searchUserByCriterionsTest(String searchCriterion, User user) throws IOException{
69 setLog(searchCriterion);
70 AdminWorkspaceUIUtilies.searchForUser(searchCriterion);
71 UserManagementVerificator.validateFirstRowDisplayedCorrectly(user);
76 public void createNewUserTest() throws Exception {
78 String userId = generateValidUserId();
79 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
80 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
81 GeneralUIUtils.ultimateWait();
82 UserManagementVerificator.validateUserCreated(userId, userRole);
87 public void createNewUser_MacIdTest() throws Exception {
89 String macId = generateValidMacId();
90 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
91 AdminWorkspaceUIUtilies.createNewUser(macId, userRole);
92 GeneralUIUtils.ultimateWait();
93 UserManagementVerificator.validateUserCreated(macId, userRole);
98 public void createExistingUserTest(){
99 String userId = generateValidUserId();
100 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
101 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
102 ExtentTestActions.log(Status.INFO, "Trying to create the same user once again.");
103 GeneralUIUtils.ultimateWait(); // extra wait, necessary for system with large user list
104 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
105 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.USER_ALREADY_EXIST);
110 public void createInvalidMacIdTest(){
113 throw new SkipException("Open bug 324032");
116 String macId = generateValidMacId();
117 StringBuilder invalidMacId = new StringBuilder(macId);
118 invalidMacId.setCharAt(0, 'a');
119 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
120 ExtentTestActions.log(Status.INFO, "Trying to create an invalid macId.");
121 AdminWorkspaceUIUtilies.createNewUser(invalidMacId.toString(), userRole);
122 GeneralUIUtils.ultimateWait();
123 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.INVALID_USER_ID);
128 public void specialCharInUserIdTest(){
129 String expectedErrorMsg = "User id not valid.";
130 String userId = generateValidUserId();
131 StringBuilder invalidUserId = new StringBuilder(userId);
132 invalidUserId.setCharAt(1, '#');
133 ExtentTestActions.log(Status.INFO, String.format("Trying to create an invalid user with special character (%s)", userId));
134 AdminGeneralPage.getUserManagementTab().setNewUserBox(invalidUserId.toString());
135 ExtentTestActions.log(Status.INFO, "Validating an error message is displayed as a result of invalid character.");
136 List<WebElement> inputErrors = null;
137 int inputErrorsSize = 0;
140 WebElement inputField = GeneralUIUtils.getWebElementByClassName("input-error");
141 ExtentTestActions.log(Status.INFO, String.format("Validating the message is : '%s'", expectedErrorMsg));
142 inputErrors = inputField.findElements(By.className("ng-scope"));
143 inputErrorsSize = inputErrors.size();
144 for (WebElement err : inputErrors){
145 String actualErrorMessage = err.getText();
146 if (actualErrorMessage.equals(expectedErrorMsg)){
152 ExtentTestActions.log(Status.INFO, "Did not find an error input.");
153 Assert.fail("Did not find an error message input.");
156 Assert.assertEquals(inputErrors.size() - 1 , inputErrorsSize, "Did not find an error : " + expectedErrorMsg);
163 public void searchForUserByRoleTest(){
164 String userId = generateValidUserId();
165 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
166 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
167 AdminWorkspaceUIUtilies.searchForUser(userRole.name());
168 List<WebElement> allRows = GeneralUIUtils.getWebElementsListByContainTestID(DataTestIdEnum.UserManagementEnum.USER_ID.getValue());
169 ExtentTestActions.log(Status.INFO, String.format("Found %s rows, looking for the user %s.", allRows.size(), userId));
170 int rowsCount = allRows.size();
171 for (int i = 0 ; i < allRows.size() ; i++){
172 String userIdFromTable = GeneralUIUtils.getTextContentAttributeValue(allRows.get(i));
173 if (userIdFromTable.equals(userId)){
178 Assert.assertEquals(allRows.size() - 1 , rowsCount , "Did not find a row with the userId " + userId);
183 public void modifyUserRoleTest(){
184 User user = new User();
185 user.setUserId(generateValidUserId());
186 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
187 AdminWorkspaceUIUtilies.createNewUser(user.getUserId(), userRole);
188 UserRoleEnum updatedUserRole = UserRoleEnum.TESTER;
189 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
190 UserManagementVerificator.validateUserRoleUpdated(0, updatedUserRole);
191 UserManagementVerificator.validateUserRoleUpdatedViaRest(user, getUser(), updatedUserRole);
196 public void deleteUserTest(){
197 User user = new User();
198 user.setUserId(generateValidUserId());
199 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
200 AdminWorkspaceUIUtilies.createNewUser(user.getUserId(), userRole);
201 AdminWorkspaceUIUtilies.deleteFirstRow();
202 UserManagementVerificator.validateUserIdNotFound(user.getUserId());
203 UserManagementVerificator.validateUserNotFoundViaRest(user, getUser());
208 public void modifyUserRoleWithTaskInHand_Checkout() throws Exception{
209 User newUser = new User();
210 newUser.setUserId(generateValidUserId());
211 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
212 AdminWorkspaceUIUtilies.createNewUser(newUser.getUserId(), userRole);
214 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, newUser);
215 ExtentTestActions.log(Status.INFO, "Creating a new VF named " + resourceMetaData.getName() + " with the user " + newUser.getUserId());
216 RestResponse createResourceResp = ResourceRestUtils.createResource(resourceMetaData, newUser);
217 Assert.assertEquals(createResourceResp.getErrorCode().intValue(), 201, "Did not succeed to create a VF");
219 UserRoleEnum updatedUserRole = UserRoleEnum.TESTER;
220 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
222 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS);
226 public void modifyUserRoleWithTaskInHand_InTesting() throws Exception{
227 User newTesterUser = new User();
228 newTesterUser.setUserId(generateValidUserId());
229 UserRoleEnum userTesterRole = UserRoleEnum.TESTER;
230 userTesterRole.setUserId(newTesterUser.getUserId());
231 AdminWorkspaceUIUtilies.createNewUser(newTesterUser.getUserId(), userTesterRole);
233 reloginWithNewRole(UserRoleEnum.DESIGNER);
234 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser());
235 ExtentTestActions.log(Status.INFO, "Creating a new VF named " + resourceMetaData.getName());
236 ResourceUIUtils.createVF(resourceMetaData, getUser());
237 ResourceGeneralPage.clickSubmitForTestingButton(resourceMetaData.getName());
238 Resource resourceObjectByNameAndVersion = AtomicOperationUtils.getResourceObjectByNameAndVersion(UserRoleEnum.DESIGNER, resourceMetaData.getName(), "0.1");
239 ExtentTestActions.log(Status.INFO, "Getting the VF to 'In Testing' state.");
240 AtomicOperationUtils.changeComponentState(resourceObjectByNameAndVersion, userTesterRole, LifeCycleStatesEnum.STARTCERTIFICATION, true);
241 ExtentTestActions.log(Status.INFO, "Succeeded - The VF is in testing state.");
243 reloginWithNewRole(UserRoleEnum.ADMIN);
244 UserRoleEnum updatedUserRole = UserRoleEnum.DESIGNER;
245 AdminWorkspaceUIUtilies.searchForUser(newTesterUser.getUserId());
246 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
248 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS);
252 private static String generateValidUserId() {
253 String charsPattern = "abcdefghijklmnopqrstuvwxyz";
254 String digitPatter = "0123456789";
255 String chars = ResourceUIUtils.buildStringFromPattern(charsPattern, 2);
256 String digits = ResourceUIUtils.buildStringFromPattern(digitPatter, 4);
257 return chars + digits;
260 private String generateValidMacId() {
261 String digitPatter = "0123456789";
262 String digits = ResourceUIUtils.buildStringFromPattern(digitPatter, 5);
266 private User createNewUserUsingAPI() {
267 UserRoleEnum role = UserRoleEnum.DESIGNER;
268 String userId = generateValidUserId();
269 User userByEnv = new User(generateValidUserId(), generateValidUserId(), userId, generateValidUserId()+"@intl.sdc.com", role.name(), null);
270 User adminUser = getUserByEnv(UserRoleEnum.ADMIN);
272 RestResponse createUserResp = UserRestUtils.createUser(userByEnv, adminUser);
273 Assert.assertEquals(createUserResp.getErrorCode().intValue(), 201, "Did not succeed to create a new user using API.");
274 } catch (IOException e) {
281 private User getUserByEnv(UserRoleEnum userRole) {
283 if (!getConfig().getUrl().contains("localhost") && !getConfig().getUrl().contains("127.0.0.1")) {
284 return getUserFromFileByRole(userRole);
287 return getUser(userRole);
291 throw new RuntimeException(e);
298 protected UserRoleEnum getRole() {
299 return UserRoleEnum.ADMIN;