Browse Source

Merge pull request #6009 from van-vanich/fix_AbstractJpaDaoTest

[3.4] Fix AbstractJpaDaoTest
pull/6199/head
Andrew Shvayka 5 years ago
committed by GitHub
parent
commit
1c656378f7
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      dao/src/test/java/org/thingsboard/server/dao/AbstractJpaDaoTest.java
  2. 7
      dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java
  3. 14
      dao/src/test/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDaoTest.java
  4. 186
      dao/src/test/java/org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java
  5. 137
      dao/src/test/java/org/thingsboard/server/dao/sql/audit/JpaAuditLogDaoTest.java
  6. 35
      dao/src/test/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDaoTest.java
  7. 52
      dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceCredentialsDaoTest.java
  8. 119
      dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java
  9. 41
      dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java
  10. 67
      dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserCredentialsDaoTest.java
  11. 93
      dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java
  12. 51
      dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetTypeDaoTest.java
  13. 66
      dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java
  14. 16
      dao/src/test/resources/dbunit/device_credentials.xml
  15. 1
      dao/src/test/resources/dbunit/empty_dataset.xml
  16. 18
      dao/src/test/resources/dbunit/event.xml
  17. 34
      dao/src/test/resources/dbunit/rule.xml
  18. 45
      dao/src/test/resources/dbunit/user.xml
  19. 18
      dao/src/test/resources/dbunit/user_credentials.xml
  20. 31
      dao/src/test/resources/dbunit/widget_type.xml
  21. 47
      dao/src/test/resources/dbunit/widgets_bundle.xml

3
dao/src/test/java/org/thingsboard/server/dao/AbstractJpaDaoTest.java

@ -19,7 +19,6 @@ import org.junit.runner.RunWith;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
@ -35,7 +34,7 @@ import org.thingsboard.server.dao.service.DaoSqlTest;
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class})
public abstract class AbstractJpaDaoTest extends AbstractTransactionalJUnit4SpringContextTests {
public abstract class AbstractJpaDaoTest {
@MockBean
StatsFactory statsFactory;

7
dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java

@ -21,12 +21,7 @@ import org.junit.runner.RunWith;
@RunWith(ClasspathSuite.class)
@ClassnameFilters({
"org.thingsboard.server.dao.sql.tenant.*Test",
"org.thingsboard.server.dao.sql.component.*Test",
"org.thingsboard.server.dao.sql.customer.*Test",
"org.thingsboard.server.dao.sql.dashboard.*Test",
"org.thingsboard.server.dao.sql.query.*Test",
"org.thingsboard.server.dao.sql.*THIS_MUST_BE_FIXED_Test",
"org.thingsboard.server.dao.sql.*Test"
})
public class JpaDaoTestSuite {

14
dao/src/test/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDaoTest.java

@ -16,6 +16,7 @@
package org.thingsboard.server.dao.sql.alarm;
import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.alarm.Alarm;
@ -28,6 +29,8 @@ import org.thingsboard.server.dao.alarm.AlarmDao;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@ -35,6 +38,7 @@ import static org.junit.Assert.assertNotNull;
/**
* Created by Valerii Sosliuk on 5/21/2017.
*/
@Slf4j
public class JpaAlarmDaoTest extends AbstractJpaDaoTest {
@Autowired
@ -42,21 +46,23 @@ public class JpaAlarmDaoTest extends AbstractJpaDaoTest {
@Test
public void testFindLatestByOriginatorAndType() throws ExecutionException, InterruptedException {
System.out.println(System.currentTimeMillis());
public void testFindLatestByOriginatorAndType() throws ExecutionException, InterruptedException, TimeoutException {
log.info("Current system time in millis = {}", System.currentTimeMillis());
UUID tenantId = UUID.fromString("d4b68f40-3e96-11e7-a884-898080180d6b");
UUID originator1Id = UUID.fromString("d4b68f41-3e96-11e7-a884-898080180d6b");
UUID originator2Id = UUID.fromString("d4b68f42-3e96-11e7-a884-898080180d6b");
UUID alarm1Id = UUID.fromString("d4b68f43-3e96-11e7-a884-898080180d6b");
UUID alarm2Id = UUID.fromString("d4b68f44-3e96-11e7-a884-898080180d6b");
UUID alarm3Id = UUID.fromString("d4b68f45-3e96-11e7-a884-898080180d6b");
int alarmCountBeforeSave = alarmDao.find(TenantId.fromUUID(tenantId)).size();
saveAlarm(alarm1Id, tenantId, originator1Id, "TEST_ALARM");
saveAlarm(alarm2Id, tenantId, originator1Id, "TEST_ALARM");
saveAlarm(alarm3Id, tenantId, originator2Id, "TEST_ALARM");
assertEquals(3, alarmDao.find(TenantId.fromUUID(tenantId)).size());
int alarmCountAfterSave = alarmDao.find(TenantId.fromUUID(tenantId)).size();
assertEquals(3, alarmCountAfterSave - alarmCountBeforeSave);
ListenableFuture<Alarm> future = alarmDao
.findLatestByOriginatorAndType(TenantId.fromUUID(tenantId), new DeviceId(originator1Id), "TEST_ALARM");
Alarm alarm = future.get();
Alarm alarm = future.get(30, TimeUnit.SECONDS);
assertNotNull(alarm);
assertEquals(alarm2Id, alarm.getId().getId());
}

186
dao/src/test/java/org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java

@ -17,6 +17,8 @@ package org.thingsboard.server.dao.sql.asset;
import com.datastax.oss.driver.api.core.uuid.Uuids;
import com.google.common.util.concurrent.ListenableFuture;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.EntitySubtype;
@ -34,9 +36,11 @@ import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import static junit.framework.TestCase.assertFalse;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@ -45,23 +49,39 @@ import static org.junit.Assert.assertTrue;
*/
public class JpaAssetDaoTest extends AbstractJpaDaoTest {
UUID tenantId1;
UUID tenantId2;
UUID customerId1;
UUID customerId2;
List<Asset> assets = new ArrayList<>();
@Autowired
private AssetDao assetDao;
@Test
public void testFindAssetsByTenantId() {
UUID tenantId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
UUID customerId1 = Uuids.timeBased();
UUID customerId2 = Uuids.timeBased();
@Before
public void setUp() {
tenantId1 = Uuids.timeBased();
tenantId2 = Uuids.timeBased();
customerId1 = Uuids.timeBased();
customerId2 = Uuids.timeBased();
for (int i = 0; i < 60; i++) {
UUID assetId = Uuids.timeBased();
UUID tenantId = i % 2 == 0 ? tenantId1 : tenantId2;
UUID customerId = i % 2 == 0 ? customerId1 : customerId2;
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
assets.add(saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1"));
}
assertEquals(60, assetDao.find(TenantId.fromUUID(tenantId1)).size());
assertEquals(assets.size(), assetDao.find(TenantId.fromUUID(tenantId1)).size());
}
@After
public void tearDown() {
for (Asset asset : assets) {
assetDao.removeById(asset.getTenantId(), asset.getUuidId());
}
assets.clear();
}
@Test
public void testFindAssetsByTenantId() {
PageLink pageLink = new PageLink(20, 0, "ASSET_");
PageData<Asset> assets1 = assetDao.findAssetsByTenantId(tenantId1, pageLink);
assertEquals(20, assets1.getData().size());
@ -77,18 +97,7 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
@Test
public void testFindAssetsByTenantIdAndCustomerId() {
UUID tenantId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
UUID customerId1 = Uuids.timeBased();
UUID customerId2 = Uuids.timeBased();
for (int i = 0; i < 60; i++) {
UUID assetId = Uuids.timeBased();
UUID tenantId = i % 2 == 0 ? tenantId1 : tenantId2;
UUID customerId = i % 2 == 0 ? customerId1 : customerId2;
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
}
PageLink pageLink = new PageLink(20, 0, "ASSET_");
PageLink pageLink = new PageLink(20, 0, "ASSET_");
PageData<Asset> assets1 = assetDao.findAssetsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink);
assertEquals(20, assets1.getData().size());
@ -102,62 +111,46 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
}
@Test
public void testFindAssetsByTenantIdAndIdsAsync() throws ExecutionException, InterruptedException {
UUID tenantId = Uuids.timeBased();
UUID customerId = Uuids.timeBased();
List<UUID> searchIds = new ArrayList<>();
for (int i = 0; i < 30; i++) {
UUID assetId = Uuids.timeBased();
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
if (i % 3 == 0) {
searchIds.add(assetId);
}
}
public void testFindAssetsByTenantIdAndIdsAsync() throws ExecutionException, InterruptedException, TimeoutException {
List<UUID> searchIds = getAssetsUuids(tenantId1);
ListenableFuture<List<Asset>> assetsFuture = assetDao
.findAssetsByTenantIdAndIdsAsync(tenantId, searchIds);
List<Asset> assets = assetsFuture.get();
.findAssetsByTenantIdAndIdsAsync(tenantId1, searchIds);
List<Asset> assets = assetsFuture.get(30, TimeUnit.SECONDS);
assertNotNull(assets);
assertEquals(10, assets.size());
assertEquals(searchIds.size(), assets.size());
}
@Test
public void testFindAssetsByTenantIdCustomerIdAndIdsAsync() throws ExecutionException, InterruptedException {
UUID tenantId = Uuids.timeBased();
UUID customerId1 = Uuids.timeBased();
UUID customerId2 = Uuids.timeBased();
List<UUID> searchIds = new ArrayList<>();
for (int i = 0; i < 30; i++) {
UUID assetId = Uuids.timeBased();
UUID customerId = i%2 == 0 ? customerId1 : customerId2;
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
if (i % 3 == 0) {
searchIds.add(assetId);
}
}
public void testFindAssetsByTenantIdCustomerIdAndIdsAsync() throws ExecutionException, InterruptedException, TimeoutException {
List<UUID> searchIds = getAssetsUuids(tenantId1);
ListenableFuture<List<Asset>> assetsFuture = assetDao
.findAssetsByTenantIdAndCustomerIdAndIdsAsync(tenantId, customerId1, searchIds);
List<Asset> assets = assetsFuture.get();
.findAssetsByTenantIdAndCustomerIdAndIdsAsync(tenantId1, customerId1, searchIds);
List<Asset> assets = assetsFuture.get(30, TimeUnit.SECONDS);
assertNotNull(assets);
assertEquals(5, assets.size());
assertEquals(searchIds.size(), assets.size());
}
private List<UUID> getAssetsUuids(UUID tenantId) {
List<UUID> result = new ArrayList<>();
for (Asset asset : assets) {
if (asset.getTenantId().getId().equals(tenantId)) {
result.add(asset.getUuidId());
}
}
return result;
}
@Test
public void testFindAssetsByTenantIdAndName() {
UUID assetId1 = Uuids.timeBased();
UUID assetId2 = Uuids.timeBased();
UUID tenantId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
UUID customerId1 = Uuids.timeBased();
UUID customerId2 = Uuids.timeBased();
UUID assetId = Uuids.timeBased();
String name = "TEST_ASSET";
saveAsset(assetId1, tenantId1, customerId1, name, "TYPE_1");
saveAsset(assetId2, tenantId2, customerId2, name, "TYPE_1");
assets.add(saveAsset(assetId, tenantId2, customerId2, name, "TYPE_1"));
Optional<Asset> assetOpt1 = assetDao.findAssetsByTenantIdAndName(tenantId2, name);
assertTrue("Optional expected to be non-empty", assetOpt1.isPresent());
assertEquals(assetId2, assetOpt1.get().getId().getId());
assertEquals(assetId, assetOpt1.get().getId().getId());
Optional<Asset> assetOpt2 = assetDao.findAssetsByTenantIdAndName(tenantId2, "NON_EXISTENT_NAME");
assertFalse("Optional expected to be empty", assetOpt2.isPresent());
@ -165,58 +158,61 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
@Test
public void testFindAssetsByTenantIdAndType() {
// TODO: implement
String type = "TYPE_2";
assets.add(saveAsset(Uuids.timeBased(), tenantId2, customerId2, "TEST_ASSET", type));
List<Asset> foundedAssetsByType = assetDao
.findAssetsByTenantIdAndType(tenantId2, type, new PageLink(3)).getData();
compareFoundedAssetByType(foundedAssetsByType, type);
}
@Test
public void testFindAssetsByTenantIdAndCustomerIdAndType() {
// TODO: implement
String type = "TYPE_2";
assets.add(saveAsset(Uuids.timeBased(), tenantId2, customerId2, "TEST_ASSET", type));
List<Asset> foundedAssetsByType = assetDao
.findAssetsByTenantIdAndCustomerIdAndType(tenantId2, customerId2, type, new PageLink(3)).getData();
compareFoundedAssetByType(foundedAssetsByType, type);
}
private void compareFoundedAssetByType(List<Asset> foundedAssetsByType, String type) {
assertNotNull(foundedAssetsByType);
assertEquals(1, foundedAssetsByType.size());
assertEquals(type, foundedAssetsByType.get(0).getType());
}
@Test
public void testFindTenantAssetTypesAsync() throws ExecutionException, InterruptedException {
UUID assetId1 = Uuids.timeBased();
UUID assetId2 = Uuids.timeBased();
UUID tenantId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
UUID customerId1 = Uuids.timeBased();
UUID customerId2 = Uuids.timeBased();
saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_1", "TYPE_1");
saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_2", "TYPE_1");
saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_3", "TYPE_2");
saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_4", "TYPE_3");
saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_5", "TYPE_3");
saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_6", "TYPE_3");
saveAsset(Uuids.timeBased(), tenantId2, customerId2, "TEST_ASSET_7", "TYPE_4");
saveAsset(Uuids.timeBased(), tenantId2, customerId2, "TEST_ASSET_8", "TYPE_1");
saveAsset(Uuids.timeBased(), tenantId2, customerId2, "TEST_ASSET_9", "TYPE_1");
List<EntitySubtype> tenant1Types = assetDao.findTenantAssetTypesAsync(tenantId1).get();
public void testFindTenantAssetTypesAsync() throws ExecutionException, InterruptedException, TimeoutException {
// Assets with type "TYPE_1" added in setUp method
assets.add(saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_3", "TYPE_2"));
assets.add(saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_4", "TYPE_3"));
assets.add(saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_5", "TYPE_3"));
assets.add(saveAsset(Uuids.timeBased(), tenantId1, customerId1, "TEST_ASSET_6", "TYPE_3"));
assets.add(saveAsset(Uuids.timeBased(), tenantId2, customerId2, "TEST_ASSET_7", "TYPE_4"));
List<EntitySubtype> tenant1Types = assetDao.findTenantAssetTypesAsync(tenantId1).get(30, TimeUnit.SECONDS);
assertNotNull(tenant1Types);
List<EntitySubtype> tenant2Types = assetDao.findTenantAssetTypesAsync(tenantId2).get();
List<EntitySubtype> tenant2Types = assetDao.findTenantAssetTypesAsync(tenantId2).get(30, TimeUnit.SECONDS);
assertNotNull(tenant2Types);
assertEquals(3, tenant1Types.size());
assertTrue(tenant1Types.stream().anyMatch(t -> t.getType().equals("TYPE_1")));
assertTrue(tenant1Types.stream().anyMatch(t -> t.getType().equals("TYPE_2")));
assertTrue(tenant1Types.stream().anyMatch(t -> t.getType().equals("TYPE_3")));
assertFalse(tenant1Types.stream().anyMatch(t -> t.getType().equals("TYPE_4")));
assertEquals(2, tenant2Types.size());
assertTrue(tenant2Types.stream().anyMatch(t -> t.getType().equals("TYPE_1")));
assertTrue(tenant2Types.stream().anyMatch(t -> t.getType().equals("TYPE_4")));
assertFalse(tenant2Types.stream().anyMatch(t -> t.getType().equals("TYPE_2")));
assertFalse(tenant2Types.stream().anyMatch(t -> t.getType().equals("TYPE_3")));
List<String> types = List.of("TYPE_1", "TYPE_2", "TYPE_3", "TYPE_4");
assertEquals(getDifferentTypesCount(types, tenant1Types), tenant1Types.size());
assertEquals(getDifferentTypesCount(types, tenant2Types), tenant2Types.size());
}
private long getDifferentTypesCount(List<String> types, List<EntitySubtype> foundedAssetsTypes) {
return foundedAssetsTypes.stream().filter(type -> types.contains(type.getType())).count();
}
private void saveAsset(UUID id, UUID tenantId, UUID customerId, String name, String type) {
private Asset saveAsset(UUID id, UUID tenantId, UUID customerId, String name, String type) {
Asset asset = new Asset();
asset.setId(new AssetId(id));
asset.setTenantId(TenantId.fromUUID(tenantId));
asset.setCustomerId(new CustomerId(customerId));
asset.setName(name);
asset.setType(type);
assetDao.save(TenantId.fromUUID(tenantId), asset);
return assetDao.save(TenantId.fromUUID(tenantId), asset);
}
}

137
dao/src/test/java/org/thingsboard/server/dao/sql/audit/JpaAuditLogDaoTest.java

@ -15,7 +15,144 @@
*/
package org.thingsboard.server.dao.sql.audit;
import com.datastax.oss.driver.api.core.uuid.Uuids;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.audit.ActionType;
import org.thingsboard.server.common.data.audit.AuditLog;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.audit.AuditLogDao;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
public class JpaAuditLogDaoTest extends AbstractJpaDaoTest {
List<AuditLog> auditLogList = new ArrayList<>();
UUID tenantId;
CustomerId customerId1;
CustomerId customerId2;
UserId userId1;
UserId userId2;
EntityId entityId1;
EntityId entityId2;
AuditLog neededFoundedAuditLog;
@Autowired
private AuditLogDao auditLogDao;
@Before
public void setUp() {
setUpIds();
for (int i = 0; i < 60; i++) {
ActionType actionType = i % 2 == 0 ? ActionType.ADDED : ActionType.DELETED;
CustomerId customerId = i % 4 == 0 ? customerId1 : customerId2;
UserId userId = i % 6 == 0 ? userId1 : userId2;
EntityId entityId = i % 10 == 0 ? entityId1 : entityId2;
auditLogList.add(createAuditLog(i, actionType, customerId, userId, entityId));
}
assertEquals(auditLogList.size(), auditLogDao.find(TenantId.fromUUID(tenantId)).size());
neededFoundedAuditLog = auditLogList.get(0);
assertNotNull(neededFoundedAuditLog);
}
private void setUpIds() {
tenantId = Uuids.timeBased();
customerId1 = new CustomerId(Uuids.timeBased());
customerId2 = new CustomerId(Uuids.timeBased());
userId1 = new UserId(Uuids.timeBased());
userId2 = new UserId(Uuids.timeBased());
entityId1 = new DeviceId(Uuids.timeBased());
entityId2 = new DeviceId(Uuids.timeBased());
}
@After
public void tearDown() {
for (AuditLog auditLog : auditLogList) {
auditLogDao.removeById(TenantId.fromUUID(tenantId), auditLog.getUuidId());
}
auditLogList.clear();
}
@Test
public void testFindById() {
AuditLog foundedAuditLogById = auditLogDao.findById(TenantId.fromUUID(tenantId), neededFoundedAuditLog.getUuidId());
checkFoundedAuditLog(foundedAuditLogById);
}
@Test
public void testFindByIdAsync() throws ExecutionException, InterruptedException, TimeoutException {
AuditLog foundedAuditLogById = auditLogDao
.findByIdAsync(TenantId.fromUUID(tenantId), neededFoundedAuditLog.getUuidId()).get(30, TimeUnit.SECONDS);
checkFoundedAuditLog(foundedAuditLogById);
}
private void checkFoundedAuditLog(AuditLog foundedAuditLogById) {
assertNotNull(foundedAuditLogById);
assertEquals(neededFoundedAuditLog, foundedAuditLogById);
}
@Test
public void testFindAuditLogsByTenantId() {
List<AuditLog> foundedAuditLogs = auditLogDao.findAuditLogsByTenantId(tenantId,
List.of(ActionType.ADDED),
new TimePageLink(40)).getData();
checkFoundedAuditLogsList(foundedAuditLogs, 30);
}
@Test
public void testFindAuditLogsByTenantIdAndCustomerId() {
List<AuditLog> foundedAuditLogs = auditLogDao.findAuditLogsByTenantIdAndCustomerId(tenantId,
customerId1,
List.of(ActionType.ADDED),
new TimePageLink(20)).getData();
checkFoundedAuditLogsList(foundedAuditLogs, 15);
}
@Test
public void testFindAuditLogsByTenantIdAndUserId() {
List<AuditLog> foundedAuditLogs = auditLogDao.findAuditLogsByTenantIdAndUserId(tenantId,
userId1,
List.of(ActionType.ADDED),
new TimePageLink(20)).getData();
checkFoundedAuditLogsList(foundedAuditLogs, 10);
}
@Test
public void testFindAuditLogsByTenantIdAndEntityId() {
List<AuditLog> foundedAuditLogs = auditLogDao.findAuditLogsByTenantIdAndEntityId(tenantId,
entityId1,
List.of(ActionType.ADDED),
new TimePageLink(10)).getData();
checkFoundedAuditLogsList(foundedAuditLogs, 6);
}
private void checkFoundedAuditLogsList(List<AuditLog> foundedAuditLogs, int neededSizeForFoundedList) {
assertNotNull(foundedAuditLogs);
assertEquals(neededSizeForFoundedList, foundedAuditLogs.size());
}
private AuditLog createAuditLog(int number, ActionType actionType, CustomerId customerId, UserId userId, EntityId entityId) {
AuditLog auditLog = new AuditLog();
auditLog.setTenantId(TenantId.fromUUID(tenantId));
auditLog.setCustomerId(customerId);
auditLog.setUserId(userId);
auditLog.setEntityId(entityId);
auditLog.setUserName("AUDIT_LOG_" + number);
auditLog.setActionType(actionType);
return auditLogDao.save(TenantId.fromUUID(tenantId), auditLog);
}
}

35
dao/src/test/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDaoTest.java

@ -16,6 +16,8 @@
package org.thingsboard.server.dao.sql.component;
import com.datastax.oss.driver.api.core.uuid.Uuids;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.id.ComponentDescriptorId;
@ -37,34 +39,43 @@ import static org.junit.Assert.assertEquals;
*/
public class JpaBaseComponentDescriptorDaoTest extends AbstractJpaDaoTest {
final List<ComponentType> componentTypes = List.of(ComponentType.FILTER, ComponentType.ACTION);
@Autowired
private ComponentDescriptorDao componentDescriptorDao;
@Test
public void findByType() {
@Before
public void setUp() {
for (int i = 0; i < 20; i++) {
createComponentDescriptor(ComponentType.FILTER, ComponentScope.SYSTEM, i);
createComponentDescriptor(ComponentType.ACTION, ComponentScope.TENANT, i + 20);
}
}
@After
public void tearDown() {
for (ComponentType componentType : componentTypes) {
List<ComponentDescriptor> byTypeAndPageLink = componentDescriptorDao.findByTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID,
componentType, new PageLink(20)).getData();
for (ComponentDescriptor descriptor : byTypeAndPageLink) {
componentDescriptorDao.deleteById(AbstractServiceTest.SYSTEM_TENANT_ID, descriptor.getId());
}
}
}
@Test
public void findByType() {
PageLink pageLink = new PageLink(15, 0, "COMPONENT_");
PageData<ComponentDescriptor> components1 = componentDescriptorDao.findByTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID, ComponentType.FILTER, pageLink);
assertEquals(15, components1.getData().size());
pageLink = pageLink.nextPageLink();
PageData<ComponentDescriptor> components2 = componentDescriptorDao.findByTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID,ComponentType.FILTER, pageLink);
PageData<ComponentDescriptor> components2 = componentDescriptorDao.findByTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID, ComponentType.FILTER, pageLink);
assertEquals(5, components2.getData().size());
}
@Test
public void findByTypeAndSocpe() {
for (int i = 0; i < 20; i++) {
createComponentDescriptor(ComponentType.ENRICHMENT, ComponentScope.SYSTEM, i);
createComponentDescriptor(ComponentType.ACTION, ComponentScope.TENANT, i + 20);
createComponentDescriptor(ComponentType.FILTER, ComponentScope.SYSTEM, i + 40);
}
PageLink pageLink = new PageLink(15, 0, "COMPONENT_");
public void findByTypeAndScope() {
PageLink pageLink = new PageLink(15, 0, "COMPONENT_");
PageData<ComponentDescriptor> components1 = componentDescriptorDao.findByScopeAndTypeAndPageLink(AbstractServiceTest.SYSTEM_TENANT_ID,
ComponentScope.SYSTEM, ComponentType.FILTER, pageLink);
assertEquals(15, components1.getData().size());
@ -81,7 +92,7 @@ public class JpaBaseComponentDescriptorDaoTest extends AbstractJpaDaoTest {
component.setType(type);
component.setScope(scope);
component.setName("COMPONENT_" + index);
componentDescriptorDao.save(AbstractServiceTest.SYSTEM_TENANT_ID,component);
componentDescriptorDao.save(AbstractServiceTest.SYSTEM_TENANT_ID, component);
}
}

52
dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceCredentialsDaoTest.java

@ -15,14 +15,18 @@
*/
package org.thingsboard.server.dao.sql.device;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.device.DeviceCredentialsDao;
import org.thingsboard.server.dao.service.AbstractServiceTest;
import java.util.List;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
@ -37,22 +41,44 @@ public class JpaDeviceCredentialsDaoTest extends AbstractJpaDaoTest {
@Autowired
DeviceCredentialsDao deviceCredentialsDao;
List<DeviceCredentials> deviceCredentialsList;
DeviceCredentials neededDeviceCredentials;
@Before
public void setUp() {
deviceCredentialsList = List.of(createAndSaveDeviceCredentials(), createAndSaveDeviceCredentials());
neededDeviceCredentials = deviceCredentialsList.get(0);
assertNotNull(neededDeviceCredentials);
}
DeviceCredentials createAndSaveDeviceCredentials() {
DeviceCredentials deviceCredentials = new DeviceCredentials();
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
deviceCredentials.setCredentialsId(UUID.randomUUID().toString());
deviceCredentials.setCredentialsValue("CHECK123");
deviceCredentials.setDeviceId(new DeviceId(UUID.randomUUID()));
return deviceCredentialsDao.save(TenantId.SYS_TENANT_ID, deviceCredentials);
}
@After
public void deleteDeviceCredentials() {
for (DeviceCredentials credentials : deviceCredentialsList) {
deviceCredentialsDao.removeById(TenantId.SYS_TENANT_ID, credentials.getUuidId());
}
}
@Test
@DatabaseSetup("classpath:dbunit/device_credentials.xml")
public void testFindByDeviceId() {
UUID deviceId = UUID.fromString("958e3a30-3215-11e7-93ae-92361f002671");
DeviceCredentials deviceCredentials = deviceCredentialsDao.findByDeviceId(SYSTEM_TENANT_ID, deviceId);
assertNotNull(deviceCredentials);
assertEquals("958e3314-3215-11e7-93ae-92361f002671", deviceCredentials.getId().getId().toString());
assertEquals("ID_1", deviceCredentials.getCredentialsId());
DeviceCredentials foundedDeviceCredentials = deviceCredentialsDao.findByDeviceId(SYSTEM_TENANT_ID, neededDeviceCredentials.getDeviceId().getId());
assertNotNull(foundedDeviceCredentials);
assertEquals(neededDeviceCredentials.getId(), foundedDeviceCredentials.getId());
assertEquals(neededDeviceCredentials.getCredentialsId(), foundedDeviceCredentials.getCredentialsId());
}
@Test
@DatabaseSetup("classpath:dbunit/device_credentials.xml")
public void findByCredentialsId() {
String credentialsId = "ID_2";
DeviceCredentials deviceCredentials = deviceCredentialsDao.findByCredentialsId(SYSTEM_TENANT_ID, credentialsId);
assertNotNull(deviceCredentials);
assertEquals("958e3c74-3215-11e7-93ae-92361f002671", deviceCredentials.getId().getId().toString());
DeviceCredentials foundedDeviceCredentials = deviceCredentialsDao.findByCredentialsId(SYSTEM_TENANT_ID, neededDeviceCredentials.getCredentialsId());
assertNotNull(foundedDeviceCredentials);
assertEquals(neededDeviceCredentials.getId(), foundedDeviceCredentials.getId());
}
}

119
dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java

@ -20,10 +20,14 @@ import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.common.util.ThingsBoardThreadFactory;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.DeviceProfile;
import org.thingsboard.server.common.data.DeviceProfileType;
import org.thingsboard.server.common.data.DeviceTransportType;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.TenantId;
@ -31,12 +35,15 @@ import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.device.DeviceDao;
import org.thingsboard.server.dao.device.DeviceProfileDao;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@ -46,13 +53,49 @@ import static org.junit.Assert.assertNotNull;
*/
public class JpaDeviceDaoTest extends AbstractJpaDaoTest {
public static final int COUNT_DEVICES = 40;
public static final String PREFIX_FOR_DEVICE_NAME = "SEARCH_TEXT_";
List<UUID> deviceIds;
UUID tenantId1;
UUID tenantId2;
UUID customerId1;
UUID customerId2;
@Autowired
private DeviceDao deviceDao;
@Autowired
private DeviceProfileDao deviceProfileDao;
private DeviceProfile savedDeviceProfile;
ListeningExecutorService executor;
@Before
public void setUp() {
createDeviceProfile();
tenantId1 = Uuids.timeBased();
customerId1 = Uuids.timeBased();
tenantId2 = Uuids.timeBased();
customerId2 = Uuids.timeBased();
deviceIds = createDevices(tenantId1, tenantId2, customerId1, customerId2, COUNT_DEVICES);
}
private void createDeviceProfile() {
DeviceProfile deviceProfile = new DeviceProfile();
deviceProfile.setName("TEST");
deviceProfile.setTenantId(TenantId.SYS_TENANT_ID);
deviceProfile.setType(DeviceProfileType.DEFAULT);
deviceProfile.setTransportType(DeviceTransportType.DEFAULT);
deviceProfile.setDescription("Test");
savedDeviceProfile = deviceProfileDao.save(TenantId.SYS_TENANT_ID, deviceProfile);
}
@After
public void tearDown() throws Exception {
deviceDao.removeAllByIds(deviceIds);
deviceProfileDao.removeById(TenantId.SYS_TENANT_ID, savedDeviceProfile.getUuidId());
if (executor != null) {
executor.shutdownNow();
}
@ -60,13 +103,7 @@ public class JpaDeviceDaoTest extends AbstractJpaDaoTest {
@Test
public void testFindDevicesByTenantId() {
UUID tenantId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
UUID customerId1 = Uuids.timeBased();
UUID customerId2 = Uuids.timeBased();
createDevices(tenantId1, tenantId2, customerId1, customerId2, 40);
PageLink pageLink = new PageLink(15, 0, "SEARCH_TEXT");
PageLink pageLink = new PageLink(15, 0, PREFIX_FOR_DEVICE_NAME);
PageData<Device> devices1 = deviceDao.findDevicesByTenantId(tenantId1, pageLink);
assertEquals(15, devices1.getData().size());
@ -77,11 +114,12 @@ public class JpaDeviceDaoTest extends AbstractJpaDaoTest {
}
@Test
public void testFindAsync() throws ExecutionException, InterruptedException {
public void testFindAsync() throws ExecutionException, InterruptedException, TimeoutException {
UUID tenantId = Uuids.timeBased();
UUID customerId = Uuids.timeBased();
Device device = getDevice(tenantId, customerId);
deviceDao.save(TenantId.fromUUID(tenantId), device);
// send to method getDevice() number = 40, because make random name is bad and name "SEARCH_TEXT_40" don't used
Device device = getDevice(tenantId, customerId, 40);
deviceIds.add(deviceDao.save(TenantId.fromUUID(tenantId), device).getUuidId());
UUID uuid = device.getId().getId();
Device entity = deviceDao.findById(TenantId.fromUUID(tenantId), uuid);
@ -90,73 +128,44 @@ public class JpaDeviceDaoTest extends AbstractJpaDaoTest {
executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10, ThingsBoardThreadFactory.forName(getClass().getSimpleName() + "-test-scope")));
ListenableFuture<Device> future = executor.submit(() -> deviceDao.findById(TenantId.fromUUID(tenantId), uuid));
Device asyncDevice = future.get();
Device asyncDevice = future.get(30, TimeUnit.SECONDS);
assertNotNull("Async device expected to be not null", asyncDevice);
}
@Test
public void testFindDevicesByTenantIdAndIdsAsync() throws ExecutionException, InterruptedException {
UUID tenantId1 = Uuids.timeBased();
UUID customerId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
UUID customerId2 = Uuids.timeBased();
List<UUID> deviceIds = new ArrayList<>();
for(int i = 0; i < 5; i++) {
UUID deviceId1 = Uuids.timeBased();
UUID deviceId2 = Uuids.timeBased();
deviceDao.save(TenantId.fromUUID(tenantId1), getDevice(tenantId1, customerId1, deviceId1));
deviceDao.save(TenantId.fromUUID(tenantId2), getDevice(tenantId2, customerId2, deviceId2));
deviceIds.add(deviceId1);
deviceIds.add(deviceId2);
}
public void testFindDevicesByTenantIdAndIdsAsync() throws ExecutionException, InterruptedException, TimeoutException {
ListenableFuture<List<Device>> devicesFuture = deviceDao.findDevicesByTenantIdAndIdsAsync(tenantId1, deviceIds);
List<Device> devices = devicesFuture.get();
assertEquals(5, devices.size());
List<Device> devices = devicesFuture.get(30, TimeUnit.SECONDS);
assertEquals(20, devices.size());
}
@Test
public void testFindDevicesByTenantIdAndCustomerIdAndIdsAsync() throws ExecutionException, InterruptedException {
UUID tenantId1 = Uuids.timeBased();
UUID customerId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
UUID customerId2 = Uuids.timeBased();
List<UUID> deviceIds = new ArrayList<>();
for(int i = 0; i < 20; i++) {
UUID deviceId1 = Uuids.timeBased();
UUID deviceId2 = Uuids.timeBased();
deviceDao.save(TenantId.fromUUID(tenantId1), getDevice(tenantId1, customerId1, deviceId1));
deviceDao.save(TenantId.fromUUID(tenantId2), getDevice(tenantId2, customerId2, deviceId2));
deviceIds.add(deviceId1);
deviceIds.add(deviceId2);
}
public void testFindDevicesByTenantIdAndCustomerIdAndIdsAsync() throws ExecutionException, InterruptedException, TimeoutException {
ListenableFuture<List<Device>> devicesFuture = deviceDao.findDevicesByTenantIdCustomerIdAndIdsAsync(tenantId1, customerId1, deviceIds);
List<Device> devices = devicesFuture.get();
List<Device> devices = devicesFuture.get(30, TimeUnit.SECONDS);
assertEquals(20, devices.size());
}
private void createDevices(UUID tenantId1, UUID tenantId2, UUID customerId1, UUID customerId2, int count) {
private List<UUID> createDevices(UUID tenantId1, UUID tenantId2, UUID customerId1, UUID customerId2, int count) {
List<UUID> savedDevicesUUID = new ArrayList<>();
for (int i = 0; i < count / 2; i++) {
deviceDao.save(TenantId.fromUUID(tenantId1), getDevice(tenantId1, customerId1));
deviceDao.save(TenantId.fromUUID(tenantId2), getDevice(tenantId2, customerId2));
savedDevicesUUID.add(deviceDao.save(TenantId.fromUUID(tenantId1), getDevice(tenantId1, customerId1, i)).getUuidId());
savedDevicesUUID.add(deviceDao.save(TenantId.fromUUID(tenantId2), getDevice(tenantId2, customerId2, i + count / 2)).getUuidId());
}
return savedDevicesUUID;
}
private Device getDevice(UUID tenantId, UUID customerID) {
return getDevice(tenantId, customerID, Uuids.timeBased());
private Device getDevice(UUID tenantId, UUID customerID, int number) {
return getDevice(tenantId, customerID, Uuids.timeBased(), number);
}
private Device getDevice(UUID tenantId, UUID customerID, UUID deviceId) {
private Device getDevice(UUID tenantId, UUID customerID, UUID deviceId, int number) {
Device device = new Device();
device.setId(new DeviceId(deviceId));
device.setTenantId(TenantId.fromUUID(tenantId));
device.setCustomerId(new CustomerId(customerID));
device.setName("SEARCH_TEXT");
device.setName(PREFIX_FOR_DEVICE_NAME + number);
device.setDeviceProfileId(savedDeviceProfile.getId());
return device;
}
}

41
dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java

@ -18,10 +18,11 @@ package org.thingsboard.server.dao.sql.event;
import com.datastax.oss.driver.api.core.uuid.Uuids;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.Event;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.EntityId;
@ -31,7 +32,6 @@ import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.event.EventDao;
import org.thingsboard.server.dao.service.AbstractServiceTest;
import java.io.IOException;
import java.util.List;
@ -51,14 +51,21 @@ import static org.thingsboard.server.common.data.DataConstants.STATS;
@Slf4j
public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
public static final long HOUR_MILLISECONDS = (long) 3.6e+6;
@Autowired
private EventDao eventDao;
UUID tenantId = Uuids.timeBased();
@After
public void deleteEvents() {
List<Event> events = eventDao.find(TenantId.fromUUID(tenantId));
for (Event event : events) {
eventDao.removeById(TenantId.fromUUID(tenantId), event.getUuidId());
}
}
@Test
public void testSaveIfNotExists() {
UUID eventId = Uuids.timeBased();
UUID tenantId = Uuids.timeBased();
UUID entityId = Uuids.timeBased();
Event event = getEvent(eventId, tenantId, entityId);
Optional<Event> optEvent1 = eventDao.saveIfNotExists(event);
@ -69,25 +76,20 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
}
@Test
@DatabaseSetup("classpath:dbunit/event.xml")
public void findEvent() {
UUID tenantId = UUID.fromString("be41c7a0-31f5-11e7-9cfd-2786e6aa2046");
UUID entityId = UUID.fromString("be41c7a1-31f5-11e7-9cfd-2786e6aa2046");
String eventType = STATS;
String eventUid = "be41c7a3-31f5-11e7-9cfd-2786e6aa2046";
Event event = eventDao.findEvent(tenantId, new DeviceId(entityId), eventType, eventUid);
eventDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).stream().forEach(System.out::println);
assertNotNull("Event expected to be not null", event);
assertEquals("be41c7a2-31f5-11e7-9cfd-2786e6aa2046", event.getId().getId().toString());
UUID entityId = Uuids.timeBased();
Event savedEvent = eventDao.save(TenantId.fromUUID(tenantId), getEvent(entityId, tenantId, entityId));
Event foundEvent = eventDao.findEvent(tenantId, new DeviceId(entityId), DataConstants.STATS, savedEvent.getUid());
assertNotNull("Event expected to be not null", foundEvent);
assertEquals(savedEvent.getId(), foundEvent.getId());
}
@Test
public void findEventsByEntityIdAndPageLink() {
UUID tenantId = Uuids.timeBased();
UUID entityId1 = Uuids.timeBased();
UUID entityId2 = Uuids.timeBased();
long startTime = System.currentTimeMillis();
long endTime = createEventsTwoEntities(tenantId, entityId1, entityId2, startTime, 20);
long endTime = createEventsTwoEntities(tenantId, entityId1, entityId2, 20);
TimePageLink pageLink1 = new TimePageLink(30);
PageData<Event> events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink1);
@ -117,11 +119,10 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
@Test
public void findEventsByEntityIdAndEventTypeAndPageLink() {
UUID tenantId = Uuids.timeBased();
UUID entityId1 = Uuids.timeBased();
UUID entityId2 = Uuids.timeBased();
long startTime = System.currentTimeMillis();
long endTime = createEventsTwoEntitiesTwoTypes(tenantId, entityId1, entityId2, startTime, 20);
long endTime = createEventsTwoEntitiesTwoTypes(tenantId, entityId1, entityId2, 20);
TimePageLink pageLink1 = new TimePageLink(30);
PageData<Event> events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink1);
@ -141,10 +142,10 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
pageLink4 = pageLink4.nextPageLink();
PageData<Event> events5 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink4);
assertEquals(2, events5.getData().size());
assertEquals(1, events5.getData().size());
}
private long createEventsTwoEntitiesTwoTypes(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) {
private long createEventsTwoEntitiesTwoTypes(UUID tenantId, UUID entityId1, UUID entityId2, int count) {
for (int i = 0; i < count / 2; i++) {
String type = i % 2 == 0 ? STATS : ALARM;
UUID eventId1 = Uuids.timeBased();
@ -157,7 +158,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
return System.currentTimeMillis();
}
private long createEventsTwoEntities(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) {
private long createEventsTwoEntities(UUID tenantId, UUID entityId1, UUID entityId2, int count) {
for (int i = 0; i < count / 2; i++) {
UUID eventId1 = Uuids.timeBased();
Event event1 = getEvent(eventId1, tenantId, entityId1);

67
dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserCredentialsDaoTest.java

@ -15,13 +15,17 @@
*/
package org.thingsboard.server.dao.sql.user;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.security.UserCredentials;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.user.UserCredentialsDao;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@ -34,41 +38,66 @@ import static org.thingsboard.server.dao.service.AbstractServiceTest.SYSTEM_TENA
*/
public class JpaUserCredentialsDaoTest extends AbstractJpaDaoTest {
public static final String ACTIVATE_TOKEN = "ACTIVATE_TOKEN_0";
public static final String RESET_TOKEN = "RESET_TOKEN_0";
public static final int COUNT_USER_CREDENTIALS = 2;
List<UserCredentials> userCredentialsList;
UserCredentials neededUserCredentials;
@Autowired
private UserCredentialsDao userCredentialsDao;
@Before
public void setUp() {
userCredentialsList = new ArrayList<>();
for (int i=0; i<COUNT_USER_CREDENTIALS; i++) {
userCredentialsList.add(createUserCredentials(i));
}
neededUserCredentials = userCredentialsList.get(0);
assertNotNull(neededUserCredentials);
}
UserCredentials createUserCredentials(int number) {
UserCredentials userCredentials = new UserCredentials();
userCredentials.setEnabled(true);
userCredentials.setUserId(new UserId(UUID.randomUUID()));
userCredentials.setPassword("password");
userCredentials.setActivateToken("ACTIVATE_TOKEN_" + number);
userCredentials.setResetToken("RESET_TOKEN_" + number);
return userCredentialsDao.save(SYSTEM_TENANT_ID, userCredentials);
}
@After
public void after() {
for (UserCredentials userCredentials : userCredentialsList) {
userCredentialsDao.removeById(TenantId.SYS_TENANT_ID, userCredentials.getUuidId());
}
}
@Test
@DatabaseSetup("classpath:dbunit/user_credentials.xml")
public void testFindAll() {
List<UserCredentials> userCredentials = userCredentialsDao.find(SYSTEM_TENANT_ID);
assertEquals(2, userCredentials.size());
assertEquals(COUNT_USER_CREDENTIALS + 1, userCredentials.size());
}
@Test
@DatabaseSetup("classpath:dbunit/user_credentials.xml")
public void testFindByUserId() {
UserCredentials userCredentials = userCredentialsDao.findByUserId(SYSTEM_TENANT_ID, UUID.fromString("787827e6-27d7-11e7-93ae-92361f002671"));
assertNotNull(userCredentials);
assertEquals("4b9e010c-27d5-11e7-93ae-92361f002671", userCredentials.getId().toString());
assertEquals(true, userCredentials.isEnabled());
assertEquals("password", userCredentials.getPassword());
assertEquals("ACTIVATE_TOKEN_2", userCredentials.getActivateToken());
assertEquals("RESET_TOKEN_2", userCredentials.getResetToken());
UserCredentials foundedUserCredentials = userCredentialsDao.findByUserId(SYSTEM_TENANT_ID, neededUserCredentials.getUserId().getId());
assertNotNull(foundedUserCredentials);
assertEquals(neededUserCredentials, foundedUserCredentials);
}
@Test
@DatabaseSetup("classpath:dbunit/user_credentials.xml")
public void testFindByActivateToken() {
UserCredentials userCredentials = userCredentialsDao.findByActivateToken(SYSTEM_TENANT_ID, "ACTIVATE_TOKEN_1");
assertNotNull(userCredentials);
assertEquals("3ed10af0-27d5-11e7-93ae-92361f002671", userCredentials.getId().toString());
UserCredentials foundedUserCredentials = userCredentialsDao.findByActivateToken(SYSTEM_TENANT_ID, ACTIVATE_TOKEN);
assertNotNull(foundedUserCredentials);
assertEquals(neededUserCredentials.getId(), foundedUserCredentials.getId());
}
@Test
@DatabaseSetup("classpath:dbunit/user_credentials.xml")
public void testFindByResetToken() {
UserCredentials userCredentials = userCredentialsDao.findByResetToken(SYSTEM_TENANT_ID, "RESET_TOKEN_2");
assertNotNull(userCredentials);
assertEquals("4b9e010c-27d5-11e7-93ae-92361f002671", userCredentials.getId().toString());
UserCredentials foundedUserCredentials = userCredentialsDao.findByResetToken(SYSTEM_TENANT_ID, RESET_TOKEN);
assertNotNull(foundedUserCredentials);
assertEquals(neededUserCredentials.getId(), foundedUserCredentials.getId());
}
}

93
dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java

@ -16,9 +16,11 @@
package org.thingsboard.server.dao.sql.user;
import com.datastax.oss.driver.api.core.uuid.Uuids;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.User;
@ -32,7 +34,6 @@ import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.service.AbstractServiceTest;
import org.thingsboard.server.dao.user.UserDao;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
@ -45,35 +46,54 @@ import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
*/
public class JpaUserDaoTest extends AbstractJpaDaoTest {
// it comes from the DefaultSystemDataLoaderService super class
final int COUNT_CREATED_USER = 1;
final int COUNT_SYSADMIN_USER = 90;
UUID tenantId;
UUID customerId;
@Autowired
private UserDao userDao;
@Before
public void setUp() {
tenantId = Uuids.timeBased();
customerId = Uuids.timeBased();
create30TenantAdminsAnd60CustomerUsers(tenantId, customerId);
}
@After
public void tearDown() {
delete30TenantAdminsAnd60CustomerUsers(tenantId, customerId);
}
@Test
@DatabaseSetup("classpath:dbunit/user.xml")
public void testFindAll() {
List<User> users = userDao.find(AbstractServiceTest.SYSTEM_TENANT_ID);
assertEquals(users.size(), 5);
assertEquals(users.size(), COUNT_CREATED_USER + COUNT_SYSADMIN_USER);
}
@Test
@DatabaseSetup("classpath:dbunit/user.xml")
public void testFindByEmail() {
User user = userDao.findByEmail(AbstractServiceTest.SYSTEM_TENANT_ID,"sysadm@thingsboard.org");
assertNotNull("User is expected to be not null", user);
assertEquals("9cb58ba0-27c1-11e7-93ae-92361f002671", user.getId().toString());
assertEquals("c97ea14e-27c1-11e7-93ae-92361f002671", user.getTenantId().toString());
assertEquals("cdf9c79e-27c1-11e7-93ae-92361f002671", user.getCustomerId().toString());
assertEquals(Authority.SYS_ADMIN, user.getAuthority());
assertEquals("John", user.getFirstName());
assertEquals("Doe", user.getLastName());
public void testFindByEmail() throws JsonProcessingException {
User user = new User();
user.setId(new UserId(UUID.randomUUID()));
user.setTenantId(TenantId.fromUUID(UUID.randomUUID()));
user.setCustomerId(new CustomerId(UUID.randomUUID()));
user.setEmail("user@thingsboard.org");
user.setFirstName("Jackson");
user.setLastName("Roberts");
ObjectMapper mapper = new ObjectMapper();
String additionalInfo = "{\"key\":\"value-100\"}";
JsonNode jsonNode = mapper.readTree(additionalInfo);
user.setAdditionalInfo(jsonNode);
userDao.save(AbstractServiceTest.SYSTEM_TENANT_ID, user);
assertEquals(1 + COUNT_SYSADMIN_USER + COUNT_CREATED_USER, userDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).size());
User savedUser = userDao.findByEmail(AbstractServiceTest.SYSTEM_TENANT_ID, "user@thingsboard.org");
assertNotNull(savedUser);
assertEquals(additionalInfo, savedUser.getAdditionalInfo().toString());
}
@Test
@DatabaseSetup("classpath:dbunit/empty_dataset.xml")
public void testFindTenantAdmins() {
UUID tenantId = Uuids.timeBased();
UUID customerId = Uuids.timeBased();
create30Adminsand60Users(tenantId, customerId);
PageLink pageLink = new PageLink(20);
PageData<User> tenantAdmins1 = userDao.findTenantAdmins(tenantId, pageLink);
assertEquals(20, tenantAdmins1.getData().size());
@ -88,11 +108,7 @@ public class JpaUserDaoTest extends AbstractJpaDaoTest {
}
@Test
@DatabaseSetup("classpath:dbunit/empty_dataset.xml")
public void testFindCustomerUsers() {
UUID tenantId = Uuids.timeBased();
UUID customerId = Uuids.timeBased();
create30Adminsand60Users(tenantId, customerId);
PageLink pageLink = new PageLink(40);
PageData<User> customerUsers1 = userDao.findCustomerUsers(tenantId, customerId, pageLink);
assertEquals(40, customerUsers1.getData().size());
@ -106,28 +122,7 @@ public class JpaUserDaoTest extends AbstractJpaDaoTest {
assertEquals(0, customerUsers3.getData().size());
}
@Test
@DatabaseSetup("classpath:dbunit/user.xml")
public void testSave() throws IOException {
User user = new User();
user.setId(new UserId(UUID.fromString("cd481534-27cc-11e7-93ae-92361f002671")));
user.setTenantId(TenantId.fromUUID(UUID.fromString("1edcb2c6-27cb-11e7-93ae-92361f002671")));
user.setCustomerId(new CustomerId(UUID.fromString("51477cb4-27cb-11e7-93ae-92361f002671")));
user.setEmail("user@thingsboard.org");
user.setFirstName("Jackson");
user.setLastName("Roberts");
ObjectMapper mapper = new ObjectMapper();
String additionalInfo = "{\"key\":\"value-100\"}";
JsonNode jsonNode = mapper.readTree(additionalInfo);
user.setAdditionalInfo(jsonNode);
userDao.save(AbstractServiceTest.SYSTEM_TENANT_ID,user);
assertEquals(6, userDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).size());
User savedUser = userDao.findByEmail(AbstractServiceTest.SYSTEM_TENANT_ID,"user@thingsboard.org");
assertNotNull(savedUser);
assertEquals(additionalInfo, savedUser.getAdditionalInfo().toString());
}
private void create30Adminsand60Users(UUID tenantId, UUID customerId) {
private void create30TenantAdminsAnd60CustomerUsers(UUID tenantId, UUID customerId) {
// Create 30 tenant admins and 60 customer users
for (int i = 0; i < 30; i++) {
saveUser(tenantId, NULL_UUID);
@ -150,6 +145,14 @@ public class JpaUserDaoTest extends AbstractJpaDaoTest {
String idString = id.toString();
String email = idString.substring(0, idString.indexOf('-')) + "@thingsboard.org";
user.setEmail(email);
userDao.save(AbstractServiceTest.SYSTEM_TENANT_ID,user);
userDao.save(AbstractServiceTest.SYSTEM_TENANT_ID, user);
}
private void delete30TenantAdminsAnd60CustomerUsers(UUID tenantId, UUID customerId) {
List<User> data = userDao.findCustomerUsers(tenantId, customerId, new PageLink(60)).getData();
data.addAll(userDao.findTenantAdmins(tenantId, new PageLink(30)).getData());
for (User user : data) {
userDao.removeById(user.getTenantId(), user.getUuidId());
}
}
}

51
dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetTypeDaoTest.java

@ -15,40 +15,69 @@
*/
package org.thingsboard.server.dao.sql.widget;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.widget.WidgetType;
import org.thingsboard.server.common.data.widget.WidgetTypeDetails;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.widget.WidgetTypeDao;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**
* Created by Valerii Sosliuk on 4/30/2017.
*/
public class JpaWidgetTypeDaoTest extends AbstractJpaDaoTest {
final String BUNDLE_ALIAS = "BUNDLE_ALIAS";
final int WIDGET_TYPE_COUNT = 3;
List<WidgetType> widgetTypeList;
@Autowired
private WidgetTypeDao widgetTypeDao;
@Before
public void setUp() {
widgetTypeList = new ArrayList<>();
for (int i = 0; i < WIDGET_TYPE_COUNT; i++) {
widgetTypeList.add(createAndSaveWidgetType(i));
}
}
WidgetType createAndSaveWidgetType(int number) {
WidgetTypeDetails widgetType = new WidgetTypeDetails();
widgetType.setTenantId(TenantId.SYS_TENANT_ID);
widgetType.setName("WIDGET_TYPE_" + number);
widgetType.setAlias("ALIAS_" + number);
widgetType.setBundleAlias(BUNDLE_ALIAS);
return widgetTypeDao.save(TenantId.SYS_TENANT_ID, widgetType);
}
@After
public void deleteAllWidgetType() {
for (WidgetType widgetType : widgetTypeList) {
widgetTypeDao.removeById(TenantId.SYS_TENANT_ID, widgetType.getUuidId());
}
}
@Test
@DatabaseSetup(("classpath:dbunit/widget_type.xml"))
public void testFindByTenantIdAndBundleAlias() {
UUID tenantId = UUID.fromString("2b7e4c90-2dfe-11e7-94aa-f7f6dbfb4833");
List<WidgetType> widgetTypes = widgetTypeDao.findWidgetTypesByTenantIdAndBundleAlias(tenantId, "BUNDLE_ALIAS_1");
assertEquals(3, widgetTypes.size());
List<WidgetType> widgetTypes = widgetTypeDao.findWidgetTypesByTenantIdAndBundleAlias(TenantId.SYS_TENANT_ID.getId(), BUNDLE_ALIAS);
assertEquals(WIDGET_TYPE_COUNT, widgetTypes.size());
}
@Test
@DatabaseSetup(("classpath:dbunit/widget_type.xml"))
public void testFindByTenantIdAndBundleAliasAndAlias() {
UUID tenantId = UUID.fromString("2b7e4c90-2dfe-11e7-94aa-f7f6dbfb4833");
WidgetType widgetType = widgetTypeDao.findByTenantIdBundleAliasAndAlias(tenantId, "BUNDLE_ALIAS_1", "ALIAS3");
UUID id = UUID.fromString("2b7e4c93-2dfe-11e7-94aa-f7f6dbfb4833");
assertEquals(id, widgetType.getId().getId());
WidgetType result = widgetTypeList.get(0);
assertNotNull(result);
WidgetType widgetType = widgetTypeDao.findByTenantIdBundleAliasAndAlias(TenantId.SYS_TENANT_ID.getId(), BUNDLE_ALIAS, "ALIAS_0");
assertEquals(result.getId(), widgetType.getId());
}
}

66
dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java

@ -16,9 +16,7 @@
package org.thingsboard.server.dao.sql.widget;
import com.datastax.oss.driver.api.core.uuid.Uuids;
import com.github.springtestdbunit.annotation.DatabaseOperation;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import com.github.springtestdbunit.annotation.DatabaseTearDown;
import org.junit.After;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.id.TenantId;
@ -27,72 +25,79 @@ import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.common.data.widget.WidgetsBundle;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.service.AbstractServiceTest;
import org.thingsboard.server.dao.widget.WidgetsBundleDao;
import java.util.List;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
/**
* Created by Valerii Sosliuk on 4/23/2017.
*/
public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest {
List<WidgetsBundle> widgetsBundles;
@Autowired
private WidgetsBundleDao widgetsBundleDao;
@After
public void tearDown() {
for (WidgetsBundle widgetsBundle : widgetsBundles) {
widgetsBundleDao.removeById(widgetsBundle.getTenantId(), widgetsBundle.getUuidId());
}
}
@Test
@DatabaseSetup(value = "classpath:dbunit/widgets_bundle.xml",type= DatabaseOperation.CLEAN_INSERT)
@DatabaseTearDown(value = "classpath:dbunit/widgets_bundle.xml", type= DatabaseOperation.DELETE_ALL)
public void testFindAll() {
assertEquals(7, widgetsBundleDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).size());
createSystemWidgetBundles(7, "WB_");
widgetsBundles = widgetsBundleDao.find(TenantId.SYS_TENANT_ID);
assertEquals(7, widgetsBundles.size());
}
@Test
@DatabaseSetup(value = "classpath:dbunit/widgets_bundle.xml",type= DatabaseOperation.CLEAN_INSERT)
@DatabaseTearDown(value = "classpath:dbunit/widgets_bundle.xml", type= DatabaseOperation.DELETE_ALL)
public void testFindWidgetsBundleByTenantIdAndAlias() {
createSystemWidgetBundles(1, "WB_");
WidgetsBundle widgetsBundle = widgetsBundleDao.findWidgetsBundleByTenantIdAndAlias(
UUID.fromString("250aca8e-2825-11e7-93ae-92361f002671"), "WB3");
assertEquals("44e6af4e-2825-11e7-93ae-92361f002671", widgetsBundle.getId().toString());
TenantId.SYS_TENANT_ID.getId(), "WB_" + 0);
widgetsBundles = List.of(widgetsBundle);
assertEquals("WB_" + 0, widgetsBundle.getAlias());
}
@Test
@DatabaseSetup(value = "classpath:dbunit/widgets_bundle.xml", type= DatabaseOperation.DELETE_ALL)
public void testFindSystemWidgetsBundles() {
createSystemWidgetBundles(30, "WB_");
assertEquals(30, widgetsBundleDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).size());
widgetsBundles = widgetsBundleDao.find(TenantId.SYS_TENANT_ID);
assertEquals(30, widgetsBundles.size());
// Get first page
PageLink pageLink = new PageLink(10, 0, "WB");
PageData<WidgetsBundle> widgetsBundles1 = widgetsBundleDao.findSystemWidgetsBundles(AbstractServiceTest.SYSTEM_TENANT_ID, pageLink);
PageData<WidgetsBundle> widgetsBundles1 = widgetsBundleDao.findSystemWidgetsBundles(TenantId.SYS_TENANT_ID, pageLink);
assertEquals(10, widgetsBundles1.getData().size());
// Get next page
pageLink = pageLink.nextPageLink();
PageData<WidgetsBundle> widgetsBundles2 = widgetsBundleDao.findSystemWidgetsBundles(AbstractServiceTest.SYSTEM_TENANT_ID, pageLink);
PageData<WidgetsBundle> widgetsBundles2 = widgetsBundleDao.findSystemWidgetsBundles(TenantId.SYS_TENANT_ID, pageLink);
assertEquals(10, widgetsBundles2.getData().size());
}
@Test
@DatabaseSetup(value = "classpath:dbunit/widgets_bundle.xml", type= DatabaseOperation.DELETE_ALL)
public void testFindWidgetsBundlesByTenantId() {
UUID tenantId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
// Create a bunch of widgetBundles
for (int i= 0; i < 10; i++) {
for (int i = 0; i < 10; i++) {
createWidgetBundles(3, tenantId1, "WB1_");
createWidgetBundles(5, tenantId2, "WB2_");
createSystemWidgetBundles(10, "WB_SYS_");
}
assertEquals(180, widgetsBundleDao.find(AbstractServiceTest.SYSTEM_TENANT_ID).size());
widgetsBundles = widgetsBundleDao.find(TenantId.SYS_TENANT_ID);
assertEquals(180, widgetsBundleDao.find(TenantId.SYS_TENANT_ID).size());
PageLink pageLink1 = new PageLink(40, 0, "WB");
PageLink pageLink1 = new PageLink(40, 0, "WB");
PageData<WidgetsBundle> widgetsBundles1 = widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId1, pageLink1);
assertEquals(30, widgetsBundles1.getData().size());
PageLink pageLink2 = new PageLink(40, 0, "WB");
PageLink pageLink2 = new PageLink(40, 0, "WB");
PageData<WidgetsBundle> widgetsBundles2 = widgetsBundleDao.findTenantWidgetsBundlesByTenantId(tenantId2, pageLink2);
assertEquals(40, widgetsBundles2.getData().size());
@ -102,18 +107,19 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest {
}
@Test
@DatabaseSetup(value = "classpath:dbunit/widgets_bundle.xml", type= DatabaseOperation.DELETE_ALL)
public void testFindAllWidgetsBundlesByTenantId() {
UUID tenantId1 = Uuids.timeBased();
UUID tenantId2 = Uuids.timeBased();
// Create a bunch of widgetBundles
for (int i= 0; i < 10; i++) {
createWidgetBundles( 5, tenantId1,"WB1_");
for (int i = 0; i < 10; i++) {
createWidgetBundles(5, tenantId1, "WB1_");
createWidgetBundles(3, tenantId2, "WB2_");
createSystemWidgetBundles(2, "WB_SYS_");
}
widgetsBundles = widgetsBundleDao.find(TenantId.SYS_TENANT_ID);
assertEquals(100, widgetsBundleDao.find(TenantId.SYS_TENANT_ID).size());
PageLink pageLink = new PageLink(30, 0, "WB");
PageLink pageLink = new PageLink(30, 0, "WB");
PageData<WidgetsBundle> widgetsBundles1 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId1, pageLink);
assertEquals(30, widgetsBundles1.getData().size());
@ -131,13 +137,12 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest {
}
@Test
@DatabaseSetup("classpath:dbunit/empty_dataset.xml")
@DatabaseTearDown(value = "classpath:dbunit/empty_dataset.xml", type= DatabaseOperation.DELETE_ALL)
public void testSearchTextNotFound() {
UUID tenantId = Uuids.timeBased();
createWidgetBundles(5, tenantId, "ABC_");
createSystemWidgetBundles(5, "SYS_");
widgetsBundles = widgetsBundleDao.find(TenantId.SYS_TENANT_ID);
assertEquals(10, widgetsBundleDao.find(TenantId.SYS_TENANT_ID).size());
PageLink textPageLink = new PageLink(30, 0, "TEXT_NOT_FOUND");
PageData<WidgetsBundle> widgetsBundles4 = widgetsBundleDao.findAllTenantWidgetsBundlesByTenantId(tenantId, textPageLink);
assertEquals(0, widgetsBundles4.getData().size());
@ -150,9 +155,10 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest {
widgetsBundle.setTitle(prefix + i);
widgetsBundle.setId(new WidgetsBundleId(Uuids.timeBased()));
widgetsBundle.setTenantId(TenantId.fromUUID(tenantId));
widgetsBundleDao.save(AbstractServiceTest.SYSTEM_TENANT_ID, widgetsBundle);
widgetsBundleDao.save(TenantId.SYS_TENANT_ID, widgetsBundle);
}
}
private void createSystemWidgetBundles(int count, String prefix) {
for (int i = 0; i < count; i++) {
WidgetsBundle widgetsBundle = new WidgetsBundle();
@ -160,7 +166,7 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest {
widgetsBundle.setTitle(prefix + i);
widgetsBundle.setTenantId(TenantId.SYS_TENANT_ID);
widgetsBundle.setId(new WidgetsBundleId(Uuids.timeBased()));
widgetsBundleDao.save(AbstractServiceTest.SYSTEM_TENANT_ID, widgetsBundle);
widgetsBundleDao.save(TenantId.SYS_TENANT_ID, widgetsBundle);
}
}
}

16
dao/src/test/resources/dbunit/device_credentials.xml

@ -1,16 +0,0 @@
<dataset>
<device_credentials
id="uuid'958e3314-3215-11e7-93ae-92361f002671'"
device_id="uuid'958e3a30-3215-11e7-93ae-92361f002671'"
credentials_type="ACCESS_TOKEN"
credentials_id="ID_1"
credentials_value="ACCESS_TOKEN_1"
/>
<device_credentials
id="uuid'958e3c74-3215-11e7-93ae-92361f002671'"
device_id="uuid'958e3e5e-3215-11e7-93ae-92361f002671'"
credentials_type="ACCESS_TOKEN"
credentials_id="ID_2"
credentials_value="ACCESS_TOKEN_2"
/>
</dataset>

1
dao/src/test/resources/dbunit/empty_dataset.xml

@ -1 +0,0 @@
<dataset></dataset>

18
dao/src/test/resources/dbunit/event.xml

@ -1,18 +0,0 @@
<dataset>
<event
id="uuid'be41c7a2-31f5-11e7-9cfd-2786e6aa2046'"
tenant_id="uuid'be41c7a0-31f5-11e7-9cfd-2786e6aa2046'"
entity_id="uuid'be41c7a1-31f5-11e7-9cfd-2786e6aa2046'"
entity_type="DEVICE"
event_type="STATS"
event_uid="uuid'be41c7a3-31f5-11e7-9cfd-2786e6aa2046'"
/>
<event
id="uuid'be41c7a4-31f5-11e7-9cfd-2786e6aa2046'"
tenant_id="uuid'be41c7a0-31f5-11e7-9cfd-2786e6aa2046'"
entity_id="uuid'be41c7a1-31f5-11e7-9cfd-2786e6aa2046'"
entity_type="DEVICE"
event_type="STATS"
event_uid="uuid'be41c7a5-31f5-11e7-9cfd-2786e6aa2046'"
/>
</dataset>

34
dao/src/test/resources/dbunit/rule.xml

@ -1,34 +0,0 @@
<dataset>
<rule
id="uuid'8e834e11-2e0a-11e7-83ec-f7f6dbfb4833'"
tenant_id="uuid'8e834e10-2e0a-11e7-83ec-f7f6dbfb4833'"
name="RULE_11"
weight="1"
search_text="rule_11"
plugin_token="token_1"
/>
<rule
id="uuid'8e834e12-2e0a-11e7-83ec-f7f6dbfb4833'"
tenant_id="uuid'8e834e10-2e0a-11e7-83ec-f7f6dbfb4833'"
name="RULE_12"
weight="1"
search_text="rule_12"
plugin_token="token_1"
/>
<rule
id="uuid'8e834e13-2e0a-11e7-83ec-f7f6dbfb4833'"
tenant_id="uuid'8e834e10-2e0a-11e7-83ec-f7f6dbfb4833'"
name="RULE_13"
weight="1"
search_text="rule_13"
plugin_token="token_1"
/>
<rule
id="uuid'8e834e14-2e0a-11e7-83ec-f7f6dbfb4833'"
tenant_id="uuid'8e834e10-2e0a-11e7-83ec-f7f6dbfb4833'"
name="RULE_14"
weight="2"
search_text="rule_14"
plugin_token="token_2"
/>
</dataset>

45
dao/src/test/resources/dbunit/user.xml

@ -1,45 +0,0 @@
<dataset>
<tb_user id="uuid'9cb58ba0-27c1-11e7-93ae-92361f002671'"
tenant_id="uuid'c97ea14e-27c1-11e7-93ae-92361f002671'"
customer_id="uuid'cdf9c79e-27c1-11e7-93ae-92361f002671'"
authority="SYS_ADMIN"
email="sysadm@thingsboard.org"
search_text="SYSADM SEARCH TEXT"
first_name="John"
last_name="Doe"
/>
<tb_user id="uuid'1312f328-27c7-11e7-93ae-92361f002671'"
tenant_id="uuid'1e1cd4c8-27c7-11e7-93ae-92361f002671'"
authority="TENANT_ADMIN"
email="tenantadm1@thingsboard.org"
search_text="TENANTADM1 SEARCH TEXT"
first_name="Samuel"
last_name="Serif"
/>
<tb_user id="uuid'2b090dde-27ca-11e7-93ae-92361f002671'"
tenant_id="uuid'1e1cd4c8-27c7-11e7-93ae-92361f002671'"
authority="TENANT_ADMIN"
email="tenantadm2@thingsboard.org"
search_text="TENANTADM2 SEARCH TEXT"
first_name="Penny"
last_name="Morgan"
/>
<tb_user id="uuid'cc8c1ca8-27c7-11e7-93ae-92361f002671'"
tenant_id="uuid'd2e27caa-27c7-11e7-93ae-92361f002671'"
customer_id="uuid'd89e128a-27c7-11e7-93ae-92361f002671'"
authority="CUSTOMER_USER"
email="customeruser@thingsboard.org"
search_text="CUSTOMER USER SEARCH TEXT"
first_name="Norman"
last_name="Gordon"
/>
<tb_user id="uuid'edb2de58-27c7-11e7-93ae-92361f002671'"
tenant_id="uuid'f229675e-27c7-11e7-93ae-92361f002671'"
customer_id="uuid'f7a3d4e4-27c7-11e7-93ae-92361f002671'"
authority="REFRESH_TOKEN"
email="refreshtoken@thingsboard.org"
search_text="REFRESH TOKEN SEARCH TEXT"
first_name="Refresh"
last_name="Token"
/>
</dataset>

18
dao/src/test/resources/dbunit/user_credentials.xml

@ -1,18 +0,0 @@
<dataset>
<user_credentials
id="uuid'3ed10af0-27d5-11e7-93ae-92361f002671'"
user_id="uuid'44ee8552-27d5-11e7-93ae-92361f002671'"
enabled="true"
password="password"
activate_token="ACTIVATE_TOKEN_1"
reset_token="RESET_TOKEN_1"
/>
<user_credentials
id="uuid'4b9e010c-27d5-11e7-93ae-92361f002671'"
user_id="uuid'787827e6-27d7-11e7-93ae-92361f002671'"
enabled="true"
password="password"
activate_token="ACTIVATE_TOKEN_2"
reset_token="RESET_TOKEN_2"
/>
</dataset>

31
dao/src/test/resources/dbunit/widget_type.xml

@ -1,31 +0,0 @@
<dataset>
<widget_type
id="uuid'2b7e4c91-2dfe-11e7-94aa-f7f6dbfb4833'"
tenant_id="uuid'2b7e4c90-2dfe-11e7-94aa-f7f6dbfb4833'"
bundle_alias="BUNDLE_ALIAS_1"
alias="ALIAS1"
name="ALIAS1"
/>
<widget_type
id="uuid'2b7e4c92-2dfe-11e7-94aa-f7f6dbfb4833'"
tenant_id="uuid'2b7e4c90-2dfe-11e7-94aa-f7f6dbfb4833'"
bundle_alias="BUNDLE_ALIAS_1"
alias="ALIAS2"
name="ALIAS2"
/>
<widget_type
id="uuid'2b7e4c93-2dfe-11e7-94aa-f7f6dbfb4833'"
tenant_id="uuid'2b7e4c90-2dfe-11e7-94aa-f7f6dbfb4833'"
bundle_alias="BUNDLE_ALIAS_1"
alias="ALIAS3"
name="ALIAS3"
/>
<widget_type
id="uuid'2b7e4c94-2dfe-11e7-94aa-f7f6dbfb4833'"
tenant_id="uuid'2b7e4c90-2dfe-11e7-94aa-f7f6dbfb4833'"
bundle_alias="BUNDLE_ALIAS_2"
alias="ALIAS4"
name="ALIAS4"
/>
</dataset>

47
dao/src/test/resources/dbunit/widgets_bundle.xml

@ -1,47 +0,0 @@
<dataset>
<widgets_bundle
id="uuid'250ac7b4-2825-11e7-93ae-92361f002671'"
tenant_id="uuid'250aca8e-2825-11e7-93ae-92361f002671'"
alias="WB1"
title="Widgets Bundle 1"
search_text="WB SEARCH TEXT 1"
/>
<widgets_bundle
id="uuid'3269c18a-2825-11e7-93ae-92361f002671'"
tenant_id="uuid'3269c18a-2825-11e7-93ae-92361f002671'"
alias="WB2"
title="Widgets Bundle 2"
search_text="WB SEARCH TEXT 2"
/>
<widgets_bundle
id="uuid'44e6af4e-2825-11e7-93ae-92361f002671'"
tenant_id="uuid'250aca8e-2825-11e7-93ae-92361f002671'"
alias="WB3"
title="Widgets Bundle 3"
search_text="WB SEARCH TEXT 3"
/>
<widgets_bundle
id="uuid'696dc9b4-2830-11e7-93ae-92361f002671'"
alias="WB4"
title="Widgets Bundle 4"
search_text="SYSTEM BUNDLE 1"
/>
<widgets_bundle
id="uuid'1a83fc50-2840-11e7-93ae-92361f002671'"
alias="WB5"
title="Widgets Bundle 5"
search_text="SYSTEM BUNDLE 2"
/>
<widgets_bundle
id="uuid'6a593dde-2841-11e7-93ae-92361f002671'"
alias="WB6"
title="Widgets Bundle 6"
search_text="SYSTEM BUNDLE 1"
/>
<widgets_bundle
id="uuid'3beb4b1a-294d-11e7-93ae-92361f002671'"
alias="WB6"
title="Widgets Bundle 7"
search_text="ABC DEF"
/>
</dataset>
Loading…
Cancel
Save