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