Increase junit TCs
[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.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;
48
49 import java.io.IOException;
50 import java.util.List;
51
52 public class AdminUserManagment extends SetupCDTest {
53
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}};
59     }
60
61     //TC915101
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);
67     }
68
69     //TC915100
70     @Test
71     public void createNewUserTest() throws Exception {
72
73         String userId = generateValidUserId();
74         UserRoleEnum userRole = UserRoleEnum.DESIGNER;
75         AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
76         GeneralUIUtils.ultimateWait();
77         UserManagementVerificator.validateUserCreated(userId, userRole);
78     }
79
80     //TC922253
81     @Test
82     public void createNewUser_MacIdTest() throws Exception {
83
84         String macId = generateValidMacId();
85         UserRoleEnum userRole = UserRoleEnum.DESIGNER;
86         AdminWorkspaceUIUtilies.createNewUser(macId, userRole);
87         GeneralUIUtils.ultimateWait();
88         UserManagementVerificator.validateUserCreated(macId, userRole);
89     }
90
91     //TC922253
92     @Test
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);
101     }
102
103
104     // design changed and now one letter user should exist
105     //TC922253
106     @Test(enabled = true)
107     public void createInvalidMacIdTest() {
108
109         ExtentTestActions.log(Status.INFO, "Open bug 324032");
110
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);
119     }
120
121     //TC922253
122     @Test
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;
133
134         try {
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)) {
142                     inputErrorsSize--;
143                 }
144             }
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.");
148         }
149
150         Assert.assertEquals(inputErrors.size() - 1, inputErrorsSize, "Did not find an error : " + expectedErrorMsg);
151     }
152
153
154     //TC915101
155     @Test
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)) {
167                 rowsCount--;
168                 break;
169             }
170         }
171         Assert.assertEquals(allRows.size() - 1, rowsCount, "Did not find a row with the userId " + userId);
172     }
173
174     //TC915102
175     @Test
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);
185     }
186
187     //TC915103
188     @Test
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());
197     }
198
199     //TC951428
200     @Test
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);
206
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");
211
212         UserRoleEnum updatedUserRole = UserRoleEnum.TESTER;
213         AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
214
215         ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS);
216     }
217
218
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;
227     }
228
229     private String generateValidMacId() {
230         final int digitsPatternLength = 5;
231         String digitPatter = "0123456789";
232         String digits = ResourceUIUtils.buildStringFromPattern(digitPatter, digitsPatternLength);
233         return "m" + digits;
234     }
235
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);
241         try {
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) {
245             e.printStackTrace();
246         }
247         return userByEnv;
248     }
249
250
251     private User getUserByEnv(UserRoleEnum userRole) {
252         try {
253             return getUser(userRole);
254         } catch (Exception e) {
255             throw new RuntimeException(e);
256         }
257     }
258
259
260     @Override
261     protected UserRoleEnum getRole() {
262         return UserRoleEnum.ADMIN;
263     }
264
265 }