Notify edge in case assign entity to public customer
This commit is contained in:
parent
59b4049560
commit
09b41e1aef
@ -426,11 +426,7 @@ public class EntityViewController extends BaseController {
|
||||
checkParameter(ENTITY_VIEW_ID, strEntityViewId);
|
||||
EntityViewId entityViewId = new EntityViewId(toUUID(strEntityViewId));
|
||||
checkEntityViewId(entityViewId, Operation.ASSIGN_TO_CUSTOMER);
|
||||
|
||||
Customer publicCustomer = customerService.findOrCreatePublicCustomer(getTenantId());
|
||||
|
||||
return tbEntityViewService.assignEntityViewToPublicCustomer(getTenantId(), getCurrentUser().getCustomerId(),
|
||||
publicCustomer, entityViewId, getCurrentUser());
|
||||
return tbEntityViewService.assignEntityViewToPublicCustomer(getTenantId(), entityViewId, getCurrentUser());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "Assign entity view to edge (assignEntityViewToEdge)",
|
||||
|
||||
@ -130,13 +130,9 @@ public class DefaultTbNotificationEntityService implements TbNotificationEntityS
|
||||
public <E extends HasName, I extends EntityId> void notifyAssignOrUnassignEntityToCustomer(TenantId tenantId, I entityId,
|
||||
CustomerId customerId, E entity,
|
||||
ActionType actionType,
|
||||
User user, boolean sendToEdge,
|
||||
Object... additionalInfo) {
|
||||
User user, Object... additionalInfo) {
|
||||
logEntityAction(tenantId, entityId, entity, customerId, actionType, user, additionalInfo);
|
||||
|
||||
if (sendToEdge) {
|
||||
sendEntityNotificationMsg(tenantId, entityId, edgeTypeByActionType(actionType), JacksonUtil.toString(customerId));
|
||||
}
|
||||
sendEntityNotificationMsg(tenantId, entityId, edgeTypeByActionType(actionType), JacksonUtil.toString(customerId));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -73,8 +73,7 @@ public interface TbNotificationEntityService {
|
||||
<E extends HasName, I extends EntityId> void notifyAssignOrUnassignEntityToCustomer(TenantId tenantId, I entityId,
|
||||
CustomerId customerId, E entity,
|
||||
ActionType actionType,
|
||||
User user, boolean sendToEdge,
|
||||
Object... additionalInfo);
|
||||
User user, Object... additionalInfo);
|
||||
|
||||
<E extends HasName, I extends EntityId> void notifyAssignOrUnassignEntityToEdge(TenantId tenantId, I entityId,
|
||||
CustomerId customerId, EdgeId edgeId,
|
||||
|
||||
@ -98,7 +98,7 @@ public class DefaultTbAssetService extends AbstractTbEntityService implements Tb
|
||||
try {
|
||||
Asset savedAsset = checkNotNull(assetService.assignAssetToCustomer(tenantId, assetId, customerId));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, assetId, customerId, savedAsset,
|
||||
actionType, user, true, assetId.toString(), customerId.toString(), customer.getName());
|
||||
actionType, user, assetId.toString(), customerId.toString(), customer.getName());
|
||||
|
||||
return savedAsset;
|
||||
} catch (Exception e) {
|
||||
@ -115,7 +115,7 @@ public class DefaultTbAssetService extends AbstractTbEntityService implements Tb
|
||||
Asset savedAsset = checkNotNull(assetService.unassignAssetFromCustomer(tenantId, assetId));
|
||||
CustomerId customerId = customer.getId();
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, assetId, customerId, savedAsset,
|
||||
actionType, user, true, assetId.toString(), customerId.toString(), customer.getName());
|
||||
actionType, user, assetId.toString(), customerId.toString(), customer.getName());
|
||||
|
||||
return savedAsset;
|
||||
} catch (Exception e) {
|
||||
@ -131,7 +131,7 @@ public class DefaultTbAssetService extends AbstractTbEntityService implements Tb
|
||||
Customer publicCustomer = customerService.findOrCreatePublicCustomer(tenantId);
|
||||
Asset savedAsset = checkNotNull(assetService.assignAssetToCustomer(tenantId, assetId, publicCustomer.getId()));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, assetId, savedAsset.getCustomerId(), savedAsset,
|
||||
actionType, user, false, actionType.toString(), publicCustomer.getId().toString(), publicCustomer.getName());
|
||||
actionType, user, assetId.toString(), publicCustomer.getId().toString(), publicCustomer.getName());
|
||||
|
||||
return savedAsset;
|
||||
} catch (Exception e) {
|
||||
|
||||
@ -84,7 +84,7 @@ public class DefaultTbDashboardService extends AbstractTbEntityService implement
|
||||
try {
|
||||
Dashboard savedDashboard = checkNotNull(dashboardService.assignDashboardToCustomer(tenantId, dashboardId, customerId));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, dashboardId, customerId, savedDashboard,
|
||||
actionType, user, true, dashboardId.toString(), customerId.toString(), customer.getName());
|
||||
actionType, user, dashboardId.toString(), customerId.toString(), customer.getName());
|
||||
return savedDashboard;
|
||||
} catch (Exception e) {
|
||||
notificationEntityService.logEntityAction(tenantId, emptyId(EntityType.DASHBOARD), actionType,
|
||||
@ -102,7 +102,7 @@ public class DefaultTbDashboardService extends AbstractTbEntityService implement
|
||||
Customer publicCustomer = customerService.findOrCreatePublicCustomer(tenantId);
|
||||
Dashboard savedDashboard = checkNotNull(dashboardService.assignDashboardToCustomer(tenantId, dashboardId, publicCustomer.getId()));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, dashboardId, publicCustomer.getId(), savedDashboard,
|
||||
actionType, user, false, dashboardId.toString(),
|
||||
actionType, user, dashboardId.toString(),
|
||||
publicCustomer.getId().toString(), publicCustomer.getName());
|
||||
return savedDashboard;
|
||||
} catch (Exception e) {
|
||||
@ -120,7 +120,7 @@ public class DefaultTbDashboardService extends AbstractTbEntityService implement
|
||||
Customer publicCustomer = customerService.findOrCreatePublicCustomer(tenantId);
|
||||
Dashboard savedDashboard = checkNotNull(dashboardService.unassignDashboardFromCustomer(tenantId, dashboardId, publicCustomer.getId()));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, dashboardId, publicCustomer.getId(), dashboard,
|
||||
actionType, user, false, dashboardId.toString(),
|
||||
actionType, user, dashboardId.toString(),
|
||||
publicCustomer.getId().toString(), publicCustomer.getName());
|
||||
return savedDashboard;
|
||||
} catch (Exception e) {
|
||||
@ -160,14 +160,14 @@ public class DefaultTbDashboardService extends AbstractTbEntityService implement
|
||||
savedDashboard = checkNotNull(dashboardService.assignDashboardToCustomer(tenantId, dashboardId, customerId));
|
||||
ShortCustomerInfo customerInfo = savedDashboard.getAssignedCustomerInfo(customerId);
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, savedDashboard.getId(), customerId, savedDashboard,
|
||||
actionType, user, true, dashboardId.toString(), customerId.toString(), customerInfo.getTitle());
|
||||
actionType, user, dashboardId.toString(), customerId.toString(), customerInfo.getTitle());
|
||||
}
|
||||
actionType = ActionType.UNASSIGNED_FROM_CUSTOMER;
|
||||
for (CustomerId customerId : removedCustomerIds) {
|
||||
ShortCustomerInfo customerInfo = dashboard.getAssignedCustomerInfo(customerId);
|
||||
savedDashboard = checkNotNull(dashboardService.unassignDashboardFromCustomer(tenantId, dashboardId, customerId));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, savedDashboard.getId(), customerId, savedDashboard,
|
||||
ActionType.UNASSIGNED_FROM_CUSTOMER, user, true, dashboardId.toString(), customerId.toString(), customerInfo.getTitle());
|
||||
ActionType.UNASSIGNED_FROM_CUSTOMER, user, dashboardId.toString(), customerId.toString(), customerInfo.getTitle());
|
||||
}
|
||||
return savedDashboard;
|
||||
}
|
||||
@ -197,7 +197,7 @@ public class DefaultTbDashboardService extends AbstractTbEntityService implement
|
||||
savedDashboard = checkNotNull(dashboardService.assignDashboardToCustomer(tenantId, dashboardId, customerId));
|
||||
ShortCustomerInfo customerInfo = savedDashboard.getAssignedCustomerInfo(customerId);
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, dashboardId, customerId, savedDashboard,
|
||||
actionType, user, true, dashboardId.toString(), customerId.toString(), customerInfo.getTitle());
|
||||
actionType, user, dashboardId.toString(), customerId.toString(), customerInfo.getTitle());
|
||||
}
|
||||
return savedDashboard;
|
||||
}
|
||||
@ -227,7 +227,7 @@ public class DefaultTbDashboardService extends AbstractTbEntityService implement
|
||||
ShortCustomerInfo customerInfo = dashboard.getAssignedCustomerInfo(customerId);
|
||||
savedDashboard = checkNotNull(dashboardService.unassignDashboardFromCustomer(tenantId, dashboardId, customerId));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, dashboardId, customerId, savedDashboard,
|
||||
actionType, user, true, dashboardId.toString(), customerId.toString(), customerInfo.getTitle());
|
||||
actionType, user, dashboardId.toString(), customerId.toString(), customerInfo.getTitle());
|
||||
}
|
||||
return savedDashboard;
|
||||
}
|
||||
@ -282,7 +282,7 @@ public class DefaultTbDashboardService extends AbstractTbEntityService implement
|
||||
try {
|
||||
Dashboard savedDashboard = checkNotNull(dashboardService.unassignDashboardFromCustomer(tenantId, dashboardId, customer.getId()));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, dashboardId, customer.getId(), savedDashboard,
|
||||
actionType, user, true, dashboardId.toString(), customer.getId().toString(), customer.getName());
|
||||
actionType, user, dashboardId.toString(), customer.getId().toString(), customer.getName());
|
||||
return savedDashboard;
|
||||
} catch (Exception e) {
|
||||
notificationEntityService.logEntityAction(tenantId, emptyId(EntityType.DASHBOARD), actionType, user, e, dashboardId.toString());
|
||||
|
||||
@ -117,7 +117,7 @@ public class DefaultTbDeviceService extends AbstractTbEntityService implements T
|
||||
try {
|
||||
Device savedDevice = checkNotNull(deviceService.assignDeviceToCustomer(tenantId, deviceId, customerId));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, deviceId, customerId, savedDevice,
|
||||
actionType, user, true, deviceId.toString(), customerId.toString(), customer.getName());
|
||||
actionType, user, deviceId.toString(), customerId.toString(), customer.getName());
|
||||
|
||||
return savedDevice;
|
||||
} catch (Exception e) {
|
||||
@ -137,7 +137,7 @@ public class DefaultTbDeviceService extends AbstractTbEntityService implements T
|
||||
CustomerId customerId = customer.getId();
|
||||
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, deviceId, customerId, savedDevice,
|
||||
actionType, user, true, deviceId.toString(), customerId.toString(), customer.getName());
|
||||
actionType, user, deviceId.toString(), customerId.toString(), customer.getName());
|
||||
|
||||
return savedDevice;
|
||||
} catch (Exception e) {
|
||||
@ -155,7 +155,7 @@ public class DefaultTbDeviceService extends AbstractTbEntityService implements T
|
||||
Device savedDevice = checkNotNull(deviceService.assignDeviceToCustomer(tenantId, deviceId, publicCustomer.getId()));
|
||||
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, deviceId, savedDevice.getCustomerId(), savedDevice,
|
||||
actionType, user, true, deviceId.toString(),
|
||||
actionType, user, deviceId.toString(),
|
||||
publicCustomer.getId().toString(), publicCustomer.getName());
|
||||
|
||||
return savedDevice;
|
||||
|
||||
@ -87,7 +87,7 @@ public class DefaultTbEdgeService extends AbstractTbEntityService implements TbE
|
||||
try {
|
||||
Edge savedEdge = checkNotNull(edgeService.assignEdgeToCustomer(tenantId, edgeId, customerId));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, edgeId, customerId, savedEdge,
|
||||
actionType, user, true, edgeId.toString(), customerId.toString(), customer.getName());
|
||||
actionType, user, edgeId.toString(), customerId.toString(), customer.getName());
|
||||
|
||||
return savedEdge;
|
||||
} catch (Exception e) {
|
||||
@ -106,7 +106,7 @@ public class DefaultTbEdgeService extends AbstractTbEntityService implements TbE
|
||||
try {
|
||||
Edge savedEdge = checkNotNull(edgeService.unassignEdgeFromCustomer(tenantId, edgeId));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, edgeId, customerId, savedEdge,
|
||||
actionType, user, true, edgeId.toString(), customerId.toString(), customer.getName());
|
||||
actionType, user, edgeId.toString(), customerId.toString(), customer.getName());
|
||||
return savedEdge;
|
||||
} catch (Exception e) {
|
||||
notificationEntityService.logEntityAction(tenantId, emptyId(EntityType.EDGE),
|
||||
|
||||
@ -149,7 +149,7 @@ public class DefaultTbEntityViewService extends AbstractTbEntityService implemen
|
||||
try {
|
||||
EntityView savedEntityView = checkNotNull(entityViewService.assignEntityViewToCustomer(tenantId, entityViewId, customerId));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, entityViewId, customerId, savedEntityView,
|
||||
ActionType.ASSIGNED_TO_CUSTOMER, user, true, entityViewId.toString(), customerId.toString(), customer.getName());
|
||||
ActionType.ASSIGNED_TO_CUSTOMER, user, entityViewId.toString(), customerId.toString(), customer.getName());
|
||||
return savedEntityView;
|
||||
} catch (Exception e) {
|
||||
notificationEntityService.logEntityAction(tenantId, emptyId(EntityType.ENTITY_VIEW),
|
||||
@ -159,18 +159,19 @@ public class DefaultTbEntityViewService extends AbstractTbEntityService implemen
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityView assignEntityViewToPublicCustomer(TenantId tenantId, CustomerId customerId, Customer publicCustomer,
|
||||
EntityViewId entityViewId, User user) throws ThingsboardException {
|
||||
public EntityView assignEntityViewToPublicCustomer(TenantId tenantId, EntityViewId entityViewId, User user) throws ThingsboardException {
|
||||
ActionType actionType = ActionType.ASSIGNED_TO_CUSTOMER;
|
||||
Customer publicCustomer = customerService.findOrCreatePublicCustomer(tenantId);
|
||||
try {
|
||||
EntityView savedEntityView = checkNotNull(entityViewService.assignEntityViewToCustomer(tenantId,
|
||||
entityViewId, publicCustomer.getId()));
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, entityViewId, customerId, savedEntityView,
|
||||
ActionType.ASSIGNED_TO_CUSTOMER, user, false, savedEntityView.getEntityId().toString(),
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, entityViewId, savedEntityView.getCustomerId(), savedEntityView,
|
||||
actionType, user, savedEntityView.getId().toString(),
|
||||
publicCustomer.getId().toString(), publicCustomer.getName());
|
||||
return savedEntityView;
|
||||
} catch (Exception e) {
|
||||
notificationEntityService.logEntityAction(tenantId, emptyId(EntityType.ENTITY_VIEW),
|
||||
ActionType.ASSIGNED_TO_CUSTOMER, user, e, entityViewId.toString());
|
||||
actionType, user, e, entityViewId.toString());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
@ -211,14 +212,17 @@ public class DefaultTbEntityViewService extends AbstractTbEntityService implemen
|
||||
|
||||
@Override
|
||||
public EntityView unassignEntityViewFromCustomer(TenantId tenantId, EntityViewId entityViewId, Customer customer, User user) throws ThingsboardException {
|
||||
ActionType actionType = ActionType.UNASSIGNED_FROM_CUSTOMER;
|
||||
try {
|
||||
EntityView savedEntityView = checkNotNull(entityViewService.unassignEntityViewFromCustomer(tenantId, entityViewId));
|
||||
|
||||
notificationEntityService.notifyAssignOrUnassignEntityToCustomer(tenantId, entityViewId, customer.getId(), savedEntityView,
|
||||
ActionType.UNASSIGNED_FROM_CUSTOMER, user, true, customer.getId().toString(), customer.getName());
|
||||
actionType, user, savedEntityView.getId().toString(), customer.getId().toString(), customer.getName());
|
||||
|
||||
return savedEntityView;
|
||||
} catch (Exception e) {
|
||||
notificationEntityService.logEntityAction(tenantId, emptyId(EntityType.ENTITY_VIEW),
|
||||
ActionType.UNASSIGNED_FROM_CUSTOMER, user, e, entityViewId.toString());
|
||||
actionType, user, e, entityViewId.toString());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,8 +39,7 @@ public interface TbEntityViewService extends ComponentLifecycleListener {
|
||||
|
||||
EntityView assignEntityViewToCustomer(TenantId tenantId, EntityViewId entityViewId, Customer customer, User user) throws ThingsboardException;
|
||||
|
||||
EntityView assignEntityViewToPublicCustomer(TenantId tenantId, CustomerId customerId, Customer publicCustomer,
|
||||
EntityViewId entityViewId, User user) throws ThingsboardException;
|
||||
EntityView assignEntityViewToPublicCustomer(TenantId tenantId, EntityViewId entityViewId, User user) throws ThingsboardException;
|
||||
|
||||
EntityView assignEntityViewToEdge(TenantId tenantId, CustomerId customerId, EntityViewId entityViewId, Edge edge, User user) throws ThingsboardException;
|
||||
|
||||
|
||||
@ -398,6 +398,41 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
||||
Assert.assertEquals(ModelConstants.NULL_UUID, foundAsset.getCustomerId().getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignUnassignAssetToPublicCustomer() throws Exception {
|
||||
Asset asset = new Asset();
|
||||
asset.setName("My asset");
|
||||
asset.setType("default");
|
||||
Asset savedAsset = doPost("/api/asset", asset, Asset.class);
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
Asset assignedAsset = doPost("/api/customer/public/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
||||
|
||||
Customer publicCustomer = doGet("/api/customer/" + assignedAsset.getCustomerId(), Customer.class);
|
||||
Assert.assertTrue(publicCustomer.isPublic());
|
||||
|
||||
testNotifyEntityAllOneTime(assignedAsset, assignedAsset.getId(), assignedAsset.getId(),
|
||||
savedTenant.getId(), publicCustomer.getId(), tenantAdmin.getId(), tenantAdmin.getEmail(),
|
||||
ActionType.ASSIGNED_TO_CUSTOMER, assignedAsset.getId().toString(), publicCustomer.getId().toString(), publicCustomer.getTitle());
|
||||
|
||||
Asset foundAsset = doGet("/api/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
||||
Assert.assertEquals(publicCustomer.getId(), foundAsset.getCustomerId());
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
Asset unassignedAsset =
|
||||
doDelete("/api/customer/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
||||
Assert.assertEquals(ModelConstants.NULL_UUID, unassignedAsset.getCustomerId().getId());
|
||||
|
||||
testNotifyEntityAllOneTime(savedAsset, savedAsset.getId(), savedAsset.getId(),
|
||||
savedTenant.getId(), publicCustomer.getId(), tenantAdmin.getId(), tenantAdmin.getEmail(),
|
||||
ActionType.UNASSIGNED_FROM_CUSTOMER, savedAsset.getId().toString(), publicCustomer.getId().toString(), publicCustomer.getTitle());
|
||||
|
||||
foundAsset = doGet("/api/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
||||
Assert.assertEquals(ModelConstants.NULL_UUID, foundAsset.getCustomerId().getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignAssetToNonExistentCustomer() throws Exception {
|
||||
Asset asset = new Asset();
|
||||
|
||||
@ -30,6 +30,7 @@ import org.springframework.test.context.ContextConfiguration;
|
||||
import org.thingsboard.server.common.data.Customer;
|
||||
import org.thingsboard.server.common.data.Dashboard;
|
||||
import org.thingsboard.server.common.data.DashboardInfo;
|
||||
import org.thingsboard.server.common.data.ShortCustomerInfo;
|
||||
import org.thingsboard.server.common.data.StringUtils;
|
||||
import org.thingsboard.server.common.data.Tenant;
|
||||
import org.thingsboard.server.common.data.User;
|
||||
@ -216,6 +217,49 @@ public abstract class BaseDashboardControllerTest extends AbstractControllerTest
|
||||
Assert.assertTrue(foundDashboard.getAssignedCustomers() == null || foundDashboard.getAssignedCustomers().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignUnassignDashboardToPublicCustomer() throws Exception {
|
||||
Dashboard dashboard = new Dashboard();
|
||||
dashboard.setTitle("My dashboard");
|
||||
Dashboard savedDashboard = doPost("/api/dashboard", dashboard, Dashboard.class);
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
Dashboard assignedDashboard = doPost("/api/customer/public/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class);
|
||||
|
||||
CustomerId publicCustomerId = null;
|
||||
for (ShortCustomerInfo assignedCustomer : assignedDashboard.getAssignedCustomers()) {
|
||||
if (assignedCustomer.isPublic()) {
|
||||
publicCustomerId = assignedCustomer.getCustomerId();
|
||||
}
|
||||
}
|
||||
Assert.assertNotNull(publicCustomerId);
|
||||
Customer publicCustomer = doGet("/api/customer/" + publicCustomerId, Customer.class);
|
||||
Assert.assertTrue(publicCustomer.isPublic());
|
||||
|
||||
testNotifyEntityAllOneTimeLogEntityActionEntityEqClass(assignedDashboard, assignedDashboard.getId(), assignedDashboard.getId(),
|
||||
savedTenant.getId(), publicCustomer.getId(), tenantAdmin.getId(), tenantAdmin.getEmail(), ActionType.ASSIGNED_TO_CUSTOMER,
|
||||
assignedDashboard .getId().getId().toString(), publicCustomer.getId().getId().toString(), publicCustomer.getTitle());
|
||||
|
||||
Dashboard foundDashboard = doGet("/api/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class);
|
||||
Assert.assertTrue(foundDashboard.getAssignedCustomers().contains(publicCustomer.toShortCustomerInfo()));
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
Dashboard unassignedDashboard =
|
||||
doDelete("/api/customer/public/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class);
|
||||
|
||||
testNotifyEntityAllOneTimeLogEntityActionEntityEqClass(assignedDashboard, assignedDashboard.getId(), assignedDashboard.getId(),
|
||||
savedTenant.getId(), publicCustomer.getId(), tenantAdmin.getId(), tenantAdmin.getEmail(), ActionType.UNASSIGNED_FROM_CUSTOMER,
|
||||
unassignedDashboard.getId().getId().toString(), publicCustomer.getId().getId().toString(), publicCustomer.getTitle());
|
||||
|
||||
Assert.assertTrue(unassignedDashboard.getAssignedCustomers() == null || unassignedDashboard.getAssignedCustomers().isEmpty());
|
||||
|
||||
foundDashboard = doGet("/api/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class);
|
||||
|
||||
Assert.assertTrue(foundDashboard.getAssignedCustomers() == null || foundDashboard.getAssignedCustomers().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignDashboardToNonExistentCustomer() throws Exception {
|
||||
Dashboard dashboard = new Dashboard();
|
||||
|
||||
@ -521,6 +521,45 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
Assert.assertEquals(ModelConstants.NULL_UUID, foundDevice.getCustomerId().getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignUnassignDeviceToPublicCustomer() throws Exception {
|
||||
Device device = new Device();
|
||||
device.setName("My device");
|
||||
device.setType("default");
|
||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService, gatewayNotificationsService);
|
||||
|
||||
Device assignedDevice = doPost("/api/customer/public/device/" + savedDevice.getId().getId(), Device.class);
|
||||
|
||||
Customer publicCustomer = doGet("/api/customer/" + assignedDevice.getCustomerId(), Customer.class);
|
||||
Assert.assertTrue(publicCustomer.isPublic());
|
||||
|
||||
testNotifyEntityAllOneTime(assignedDevice, assignedDevice.getId(), assignedDevice.getId(), savedTenant.getId(),
|
||||
publicCustomer.getId(), tenantAdmin.getId(), tenantAdmin.getEmail(), ActionType.ASSIGNED_TO_CUSTOMER,
|
||||
assignedDevice.getId().getId().toString(), publicCustomer.getId().getId().toString(),
|
||||
publicCustomer.getTitle());
|
||||
testNotificationUpdateGatewayNever();
|
||||
|
||||
Device foundDevice = doGet("/api/device/" + savedDevice.getId().getId(), Device.class);
|
||||
Assert.assertEquals(publicCustomer.getId(), foundDevice.getCustomerId());
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService, gatewayNotificationsService);
|
||||
|
||||
Device unassignedDevice =
|
||||
doDelete("/api/customer/device/" + savedDevice.getId().getId(), Device.class);
|
||||
Assert.assertEquals(ModelConstants.NULL_UUID, unassignedDevice.getCustomerId().getId());
|
||||
|
||||
testNotifyEntityAllOneTime(unassignedDevice, unassignedDevice.getId(), unassignedDevice.getId(), savedTenant.getId(),
|
||||
publicCustomer.getId(), tenantAdmin.getId(), tenantAdmin.getEmail(), ActionType.UNASSIGNED_FROM_CUSTOMER,
|
||||
unassignedDevice.getId().getId().toString(), publicCustomer.getId().getId().toString(),
|
||||
publicCustomer.getTitle());
|
||||
testNotificationDeleteGatewayNever();
|
||||
|
||||
foundDevice = doGet("/api/device/" + savedDevice.getId().getId(), Device.class);
|
||||
Assert.assertEquals(ModelConstants.NULL_UUID, foundDevice.getCustomerId().getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignDeviceToNonExistentCustomer() throws Exception {
|
||||
Device device = new Device();
|
||||
|
||||
@ -313,6 +313,39 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
|
||||
savedView.getCustomerId().getId().toString(), savedCustomer.getTitle());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignAndUnAssignedEntityViewToPublicCustomer() throws Exception {
|
||||
EntityView savedView = getNewSavedEntityView("Test entity view");
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
EntityView assignedView = doPost(
|
||||
"/api/customer/public/entityView/" + savedView.getId().getId().toString(),
|
||||
EntityView.class);
|
||||
Customer publicCustomer = doGet("/api/customer/" + assignedView.getCustomerId(), Customer.class);
|
||||
Assert.assertTrue(publicCustomer.isPublic());
|
||||
|
||||
testBroadcastEntityStateChangeEventNever(assignedView.getId());
|
||||
testNotifyEntityAllOneTime(assignedView, assignedView.getId(), assignedView.getId(),
|
||||
tenantId, assignedView.getCustomerId(), tenantAdminUserId, TENANT_ADMIN_EMAIL,
|
||||
ActionType.ASSIGNED_TO_CUSTOMER,
|
||||
assignedView.getId().getId().toString(), assignedView.getCustomerId().getId().toString(), publicCustomer.getTitle());
|
||||
|
||||
EntityView foundView = doGet("/api/entityView/" + savedView.getId().getId().toString(), EntityView.class);
|
||||
assertEquals(publicCustomer.getId(), foundView.getCustomerId());
|
||||
|
||||
EntityView unAssignedView = doDelete("/api/customer/entityView/" + savedView.getId().getId().toString(), EntityView.class);
|
||||
assertEquals(ModelConstants.NULL_UUID, unAssignedView.getCustomerId().getId());
|
||||
|
||||
foundView = doGet("/api/entityView/" + savedView.getId().getId().toString(), EntityView.class);
|
||||
assertEquals(ModelConstants.NULL_UUID, foundView.getCustomerId().getId());
|
||||
|
||||
testBroadcastEntityStateChangeEventNever(foundView.getId());
|
||||
testNotifyEntityAllOneTime(unAssignedView, unAssignedView.getId(), unAssignedView.getId(),
|
||||
tenantId, publicCustomer.getId(), tenantAdminUserId, TENANT_ADMIN_EMAIL,
|
||||
ActionType.UNASSIGNED_FROM_CUSTOMER,
|
||||
unAssignedView.getId().getId().toString(), publicCustomer.getId().getId().toString(), publicCustomer.getTitle());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAssignEntityViewToNonExistentCustomer() throws Exception {
|
||||
EntityView savedView = getNewSavedEntityView("Test entity view");
|
||||
|
||||
@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
import org.thingsboard.common.util.JacksonUtil;
|
||||
import org.thingsboard.server.cluster.TbClusterService;
|
||||
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.OtaPackageInfo;
|
||||
@ -70,6 +71,7 @@ import org.thingsboard.server.edge.imitator.EdgeImitator;
|
||||
import org.thingsboard.server.gen.edge.v1.AdminSettingsUpdateMsg;
|
||||
import org.thingsboard.server.gen.edge.v1.AssetProfileUpdateMsg;
|
||||
import org.thingsboard.server.gen.edge.v1.AssetUpdateMsg;
|
||||
import org.thingsboard.server.gen.edge.v1.CustomerUpdateMsg;
|
||||
import org.thingsboard.server.gen.edge.v1.DeviceProfileUpdateMsg;
|
||||
import org.thingsboard.server.gen.edge.v1.DeviceUpdateMsg;
|
||||
import org.thingsboard.server.gen.edge.v1.EdgeConfiguration;
|
||||
@ -142,7 +144,7 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
|
||||
installation();
|
||||
|
||||
edgeImitator = new EdgeImitator("localhost", 7070, edge.getRoutingKey(), edge.getSecret());
|
||||
edgeImitator.expectMessageAmount(21);
|
||||
edgeImitator.expectMessageAmount(22);
|
||||
edgeImitator.connect();
|
||||
|
||||
requestEdgeRuleChainMetadata();
|
||||
@ -269,6 +271,9 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
|
||||
|
||||
// 1 message from user fetcher
|
||||
validateUsers();
|
||||
|
||||
// 1 message from public customer fetcher
|
||||
validatePublicCustomer();
|
||||
}
|
||||
|
||||
private void validateEdgeConfiguration() throws Exception {
|
||||
@ -442,6 +447,17 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
|
||||
testAutoGeneratedCodeByProtobuf(userUpdateMsg);
|
||||
}
|
||||
|
||||
private void validatePublicCustomer() throws Exception {
|
||||
Optional<CustomerUpdateMsg> customerUpdateMsgOpt = edgeImitator.findMessageByType(CustomerUpdateMsg.class);
|
||||
Assert.assertTrue(customerUpdateMsgOpt.isPresent());
|
||||
CustomerUpdateMsg customerUpdateMsg = customerUpdateMsgOpt.get();
|
||||
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, customerUpdateMsg.getMsgType());
|
||||
UUID customerUUID = new UUID(customerUpdateMsg.getIdMSB(), customerUpdateMsg.getIdLSB());
|
||||
Customer customer = doGet("/api/customer/" + customerUUID, Customer.class);
|
||||
Assert.assertNotNull(customer);
|
||||
Assert.assertTrue(customer.isPublic());
|
||||
}
|
||||
|
||||
protected Device saveDeviceOnCloudAndVerifyDeliveryToEdge() throws Exception {
|
||||
// create device and assign to edge
|
||||
Device savedDevice = saveDevice(StringUtils.randomAlphanumeric(15), thermostatDeviceProfile.getName());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user