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 com.aventstack.extentreports.Status;
24 import org.apache.http.HttpStatus;
25 import org.openecomp.sdc.be.dao.api.ActionStatus;
26 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
27 import org.openecomp.sdc.be.model.User;
28 import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum;
29 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
30 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
31 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
32 import org.openecomp.sdc.ci.tests.execute.setup.ExtentTestActions;
33 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
34 import org.openecomp.sdc.ci.tests.pages.AdminGeneralPage;
35 import org.openecomp.sdc.ci.tests.utilities.AdminWorkspaceUIUtilies;
36 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
37 import org.openecomp.sdc.ci.tests.utilities.ResourceUIUtils;
38 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
39 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
40 import org.openecomp.sdc.ci.tests.utils.rest.UserRestUtils;
41 import org.openecomp.sdc.ci.tests.verificator.ErrorMessageUIVerificator;
42 import org.openecomp.sdc.ci.tests.verificator.UserManagementVerificator;
43 import org.openqa.selenium.By;
44 import org.openqa.selenium.WebElement;
45 import org.testng.Assert;
46 import org.testng.annotations.DataProvider;
47 import org.testng.annotations.Test;
49 import java.io.IOException;
50 import java.util.List;
52 public class AdminUserManagment extends SetupCDTest {
54 @DataProvider(name = "searchValues")
55 private Object[][] searchString() {
56 User newUser = createNewUserUsingAPI();
57 GeneralUIUtils.getDriver().navigate().refresh();
58 return new Object[][]{{newUser.getUserId(), newUser}, {newUser.getFirstName(), newUser}, {newUser.getLastName(), newUser}, {newUser.getEmail(), newUser}};
62 @Test(dataProvider = "searchValues")
63 public void searchUserByCriterionsTest(String searchCriterion, User user) throws IOException {
64 setLog(searchCriterion);
65 AdminWorkspaceUIUtilies.searchForUser(searchCriterion);
66 UserManagementVerificator.validateFirstRowDisplayedCorrectly(user);
71 public void createNewUserTest() throws Exception {
73 String userId = generateValidUserId();
74 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
75 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
76 GeneralUIUtils.ultimateWait();
77 UserManagementVerificator.validateUserCreated(userId, userRole);
82 public void createNewUser_MacIdTest() throws Exception {
84 String macId = generateValidMacId();
85 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
86 AdminWorkspaceUIUtilies.createNewUser(macId, userRole);
87 GeneralUIUtils.ultimateWait();
88 UserManagementVerificator.validateUserCreated(macId, userRole);
93 public void createExistingUserTest() {
94 String userId = generateValidUserId();
95 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
96 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
97 ExtentTestActions.log(Status.INFO, "Trying to create the same user once again.");
98 GeneralUIUtils.ultimateWait(); // extra wait, necessary for system with large user list
99 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
100 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.USER_ALREADY_EXIST);
104 // design changed and now one letter user should exist
106 @Test(enabled = true)
107 public void createInvalidMacIdTest() {
109 ExtentTestActions.log(Status.INFO, "Open bug 324032");
111 String macId = generateValidMacId();
112 StringBuilder invalidMacId = new StringBuilder(macId);
113 invalidMacId.setCharAt(0, 'a');
114 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
115 ExtentTestActions.log(Status.INFO, "Trying to create an invalid macId.");
116 AdminWorkspaceUIUtilies.createNewUser(invalidMacId.toString(), userRole);
117 GeneralUIUtils.ultimateWait();
118 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.INVALID_USER_ID);
123 public void specialCharInUserIdTest() {
124 String expectedErrorMsg = "User id not valid.";
125 String userId = generateValidUserId();
126 StringBuilder invalidUserId = new StringBuilder(userId);
127 invalidUserId.setCharAt(1, '#');
128 ExtentTestActions.log(Status.INFO, String.format("Trying to create an invalid user with special character (%s)", userId));
129 AdminGeneralPage.getUserManagementTab().setNewUserBox(invalidUserId.toString());
130 ExtentTestActions.log(Status.INFO, "Validating an error message is displayed as a result of invalid character.");
131 List<WebElement> inputErrors = null;
132 int inputErrorsSize = 0;
135 WebElement inputField = GeneralUIUtils.getWebElementByClassName("input-error");
136 ExtentTestActions.log(Status.INFO, String.format("Validating the message is : '%s'", expectedErrorMsg));
137 inputErrors = inputField.findElements(By.className("ng-scope"));
138 inputErrorsSize = inputErrors.size();
139 for (WebElement err : inputErrors) {
140 String actualErrorMessage = err.getText();
141 if (actualErrorMessage.equals(expectedErrorMsg)) {
145 } catch (Exception e) {
146 ExtentTestActions.log(Status.INFO, "Did not find an error input.");
147 Assert.fail("Did not find an error message input.");
150 Assert.assertEquals(inputErrors.size() - 1, inputErrorsSize, "Did not find an error : " + expectedErrorMsg);
156 public void searchForUserByRoleTest() {
157 String userId = generateValidUserId();
158 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
159 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
160 AdminWorkspaceUIUtilies.searchForUser(userRole.name());
161 List<WebElement> allRows = GeneralUIUtils.getWebElementsListByContainTestID(DataTestIdEnum.UserManagementEnum.USER_ID.getValue());
162 ExtentTestActions.log(Status.INFO, String.format("Found %s rows, looking for the user %s.", allRows.size(), userId));
163 int rowsCount = allRows.size();
164 for (WebElement allRow : allRows) {
165 String userIdFromTable = GeneralUIUtils.getTextContentAttributeValue(allRow);
166 if (userIdFromTable.equals(userId)) {
171 Assert.assertEquals(allRows.size() - 1, rowsCount, "Did not find a row with the userId " + userId);
176 public void modifyUserRoleTest() {
177 User user = new User();
178 user.setUserId(generateValidUserId());
179 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
180 AdminWorkspaceUIUtilies.createNewUser(user.getUserId(), userRole);
181 UserRoleEnum updatedUserRole = UserRoleEnum.TESTER;
182 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
183 UserManagementVerificator.validateUserRoleUpdated(0, updatedUserRole);
184 UserManagementVerificator.validateUserRoleUpdatedViaRest(user, getUser(), updatedUserRole);
189 public void deleteUserTest() {
190 User user = new User();
191 user.setUserId(generateValidUserId());
192 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
193 AdminWorkspaceUIUtilies.createNewUser(user.getUserId(), userRole);
194 AdminWorkspaceUIUtilies.deleteFirstRow();
195 UserManagementVerificator.validateUserIdNotFound(user.getUserId());
196 UserManagementVerificator.validateUserNotFoundViaRest(user, getUser());
201 public void modifyUserRoleWithTaskInHand_Checkout() throws Exception {
202 User newUser = new User();
203 newUser.setUserId(generateValidUserId());
204 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
205 AdminWorkspaceUIUtilies.createNewUser(newUser.getUserId(), userRole);
207 ResourceReqDetails resourceMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, newUser);
208 ExtentTestActions.log(Status.INFO, "Creating a new VF named " + resourceMetaData.getName() + " with the user " + newUser.getUserId());
209 RestResponse createResourceResp = ResourceRestUtils.createResource(resourceMetaData, newUser);
210 Assert.assertEquals(createResourceResp.getErrorCode().intValue(), HttpStatus.SC_CREATED, "Did not succeed to create a VF");
212 UserRoleEnum updatedUserRole = UserRoleEnum.TESTER;
213 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
215 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS);
219 private static String generateValidUserId() {
220 final int charsPatternLength = 2;
221 final int digitsPatternLength = 4;
222 String charsPattern = "abcdefghijklmnopqrstuvwxyz";
223 String digitPatter = "0123456789";
224 String chars = ResourceUIUtils.buildStringFromPattern(charsPattern, charsPatternLength);
225 String digits = ResourceUIUtils.buildStringFromPattern(digitPatter, digitsPatternLength);
226 return chars + digits;
229 private String generateValidMacId() {
230 final int digitsPatternLength = 5;
231 String digitPatter = "0123456789";
232 String digits = ResourceUIUtils.buildStringFromPattern(digitPatter, digitsPatternLength);
236 private User createNewUserUsingAPI() {
237 UserRoleEnum role = UserRoleEnum.DESIGNER;
238 String userId = generateValidUserId();
239 User userByEnv = new User(generateValidUserId(), generateValidUserId(), userId, generateValidUserId() + "@intl.sdc.com", role.name(), null);
240 User adminUser = getUserByEnv(UserRoleEnum.ADMIN);
242 RestResponse createUserResp = UserRestUtils.createUser(userByEnv, adminUser);
243 Assert.assertEquals(createUserResp.getErrorCode().intValue(), HttpStatus.SC_CREATED, "Did not succeed to create a new user using API.");
244 } catch (IOException e) {
251 private User getUserByEnv(UserRoleEnum userRole) {
253 return getUser(userRole);
254 } catch (Exception e) {
255 throw new RuntimeException(e);
261 protected UserRoleEnum getRole() {
262 return UserRoleEnum.ADMIN;