add new cases; add Epic, Feature, Description; add delete entity methods, refactoring

This commit is contained in:
Seraphym-Tuhai 2023-04-27 12:03:19 +03:00
parent 0483306c83
commit 957c5b74d7
8 changed files with 135 additions and 42 deletions

View File

@ -30,7 +30,6 @@ import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.alarm.Alarm;
import org.thingsboard.server.common.data.asset.Asset;

View File

@ -39,6 +39,11 @@ import org.testng.annotations.BeforeMethod;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.asset.AssetProfile;
import org.thingsboard.server.common.data.id.AlarmId;
import org.thingsboard.server.common.data.id.AssetId;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.EntityViewId;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.common.data.rule.RuleChain;
import org.thingsboard.server.msa.AbstractContainerTest;
@ -221,4 +226,40 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
getWebStorage().getLocalStorage().clear();
getWebStorage().getSessionStorage().clear();
}
public void deleteAlarmById(AlarmId alarmId) {
if (alarmId != null) {
testRestClient.deleteAlarm(alarmId);
}
}
public void deleteAlarmsByIds(AlarmId... alarmIds) {
for (AlarmId alarmId : alarmIds) {
deleteAlarmById(alarmId);
}
}
public void deleteCustomerById(CustomerId customerId) {
if (customerId != null) {
testRestClient.deleteCustomer(customerId);
}
}
public void deleteDeviceById(DeviceId deviceId) {
if (deviceId != null) {
testRestClient.deleteDevice(deviceId);
}
}
public void deleteAssetById(AssetId assetId) {
if (assetId != null) {
testRestClient.deleteAsset(assetId);
}
}
public void deleteEntityView(EntityViewId entityViewId) {
if (entityViewId != null) {
testRestClient.deleteEntityView(entityViewId);
}
}
}

View File

@ -31,7 +31,7 @@ public class AlarmDetailsEntityTabElements extends OtherPageElements {
private static final String ASSIGN_USER_DISPLAY_NAME = "//span[@class='user-display-name'][contains(text(),'%s')]";
private static final String SEARCH_FIELD = "//input[@placeholder='Search users']";
private static final String UNASSIGNED_BTN = "//div[@role='listbox']//mat-icon[text() = 'account_circle']/following-sibling::span";
private static final String UNASSIGNED = "//span[text() = '%s']/ancestor::mat-row//span[@class='assignee-cell']/mat-icon[text() = 'account_circle']/following-sibling::span";
private static final String UNASSIGNED = "//span[text() = '%s']/ancestor::mat-row//span[@class='assignee-cell']//mat-icon[text() = 'account_circle']/following-sibling::span";
private static final String ALARM_DETAILS_BTN = "//span[text() = '%s']/ancestor::mat-row//mat-icon[contains(text(),'more_horiz')]/parent::button";
private static final String ACCESS_FORBIDDEN_DIALOG_VIEW = "//h2[text() = 'Access Forbidden']/parent::tb-confirm-dialog";
private static final String ALARM_ASSIGNEE_DROPDOWN = "//tb-alarm-assignee-panel";

View File

@ -15,6 +15,7 @@
*/
package org.thingsboard.server.msa.ui.tests.assignee;
import io.qameta.allure.Epic;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
@ -34,6 +35,7 @@ import org.thingsboard.server.msa.ui.utils.EntityPrototypes;
import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random;
@Epic("Alarm assign")
abstract public class AbstractAssignTest extends AbstractDriverBaseTest {
protected AlarmId alarmId;
@ -42,7 +44,6 @@ abstract public class AbstractAssignTest extends AbstractDriverBaseTest {
protected UserId userId;
protected UserId userWithNameId;
protected CustomerId customerId;
protected String deviceName;
protected String userName;
protected String customerTitle;
@ -50,7 +51,6 @@ abstract public class AbstractAssignTest extends AbstractDriverBaseTest {
protected String userWithNameEmail;
protected String alarmType;
protected String assignedAlarmType;
protected SideBarMenuViewHelper sideBarMenuView;
protected AlarmDetailsEntityTabHelper alarmPage;
protected DevicePageHelper devicePage;
@ -82,8 +82,8 @@ abstract public class AbstractAssignTest extends AbstractDriverBaseTest {
@AfterClass
public void deleteCommonEntities() {
testRestClient.deleteCustomer(customerId);
testRestClient.deleteDevice(deviceId);
deleteCustomerById(customerId);
deleteDeviceById(deviceId);
}
@BeforeMethod
@ -94,8 +94,7 @@ abstract public class AbstractAssignTest extends AbstractDriverBaseTest {
@AfterMethod
public void deleteCommonCreatedAlarms() {
testRestClient.deleteAlarm(alarmId);
testRestClient.deleteAlarm(assignedAlarmId);
deleteAlarmsByIds(alarmId, assignedAlarmId);
}
public void loginByUser(String userEmail) {

View File

@ -15,6 +15,8 @@
*/
package org.thingsboard.server.msa.ui.tests.assignee;
import io.qameta.allure.Description;
import io.qameta.allure.Feature;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
@ -32,6 +34,7 @@ import org.thingsboard.server.msa.ui.utils.EntityPrototypes;
import static org.assertj.core.api.Assertions.assertThat;
import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random;
@Feature("Assign from details tab of entity (by tenant)")
public class AssignDetailsTabAssignTest extends AbstractAssignTest {
private AssetId assetId;
@ -41,7 +44,6 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
private AlarmId assetAlarmId;
private AlarmId entityViewAlarmId;
private EntityViewId entityViewId;
private String assetName;
private String entityViewName;
private String propagateAlarmType;
@ -49,7 +51,6 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
private String customerAlarmType;
private String assetAlarmType;
private String entityViewAlarmType;
private AssetPageHelper assetPage;
private EntityViewPageHelper entityViewPage;
@ -81,17 +82,16 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
@AfterClass
public void deleteTestEntities() {
testRestClient.deleteAlarm(customerAlarmId);
testRestClient.deleteAlarm(assetAlarmId);
testRestClient.deleteAlarm(entityViewAlarmId);
testRestClient.deleteAsset(assetId);
testRestClient.deleteEntityView(entityViewId);
deleteAlarmById(customerAlarmId);
deleteAlarmById(assetAlarmId);
deleteAlarmById(entityViewAlarmId);
deleteAssetById(assetId);
deleteEntityView(entityViewId);
}
@AfterMethod
public void deleteTestAlarms() {
testRestClient.deleteAlarm(propageteAlarmId);
testRestClient.deleteAlarm(propageteAssigneAlarmId);
deleteAlarmsByIds(propageteAlarmId, propageteAssigneAlarmId);
}
@DataProvider
@ -108,6 +108,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
{propagateAssignedAlarmType}};
}
@Description("Can assign alarm to yourself/Can assign propagate alarm to yourself")
@Test(dataProvider = "alarms")
public void assignAlarmToYourself(String alarm) {
sideBarMenuView.goToDevicesPage();
@ -117,6 +118,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Description("Can assign alarm to another user/Can assign propagate alarm to another user")
@Test(dataProvider = "alarms")
public void assignAlarmToAnotherUser(String alarm) {
sideBarMenuView.goToDevicesPage();
@ -126,6 +128,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(userEmail));
}
@Description("Can unassign alarm/Can unassign propagate alarm")
@Test(dataProvider = "assignedAlarms")
public void unassignedAlarm(String assignedAlarm) {
sideBarMenuView.goToDevicesPage();
@ -135,6 +138,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.unassigned(assignedAlarm));
}
@Description("Can reassign alarm to another user/Can reassign propagate alarm to another user")
@Test(dataProvider = "assignedAlarms")
public void reassignAlarm(String assignedAlarm) {
sideBarMenuView.goToDevicesPage();
@ -144,6 +148,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Description("Search by email")
@Test
public void searchByEmail() {
sideBarMenuView.goToDevicesPage();
@ -155,6 +160,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
alarmPage.assignUsers().forEach(this::assertIsDisplayed);
}
@Description("Search by name")
@Test(groups = "broken")
public void searchByName() {
sideBarMenuView.goToDevicesPage();
@ -166,6 +172,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
alarmPage.assignUsers().forEach(this::assertIsDisplayed);
}
@Description("Assign alarm to yourself from details of alarm")
@Test
public void assignAlarmToYourselfFromDetails() {
sideBarMenuView.goToDevicesPage();
@ -177,6 +184,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Description("Assign alarm to another user from details of alarm")
@Test
public void assignAlarmToAnotherUserFromDetails() {
sideBarMenuView.goToDevicesPage();
@ -188,6 +196,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(userEmail));
}
@Description("Unassign alarm from details of alarm")
@Test
public void unassignedAlarmFromDetails() {
sideBarMenuView.goToDevicesPage();
@ -199,6 +208,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.unassigned(assignedAlarmType));
}
@Description("Reassign alarm to another user from details of alarm")
@Test
public void reassignAlarmFromDetails() {
sideBarMenuView.goToDevicesPage();
@ -210,6 +220,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Description("Assign alarm to yourself for Customer entity details")
@Test
public void assignCustomerAlarmToYourself() {
sideBarMenuView.customerBtn().click();
@ -219,6 +230,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Description("Assign alarm to yourself for Asset details")
@Test
public void assignAssetAlarmToYourself() {
sideBarMenuView.goToAssetsPage();
@ -228,6 +240,7 @@ public class AssignDetailsTabAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Description("Assign alarm to yourself for Entity view details")
@Test
public void assignEntityViewsAlarmToYourself() {
sideBarMenuView.goToEntityViewsPage();

View File

@ -15,6 +15,8 @@
*/
package org.thingsboard.server.msa.ui.tests.assignee;
import io.qameta.allure.Description;
import io.qameta.allure.Feature;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@ -26,13 +28,14 @@ import org.thingsboard.server.msa.ui.utils.EntityPrototypes;
import static org.thingsboard.server.msa.ui.base.AbstractBasePage.random;
@Feature("Assign from details tab of entity (by customer)")
public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
private AlarmId tenantAlarmId;
private DeviceId tenantDeviceId;
private String tenantDeviceName;
private String tenantAlarmType;
private AlarmId assignedTenantAlarmId;
@BeforeMethod
public void generateTenantEntity() {
@ -48,11 +51,12 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
@AfterMethod
public void deleteTenantEntity() {
testRestClient.deleteAlarm(tenantAlarmId);
testRestClient.deleteDevice(tenantDeviceId);
deleteAlarmsByIds(tenantAlarmId, assignedTenantAlarmId);
deleteDeviceById(tenantDeviceId);
clearStorage();
}
@Description("Can assign alarm to yourself")
@Test
public void assignAlarmToYourselfCustomer() {
loginByUser(userEmail);
@ -63,6 +67,7 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(userEmail));
}
@Description("Can reassign alarm from himself to another customer user")
@Test
public void reassignAlarmByCustomerFromAnotherCustomerUser() {
loginByUser(userWithNameEmail);
@ -73,18 +78,9 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(userName));
}
@Description("Can unassign alarm from himself")
@Test
public void unassignedAlarmFromCustomer() {
loginByUser(userWithNameEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.unassignedAlarm(assignedAlarmType);
assertIsDisplayed(alarmPage.unassigned(assignedAlarmType));
}
@Test
public void unassignedAlarmFromAnotherUserFromCustomer() {
loginByUser(userEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
@ -93,6 +89,36 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.unassigned(assignedAlarmType));
}
@Description("Unassign alarm from any other customer user")
@Test
public void unassignedAlarmFromAnotherUserFromCustomer() {
loginByUser(userWithNameEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.unassignedAlarm(assignedAlarmType);
assertIsDisplayed(alarmPage.unassigned(assignedAlarmType));
}
@Description("Unassign alarm from any tenant user")
@Test
public void unassignedAlarmFromTenant() {
String assignedTenantAlarmType = "Test tenant assigned alarm " + random();
assignedTenantAlarmId = testRestClient.postAlarm(EntityPrototypes.defaultAlarm(deviceId, assignedTenantAlarmType)).getId();
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.assignAlarmTo(assignedTenantAlarmType, Const.TENANT_EMAIL);
devicePage.closeDeviceDetailsViewBtn().click();
loginByUser(userWithNameEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(deviceName);
alarmPage.unassignedAlarm(assignedTenantAlarmType);
assertIsDisplayed(alarmPage.unassigned(assignedTenantAlarmType));
}
@Description("Check the display of names (emails)")
@Test
public void checkTheDisplayOfNamesEmailsFromCustomer() {
sideBarMenuView.goToDevicesPage();
@ -108,6 +134,7 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
assertIsDisplayed(alarmPage.assignedUser(Const.TENANT_EMAIL));
}
@Description("Check the reassign tenant for old alarm on device")
@Test
public void reassignTenantForOldAlarm() {
sideBarMenuView.goToDevicesPage();
@ -121,6 +148,24 @@ public class AssignDetailsTabFromCustomerAssignTest extends AbstractAssignTest {
devicePage.openDeviceAlarms(tenantDeviceName);
jsClick(alarmPage.assignBtn(tenantAlarmType));
assertIsDisplayed(alarmPage.accessForbiddenDialogView());
}
@Description("Check the reassign tenant for old alarm on device")
@Test
public void reassignTenantForOldAlarmFromDetails() {
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(tenantDeviceName);
alarmPage.assignAlarmTo(tenantAlarmType, Const.TENANT_EMAIL);
devicePage.closeDeviceDetailsViewBtn().click();
devicePage.assignToCustomerBtn(tenantDeviceName).click();
devicePage.assignToCustomer(customerTitle);
loginByUser(userEmail);
sideBarMenuView.goToDevicesPage();
devicePage.openDeviceAlarms(tenantDeviceName);
alarmPage.alarmDetailsBtn(tenantAlarmType).click();
assertIsDisplayed(alarmPage.accessForbiddenDialogView());
}
}

View File

@ -36,11 +36,8 @@ import org.thingsboard.server.common.data.device.profile.DisabledDeviceProfilePr
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.notification.targets.platform.CustomerUsersFilter;
import org.thingsboard.server.common.data.rule.RuleChain;
import org.thingsboard.server.common.data.security.Authority;
import org.thingsboard.server.common.data.security.UserCredentials;
import org.thingsboard.server.common.data.settings.UserSettings;
public class EntityPrototypes {
@ -179,14 +176,14 @@ public class EntityPrototypes {
return user;
}
public static Device defaultDevicePrototype(String name){
public static Device defaultDevicePrototype(String name) {
Device device = new Device();
device.setName(name + RandomStringUtils.randomAlphanumeric(7));
device.setType("DEFAULT");
return device;
}
public static Device defaultDevicePrototype(String name, CustomerId id){
public static Device defaultDevicePrototype(String name, CustomerId id) {
Device device = new Device();
device.setName(name + RandomStringUtils.randomAlphanumeric(7));
device.setCustomerId(id);
@ -194,7 +191,7 @@ public class EntityPrototypes {
return device;
}
public static Asset defaultAssetPrototype(String name, CustomerId id){
public static Asset defaultAssetPrototype(String name, CustomerId id) {
Asset asset = new Asset();
asset.setName(name + RandomStringUtils.randomAlphanumeric(7));
asset.setCustomerId(id);
@ -202,7 +199,7 @@ public class EntityPrototypes {
return asset;
}
public static EntityView defaultEntityViewPrototype(String name, String type, String entityType){
public static EntityView defaultEntityViewPrototype(String name, String type, String entityType) {
EntityView entityView = new EntityView();
entityView.setName(name + RandomStringUtils.randomAlphanumeric(7));
entityView.setType(type + RandomStringUtils.randomAlphanumeric(7));

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Copyright © 2016-2023 The Thingsboard Authors
Copyright © 2016-2023 The Thingsboard Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@ -28,9 +28,8 @@
<exclude name="broken"/>
</run>
</groups>
<classes>
<class name="org.thingsboard.server.msa.ui.tests.assignee.AssignDetailsTabAssignTest"/>
<class name="org.thingsboard.server.msa.ui.tests.assignee.AssignDetailsTabFromCustomerAssignTest"/>
</classes>
<packages>
<package name="org.thingsboard.server.msa.ui.tests.assignee.*"/>
</packages>
</test>
</suite>