Fix for overriding skipTests variable.
[vid.git] / vid-automation / src / main / java / vid / automation / test / test / VidBaseTestCase.java
1 package vid.automation.test.test;
2
3 import com.att.automation.common.report_portal_integration.annotations.Step;
4 import com.att.automation.common.report_portal_integration.listeners.ReportPortalListener;
5 import com.att.automation.common.report_portal_integration.screenshots.WebDriverScreenshotsProvider;
6 import com.fasterxml.jackson.databind.ObjectMapper;
7 import com.google.common.collect.ImmutableList;
8 import org.apache.commons.lang3.StringUtils;
9 import org.junit.Assert;
10 import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset;
11 import org.onap.simulator.presetGenerator.presets.aai.PresetAAICloudRegionAndSourceFromConfigurationPut;
12 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkZones;
13 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetPortMirroringSourcePorts;
14 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetServicesGet;
15 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubDetailsGet;
16 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet;
17 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetTenants;
18 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIPostNamedQueryForViewEdit;
19 import org.onap.simulator.presetGenerator.presets.aai.PresetAAISearchNodeQueryEmptyResult;
20 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIServiceDesignAndCreationPut;
21 import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet;
22 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2;
23 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstancePost;
24 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet;
25 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceMetadataGet;
26 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet;
27 import org.openecomp.sdc.ci.tests.datatypes.UserCredentials;
28 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
29 import org.openecomp.sdc.ci.tests.utilities.FileHandling;
30 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
31 import org.openqa.selenium.By;
32 import org.openqa.selenium.JavascriptExecutor;
33 import org.openqa.selenium.WebElement;
34 import org.testng.ITestContext;
35 import org.testng.annotations.BeforeMethod;
36 import org.testng.annotations.BeforeSuite;
37 import org.testng.annotations.Listeners;
38 import org.testng.annotations.Test;
39 import vid.automation.test.Constants;
40 import vid.automation.test.infra.*;
41 import vid.automation.test.model.Credentials;
42 import vid.automation.test.model.User;
43 import vid.automation.test.sections.*;
44 import vid.automation.test.services.CategoryParamsService;
45 import vid.automation.test.services.SimulatorApi;
46 import vid.automation.test.services.UsersService;
47 import vid.automation.test.utils.DB_CONFIG;
48 import vid.automation.test.utils.TestConfigurationHelper;
49
50 import java.io.File;
51 import java.lang.reflect.Method;
52 import java.sql.*;
53 import java.util.ArrayList;
54 import java.util.Arrays;
55 import java.util.List;
56 import java.util.Map;
57 import java.util.stream.Collectors;
58
59 import static org.hamcrest.core.Is.is;
60 import static org.testng.Assert.assertEquals;
61 import static org.testng.AssertJUnit.fail;
62
63 @Listeners(com.att.automation.common.report_portal_integration.listeners.ReportPortalListener.class)
64 public class VidBaseTestCase extends SetupCDTest{
65
66     protected final UsersService usersService = new UsersService();
67     protected final CategoryParamsService categoryParamsService = new CategoryParamsService();
68
69     @Override
70     protected UserCredentials getUserCredentials() {
71         ObjectMapper mapper = new ObjectMapper().enableDefaultTyping();
72         try {
73             File configFile = FileHandling.getConfigFile("credentials");
74             if(!configFile.exists()) {
75                 String basePath = System.getProperty("BASE_PATH");
76                 configFile = new File( basePath + File.separator + "conf" + File.separator + "credentials");
77             }
78             Credentials credentials = mapper.readValue(configFile, Credentials.class);
79             User user = usersService.getUser(credentials.userId);
80             return new UserCredentials(user.credentials.userId, user.credentials.password, credentials.userId, "", "");
81         } catch (Exception e) {
82             e.printStackTrace();
83             return null;
84         }
85     }
86
87     @Override
88     protected org.openecomp.sdc.ci.tests.datatypes.Configuration getEnvConfiguration() {
89
90         return TestConfigurationHelper.getEnvConfiguration();
91     }
92
93     @BeforeMethod(alwaysRun = true)
94     public void setBrowserBeforeTestIfDataProvider(Method method, ITestContext context, Object[] params) {
95         // Hack to overcome limitations of SetupCDTest.setBrowserBeforeTest(java.lang.reflect.Method, org.testng.ITestContext)
96         // that skips over dataProvided methods
97         boolean emptyDataProvider = method.getAnnotation(Test.class).dataProvider().isEmpty();
98         if (!emptyDataProvider) {
99             final String testName = method.getName();
100             final String listOfParams = Arrays.deepToString(params)
101                     .replace('[', '(')
102                     .replace(']', ')')
103                     .replaceAll("[\\\\/:*?\"<>|]", "_");
104
105             setLog(testName+listOfParams);
106         }
107     }
108
109     @BeforeSuite(alwaysRun = true)
110     public void screenShotsForReportPortal(){
111         try {
112             ReportPortalListener.setScreenShotsProvider(new WebDriverScreenshotsProvider(getDriver()));
113             System.out.println("Called to ReportPortalListener to set ScreenShotsProvider");
114         } catch (Exception e) {
115             e.printStackTrace();
116         }
117     }
118
119     @Override
120     protected void loginToLocalSimulator(UserCredentials userCredentials) {
121         LoginExternalPage.performLoginExternal(userCredentials);
122     }
123
124     static public class ModelInfo {
125         public final String modelVersionId;
126         public final String modelInvariantId;
127         public final String zipFileName;
128
129         public ModelInfo(String modelVersionId, String modelInvariantId, String zipFileName) {
130             this.modelVersionId = modelVersionId;
131             this.modelInvariantId = modelInvariantId;
132             this.zipFileName = zipFileName;
133         }
134     }
135
136     protected void registerExpectationForLegacyServiceDeployment(String modelVersionId, String modelInvariantId, String zipFileName, String subscriberId) {
137         registerExpectationForServiceDeployment(ServiceDeployment.LEGACY, ImmutableList.of(new ModelInfo(modelVersionId,modelInvariantId,zipFileName)), subscriberId);
138     }
139
140     private enum ServiceDeployment {ASYNC, LEGACY}
141
142     protected void registerExpectationForServiceDeployment(ServiceDeployment serviceDeploymentOnMsoExpectations, List<ModelInfo> modelInfoList, String subscriberId) {
143         List<BasePreset> presets = new ArrayList<>(Arrays.asList(
144                 new PresetGetSessionSlotCheckIntervalGet(),
145                 new PresetAAIGetSubscribersGet(),
146                 new PresetAAIGetServicesGet(),
147                 new PresetAAIGetSubDetailsGet(subscriberId),
148                 new PresetAAIPostNamedQueryForViewEdit("f8791436-8d55-4fde-b4d5-72dd2cf13cfb"),
149                 new PresetAAICloudRegionAndSourceFromConfigurationPut("9533-config-LB1113", "myRandomCloudRegionId"),
150                 new PresetAAIGetPortMirroringSourcePorts("9533-config-LB1113", "myRandomInterfaceId", "i'm a port", true),
151                 new PresetAAIGetNetworkZones(),
152                 new PresetAAIGetTenants(),
153                 new PresetAAIServiceDesignAndCreationPut(modelInfoList.stream().map(
154                         x-> new PresetAAIServiceDesignAndCreationPut.ServiceModelIdentifiers(x.modelVersionId, x.modelInvariantId))
155                         .collect(Collectors.toList()))
156                 ));
157
158         modelInfoList.forEach(modelInfo -> {
159             presets.add(new PresetSDCGetServiceMetadataGet(modelInfo.modelVersionId, modelInfo.modelInvariantId, modelInfo.zipFileName));
160             presets.add(new PresetSDCGetServiceToscaModelGet(modelInfo.modelVersionId, modelInfo.zipFileName));
161         });
162
163         switch (serviceDeploymentOnMsoExpectations) {
164             case ASYNC:
165                 presets.add(new PresetAAISearchNodeQueryEmptyResult());
166                 presets.add(new PresetMSOCreateServiceInstanceGen2());
167                 presets.add(new PresetMSOOrchestrationRequestGet("IN_PROGRESS"));
168                 break;
169             case LEGACY:
170                 presets.add(new PresetMSOCreateServiceInstancePost());
171                 presets.add(new PresetMSOOrchestrationRequestGet());
172                 break;
173         }
174
175         SimulatorApi.registerExpectationFromPresets(presets, SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET);
176     }
177
178     protected void relogin(Credentials credentials) throws Exception {
179         // `getWindowTest().getPreviousUser()` is SetupCDTest's state of previous user used
180         if (!credentials.userId.equals(getWindowTest().getPreviousUser())) {
181             UserCredentials userCredentials = new UserCredentials(credentials.userId,
182                     credentials.password, "", "", "");
183             reloginWithNewRole(userCredentials);
184         } else {
185             System.out.println(String.format("VidBaseTestCase.relogin() " +
186                     "-> '%s' is already logged in, so skipping", credentials.userId));
187         }
188     }
189
190     /**
191      * Validates that permitted options are enabled and others are disabled.
192      *
193      * @param permittedItems           the list of permitted items.
194      * @param dropdownOptionsClassName the class name of the specific dropdown options.
195      * @return true, if all dropdown options disabled state is according to the permissions.
196      */
197     protected void assertDropdownPermittedItemsByValue(ArrayList<String> permittedItems, String dropdownOptionsClassName) {
198         assertDropdownPermittedItemsByValue(permittedItems, dropdownOptionsClassName, "value");
199     }
200
201     protected void assertDropdownPermittedItemsByLabel(ArrayList<String> permittedItems, String dropdownOptionsClassName) {
202         assertDropdownPermittedItemsByValue(permittedItems, dropdownOptionsClassName, "label");
203     }
204
205     /**
206      * Validates that permitted options are enabled and others are disabled.
207      *
208      * @param permittedItems           the list of permitted items.
209      * @param dropdownOptionsClassName the class name of the specific dropdown options.
210      * @param attribute
211      * @return true, if all dropdown options disabled state is according to the permissions.
212      */
213     private void assertDropdownPermittedItemsByValue(ArrayList<String> permittedItems, String dropdownOptionsClassName, String attribute) {
214         GeneralUIUtils.ultimateWait();
215         List<WebElement> optionsList =
216                 GeneralUIUtils.getWebElementsListBy(By.className(dropdownOptionsClassName), 30);
217         for (WebElement option :
218                 optionsList) {
219             String optionValue = option.getAttribute(attribute);
220             if ((option.isEnabled() && !permittedItems.contains(optionValue)) ||
221                     !option.isEnabled() && permittedItems.contains(optionValue)) {
222                 fail(Constants.DROPDOWN_PERMITTED_ASSERT_FAIL_MESSAGE);
223             }
224         }
225     }
226
227     protected void assertAllIsPermitted(String dropdownOptionsClassName) {
228         GeneralUIUtils.ultimateWait();
229         List<WebElement> optionsList =
230                 GeneralUIUtils.getWebElementsListBy(By.className(dropdownOptionsClassName), 30);
231         for (WebElement option :
232                 optionsList) {
233             String optionValue = option.getAttribute("value");
234             if (!option.isEnabled()) {
235                 fail(Constants.DROPDOWN_PERMITTED_ASSERT_FAIL_MESSAGE);
236             }
237         }
238     }
239
240     protected void assertDropdownPermittedItemsByName(ArrayList<String> permittedItems, String dropdownOptionsClassName) {
241         GeneralUIUtils.ultimateWait();
242         List<WebElement> optionsList =
243                 GeneralUIUtils.getWebElementsListBy(By.className(dropdownOptionsClassName), 30);
244         for (WebElement option :
245                 optionsList) {
246             String optionText = option.getText();
247             if ((option.isEnabled() && !permittedItems.contains(optionText)) ||
248                     !option.isEnabled() && permittedItems.contains(optionText)) {
249                 fail(Constants.DROPDOWN_PERMITTED_ASSERT_FAIL_MESSAGE);
250             }
251         }
252     }
253
254     protected void assertViewEditButtonState(String expectedButtonText, String UUID) {
255         WebElement viewEditWebElement = GeneralUIUtils.getWebElementByTestID(Constants.VIEW_EDIT_TEST_ID_PREFIX + UUID, 100);
256         Assert.assertEquals(expectedButtonText, viewEditWebElement.getText());
257         GeneralUIUtils.ultimateWait();
258     }
259
260
261     protected void addNetwork(Map<String, String> metadata,String instanceName, String name, String lcpRegion, String productFamily,String platform, String lineOfBusiness, String tenant, String suppressRollback,
262                                String legacyRegion, ArrayList<String> permittedTenants) {
263         ViewEditPage viewEditPage = new ViewEditPage();
264
265         viewEditPage.selectNetworkToAdd(name);
266         assertModelInfo(metadata, false);
267         viewEditPage.setInstanceName(instanceName);
268         viewEditPage.selectLCPRegion(lcpRegion);
269         viewEditPage.selectProductFamily(productFamily);
270         viewEditPage.selectLineOfBusiness(lineOfBusiness);
271         assertDropdownPermittedItemsByValue(permittedTenants, Constants.ViewEdit.TENANT_OPTION_CLASS);
272         viewEditPage.selectTenant(tenant);
273
274         viewEditPage.selectSuppressRollback(suppressRollback);
275         viewEditPage.selectPlatform(platform);
276         //viewEditPage.setLegacyRegion(legacyRegion);
277
278         viewEditPage.clickConfirmButton();
279         viewEditPage.assertMsoRequestModal(Constants.ViewEdit.MSO_SUCCESSFULLY_TEXT);
280         viewEditPage.clickCloseButton();
281         GeneralUIUtils.ultimateWait();
282     }
283
284     void assertSuccessfulVNFCreation() {
285         boolean byText = GeneralUIUtils.findAndWaitByText(Constants.ViewEdit.VNF_CREATED_SUCCESSFULLY_TEXT, 100);
286         Assert.assertTrue(Constants.ViewEdit.VNF_CREATION_FAILED_MESSAGE, byText);
287     }
288
289     void assertSuccessfulPNFAssociation() {
290         //TODO
291         boolean byText = GeneralUIUtils.findAndWaitByText(Constants.PnfAssociation.PNF_ASSOCIATED_SUCCESSFULLY_TEXT, 100);
292         Assert.assertTrue(Constants.PnfAssociation.PNF_ASSOCIATED_FAILED_MESSAGE, byText);
293     }
294     void assertSuccessfulVolumeGroupCreation() {
295         boolean byText = GeneralUIUtils.findAndWaitByText(Constants.ViewEdit.VOLUME_GROUP_CREATED_SUCCESSFULLY_TEXT, 100);
296         Assert.assertTrue(Constants.ViewEdit.VOLUME_GROUP_CREATION_FAILED_MESSAGE, byText);
297     }
298
299     void assertSuccessfulVFModuleCreation() {
300         boolean byText = GeneralUIUtils.findAndWaitByText(Constants.ViewEdit.VF_MODULE_CREATED_SUCCESSFULLY_TEXT, 100);
301         Assert.assertTrue(Constants.ViewEdit.VF_MODULE_CREATION_FAILED_MESSAGE, byText);
302     }
303
304     @Step("${method}: ${instanceUUID}")
305     void goToExistingInstanceById(String instanceUUID) {
306         SearchExistingPage searchExistingPage = searchExistingInstanceById(instanceUUID);
307         assertViewEditButtonState( Constants.VIEW_EDIT_BUTTON_TEXT, instanceUUID);
308
309         searchExistingPage.clickEditViewByInstanceId(instanceUUID);
310         GeneralUIUtils.ultimateWait();
311     }
312
313     void searchForExistingInstanceByIdReadonlyMode(String instanceUUID) {
314         searchExistingInstanceById(instanceUUID);
315         assertViewEditButtonState( Constants.VIEW_BUTTON_TEXT, instanceUUID);
316     }
317
318     SearchExistingPage searchExistingInstanceById(String instanceUUID){
319         SearchExistingPage searchExistingPage = new SearchExistingPage();
320         SideMenu.navigateToSearchExistingPage();
321         searchExistingPage.searchForInstanceByUuid(instanceUUID);
322         return searchExistingPage;
323     }
324
325
326     void goToExistingInstanceByIdNoWait(String instanceUUID) {
327         SearchExistingPage searchExistingPage = searchExistingInstanceById(instanceUUID);
328         searchExistingPage.clickEditViewByInstanceId(instanceUUID);
329     }
330
331     void resumeVFModule(String vfModuleName, String lcpRegion, String tenant, String legacyRegion, ArrayList<String> permittedTenants){
332         ViewEditPage viewEditPage = new ViewEditPage();
333         viewEditPage.clickResumeButton(vfModuleName);
334         viewEditPage.selectLCPRegion(lcpRegion);
335         assertDropdownPermittedItemsByValue(permittedTenants, Constants.ViewEdit.TENANT_OPTION_CLASS);
336         viewEditPage.selectTenant(tenant);
337         viewEditPage.setLegacyRegion(legacyRegion);
338         viewEditPage.clickConfirmButtonInResumeDelete();
339         assertSuccessfulVFModuleCreation();
340         viewEditPage.clickCommitCloseButton();
341         GeneralUIUtils.ultimateWait();
342     }
343
344     void goToExistingInstanceByName(String instanceName) {
345         SearchExistingPage searchExistingPage = new SearchExistingPage();
346         SideMenu.navigateToSearchExistingPage();
347         searchExistingPage.searchForInstanceByName(instanceName);
348         WebElement instanceIdRow = GeneralUIUtils.getWebElementByTestID(Constants.INSTANCE_ID_FOR_NAME_TEST_ID_PREFIX + instanceName, 30);
349         String instanceId = instanceIdRow.getText();
350         assertViewEditButtonState( Constants.VIEW_EDIT_BUTTON_TEXT, instanceId);
351         searchExistingPage.clickEditViewByInstanceId(instanceId);
352         GeneralUIUtils.ultimateWait();
353     }
354
355     String confirmFilterById(String instanceName, String instanceUUID) {
356         WebElement filter = GeneralUIUtils.getWebElementByTestID(Constants.FILTER_SUBSCRIBER_DETAILS_ID, 30);
357         filter.sendKeys(instanceUUID);
358
359         WebElement firstElement = GeneralUIUtils.getWebElementByTestID(Constants.INSTANCE_ID_FOR_NAME_TEST_ID_PREFIX + instanceName, 30);
360         String filteredId = firstElement.getText();
361         Assert.assertTrue(filteredId.equals(instanceUUID));
362         return filteredId;
363     }
364
365     void goToExistingInstanceBySubscriber(String subscriberName,String instanceName,String instanceUUID) {
366         SearchExistingPage searchExistingPage = new SearchExistingPage();
367         SideMenu.navigateToSearchExistingPage();
368         SelectOption.byIdAndVisibleText(Constants.EditExistingInstance.SELECT_SUBSCRIBER, subscriberName);
369         searchExistingPage.clickSubmitButton();
370         GeneralUIUtils.ultimateWait();
371         confirmFilterById(instanceName, instanceUUID);
372         searchExistingPage.clickEditViewByInstanceId(instanceUUID);
373         GeneralUIUtils.ultimateWait();
374     }
375
376     void selectMsoTestApiOption(String msoTestApiOption) {
377         final String id = "selectTestApi";
378         final String sectionId = "selectTestApiSection";
379
380         SideMenu.navigateToWelcomePage();
381
382         if (Exists.byId(sectionId)) {
383             final JavascriptExecutor javascriptExecutor = (JavascriptExecutor) GeneralUIUtils.getDriver();
384             javascriptExecutor.executeScript(
385                     "document.getElementById('" + sectionId + "').style.visibility = 'inherit';"
386             );
387
388             if (null == SelectOption.byIdAndVisibleText(id, msoTestApiOption)) {
389                 Assert.fail("selectMsoTestApiOptionIfPossible couldnt apply " + msoTestApiOption);
390             }
391         }
392     }
393
394     protected void assertModelInfo(Map<String, String> expectedMetadata, boolean withPrefix) {
395         Wait.angularHttpRequestsLoaded();
396         GeneralUIUtils.ultimateWait();
397         for (Map.Entry<String, String> item: expectedMetadata.entrySet()) {
398             assertMetadataItem(item.getKey(), item.getValue(), withPrefix);
399         }
400     }
401
402     protected <T> void setNewInstance_leftPane_assertModelDataCorrect(Map<String, String> modelKeyToDataTestsIdMap, String prefix, T model) {
403         modelKeyToDataTestsIdMap.forEach((fieldName, dataTestsId) -> {
404             WebElement webElement = Get.byTestId(prefix + dataTestsId);
405             assertEquals(webElement.getText(), getServiceFieldByName(fieldName, model));
406         });
407     }
408
409     protected <T> void setNewInstance_leftPane_assertModelLabelsVisibilityCorrect(Map<String, String> modelKeyToDataTestsIdMap, String prefix, T model) {
410         modelKeyToDataTestsIdMap.forEach((fieldName, dataTestsId) -> {
411             WebElement webElement = Get.byTestId(prefix + dataTestsId);
412             String field = getServiceFieldByName(fieldName, model);
413             assertEquals(webElement.isDisplayed(), !(StringUtils.isEmpty(field)) , dataTestsId + " label shouldn't appear when " + fieldName + " is empty");
414         });
415     }
416
417     private <T> String getServiceFieldByName(String name, T model) {
418         try {
419             return model.getClass().getField(name).get(model).toString();
420         } catch (IllegalAccessException | NoSuchFieldException e) {
421             throw new RuntimeException(e);
422         }
423     }
424
425     private void assertMetadataItem(String keyTestId, String value, boolean withPrefix) {
426         String elementTestId = (withPrefix ? Constants.ServiceModelInfo.INFO_TEST_ID_PREFIX:"") + keyTestId;
427         String infoItemText = GeneralUIUtils.getWebElementByTestID(elementTestId, 60).getText();
428         Assert.assertThat(String.format(Constants.ServiceModelInfo.METADETA_ERROR_MESSAGE, elementTestId),  infoItemText, is(value));
429     }
430
431     public DeployMacroDialogBase getMacroDialog(){
432         if (Features.FLAG_ASYNC_INSTANTIATION.isActive()) {
433             VidBasePage vidBasePage =new VidBasePage();
434             vidBasePage.goToIframe();
435             return new DeployMacroDialog();
436         }
437         else
438             return  new DeployMacroDialogOld();
439     }
440
441     protected void loadServicePopup(String zipFileName, String modelVersionId ) {
442         String modelInvariantId = "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0";
443         String subscriberId = "e433710f-9217-458d-a79d-1c7aff376d89";
444         registerExpectationForServiceDeployment(
445                 ServiceDeployment.ASYNC,
446                 ImmutableList.of(
447                     new ModelInfo(modelVersionId, modelInvariantId, zipFileName),
448                     new ModelInfo("f4d84bb4-a416-4b4e-997e-0059973630b9", "598e3f9e-3244-4d8f-a8e0-0e5d7a29eda9", "service-AdiodVmxVpeBvService488-csar-annotations.zip")
449                 ),
450                 subscriberId);
451         SideMenu.navigateToBrowseASDCPage();
452         GeneralUIUtils.ultimateWait();
453         loadServicePopupOnBrowseASDCPage(modelVersionId);
454     }
455
456     protected void loadServicePopupOnBrowseASDCPage(String modelVersionId ) {
457         DeployMacroDialog deployMacroDialog = new DeployMacroDialog();
458         deployMacroDialog.goOutFromIframe();
459         deployMacroDialog.clickDeployServiceButtonByServiceUUID(modelVersionId);
460         deployMacroDialog.goToIframe();
461         GeneralUIUtils.ultimateWait();
462         Wait.byText("Model version");
463     }
464
465     public void assertSetButtonDisabled(String buttonTestId) {
466         WebElement webElement = Get.byTestId(buttonTestId);
467         org.testng.Assert.assertFalse(webElement.isEnabled(), "Set button should be disabled if not all mandatory fields are field.");
468     }
469
470     public void assertSetButtonEnabled(String buttonTestId) {
471
472         WebElement webElement = Get.byTestId(buttonTestId);
473         org.testng.Assert.assertTrue(webElement.isEnabled(), "Set button should be enabled if all mandatory fields are field.");
474     }
475
476     public void assertElementDisabled(String id) {
477         WebElement webElement = Get.byId(id);
478         assert webElement != null;
479         org.testng.Assert.assertFalse(webElement.isEnabled(), "field should be disabled if the field it depends on was not selected yet.");
480     }
481
482     protected int getUserIdNumberFromDB(User user) {
483         try (Connection connection = DriverManager.getConnection(DB_CONFIG.url, DB_CONFIG.username, DB_CONFIG.password)) {
484             Statement stmt = connection.createStatement();
485             ResultSet userIdResultSet;
486             userIdResultSet = stmt.executeQuery("SELECT USER_ID FROM fn_user where LOGIN_ID = '" + user.credentials.userId + "'");
487             Assert.assertTrue("Exactly one user should be found", userIdResultSet.next());
488             int userId = userIdResultSet.getInt("USER_ID");
489             Assert.assertFalse("There are more than one user for id " + userId, userIdResultSet.next());
490             return userId;
491         } catch (SQLException e) {
492             throw new IllegalStateException("Cannot connect the database!", e);
493         }
494     }
495
496     protected List<Integer> getRoleIDsAssignedToUser(int userId) {
497         try (Connection connection = DriverManager.getConnection(DB_CONFIG.url, DB_CONFIG.username, DB_CONFIG.password)) {
498             Statement stmt = connection.createStatement();
499             ResultSet userRolesResultSet;
500             userRolesResultSet = stmt.executeQuery("SELECT ROLE_ID FROM fn_user_role where USER_ID = '" + userId + "' order by ROLE_ID");
501
502             List<Integer> userRoles = new ArrayList<Integer>();
503             while (userRolesResultSet.next()) {
504                 userRoles.add(userRolesResultSet.getInt("ROLE_ID"));
505             }
506             return userRoles;
507         } catch (SQLException e) {
508             throw new IllegalStateException("Cannot connect the database!", e);
509         }
510     }
511
512     protected void navigateToViewEditPageOfuspVoiceVidTest444(String aaiModelVersionId) {
513         VidBasePage vidBasePage = new VidBasePage();
514         SideMenu.navigateToWelcomePage();
515         vidBasePage.navigateTo("serviceModels.htm#/instantiate?" +
516                 "subscriberId=e433710f-9217-458d-a79d-1c7aff376d89&" +
517                 "subscriberName=USP%20VOICE&" +
518                 "serviceType=VIRTUAL%20USP&" +
519                 "serviceInstanceId=3f93c7cb-2fd0-4557-9514-e189b7b04f9d&" +
520                 "aaiModelVersionId=" + aaiModelVersionId + "&" +
521                 "isPermitted=true");
522         GeneralUIUtils.ultimateWait();
523     }
524 }