Sync Integ to Master
[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 java.io.IOException;
24 import java.util.List;
25
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;
54
55 import com.aventstack.extentreports.Status;
56
57 public class AdminUserManagment extends SetupCDTest {
58         
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}};
64         }
65         
66         //TC915101
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);
72         }
73
74         //TC915100
75         @Test
76         public void createNewUserTest() throws Exception {
77                 
78                 String userId = generateValidUserId();
79                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
80                 AdminWorkspaceUIUtilies.createNewUser(userId, userRole);
81                 GeneralUIUtils.ultimateWait();
82                 UserManagementVerificator.validateUserCreated(userId, userRole);
83         }
84         
85         //TC922253
86         @Test
87         public void createNewUser_MacIdTest() throws Exception {
88                 
89                 String macId = generateValidMacId();
90                 UserRoleEnum userRole = UserRoleEnum.DESIGNER;
91                 AdminWorkspaceUIUtilies.createNewUser(macId, userRole);
92                 GeneralUIUtils.ultimateWait();
93                 UserManagementVerificator.validateUserCreated(macId, userRole);
94         }
95         
96         //TC922253
97         @Test
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);
106         }
107
108         //TC922253
109         @Test
110         public void createInvalidMacIdTest(){
111                 
112                 if(true){
113                         throw new SkipException("Open bug 324032");
114                 }
115                 
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);
124         }
125         
126         //TC922253
127         @Test
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;
138                 
139                 try{
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)){
147                                         inputErrorsSize--;
148                                 }
149                         }
150                 }
151                 catch(Exception e){
152                         ExtentTestActions.log(Status.INFO, "Did not find an error input.");
153                         Assert.fail("Did not find an error message input.");
154                 }
155                 
156                 Assert.assertEquals(inputErrors.size() - 1 , inputErrorsSize, "Did not find an error : " + expectedErrorMsg);
157         }
158         
159
160
161         //TC915101
162         @Test
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)){
174                                 rowsCount--;
175                                 break;
176                         }
177                 }
178                 Assert.assertEquals(allRows.size() - 1 , rowsCount , "Did not find a row with the userId " + userId);
179         }
180         
181         //TC915102
182         @Test
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);
192         }
193         
194         //TC915103
195         @Test
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());
204         }
205         
206         //TC951428
207         @Test
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);
213                 
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");
218                 
219                 UserRoleEnum updatedUserRole = UserRoleEnum.TESTER;
220                 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
221                 
222                 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS);
223         }
224         
225         @Test
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);
232                 
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.");
242                 
243                 reloginWithNewRole(UserRoleEnum.ADMIN);
244                 UserRoleEnum updatedUserRole = UserRoleEnum.DESIGNER;
245                 AdminWorkspaceUIUtilies.searchForUser(newTesterUser.getUserId());
246                 AdminWorkspaceUIUtilies.updateUserRole(0, updatedUserRole);
247                 
248                 ErrorMessageUIVerificator.validateErrorMessage(ActionStatus.CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS);
249         }
250         
251         
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;
258         }
259         
260         private String generateValidMacId() {
261                 String digitPatter = "0123456789";
262                 String digits = ResourceUIUtils.buildStringFromPattern(digitPatter, 5);
263                 return "m" + digits;
264         }
265         
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);
271                 try {
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) {
275                         e.printStackTrace();
276                 }
277                 return userByEnv;
278         }
279         
280         
281         private User getUserByEnv(UserRoleEnum userRole) {
282                 try{
283                         if (!getConfig().getUrl().contains("localhost") && !getConfig().getUrl().contains("127.0.0.1")) {
284                                 return getUserFromFileByRole(userRole);
285                         }
286                         else{
287                                 return getUser(userRole);
288                         }
289                 }
290                 catch (Exception e){
291                         throw new RuntimeException(e);
292                 }
293         }
294
295
296
297         @Override
298         protected UserRoleEnum getRole() {
299                 return UserRoleEnum.ADMIN;
300         }
301
302 }