Browse Source
* added TbResourceService test * fix ResourceService test * created TbResourceControllerSqlTest * fixed BaseTbResourceServiceTestpull/4298/head
committed by
GitHub
21 changed files with 869 additions and 95 deletions
@ -0,0 +1,284 @@ |
|||
/** |
|||
* Copyright © 2016-2021 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.controller; |
|||
|
|||
import com.fasterxml.jackson.core.type.TypeReference; |
|||
import org.junit.After; |
|||
import org.junit.Assert; |
|||
import org.junit.Before; |
|||
import org.junit.Test; |
|||
import org.thingsboard.server.common.data.ResourceType; |
|||
import org.thingsboard.server.common.data.TbResource; |
|||
import org.thingsboard.server.common.data.TbResourceInfo; |
|||
import org.thingsboard.server.common.data.Tenant; |
|||
import org.thingsboard.server.common.data.User; |
|||
import org.thingsboard.server.common.data.page.PageData; |
|||
import org.thingsboard.server.common.data.page.PageLink; |
|||
import org.thingsboard.server.common.data.security.Authority; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.Collections; |
|||
import java.util.List; |
|||
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; |
|||
|
|||
public abstract class BaseTbResourceControllerTest extends AbstractControllerTest { |
|||
|
|||
private IdComparator<TbResourceInfo> idComparator = new IdComparator<>(); |
|||
|
|||
private static final String DEFAULT_FILE_NAME = "test.jks"; |
|||
|
|||
private Tenant savedTenant; |
|||
private User tenantAdmin; |
|||
|
|||
@Before |
|||
public void beforeTest() throws Exception { |
|||
loginSysAdmin(); |
|||
|
|||
Tenant tenant = new Tenant(); |
|||
tenant.setTitle("My tenant"); |
|||
savedTenant = doPost("/api/tenant", tenant, Tenant.class); |
|||
Assert.assertNotNull(savedTenant); |
|||
|
|||
tenantAdmin = new User(); |
|||
tenantAdmin.setAuthority(Authority.TENANT_ADMIN); |
|||
tenantAdmin.setTenantId(savedTenant.getId()); |
|||
tenantAdmin.setEmail("tenant2@thingsboard.org"); |
|||
tenantAdmin.setFirstName("Joe"); |
|||
tenantAdmin.setLastName("Downs"); |
|||
|
|||
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1"); |
|||
} |
|||
|
|||
@After |
|||
public void afterTest() throws Exception { |
|||
loginSysAdmin(); |
|||
|
|||
doDelete("/api/tenant/" + savedTenant.getId().getId().toString()) |
|||
.andExpect(status().isOk()); |
|||
} |
|||
|
|||
@Test |
|||
public void testSaveTbResource() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My first resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
|
|||
TbResource savedResource = doPost("/api/resource", resource, TbResource.class); |
|||
|
|||
Assert.assertNotNull(savedResource); |
|||
Assert.assertNotNull(savedResource.getId()); |
|||
Assert.assertTrue(savedResource.getCreatedTime() > 0); |
|||
Assert.assertEquals(savedTenant.getId(), savedResource.getTenantId()); |
|||
Assert.assertEquals(resource.getTitle(), savedResource.getTitle()); |
|||
Assert.assertEquals(DEFAULT_FILE_NAME, savedResource.getFileName()); |
|||
Assert.assertEquals(DEFAULT_FILE_NAME, savedResource.getResourceKey()); |
|||
Assert.assertEquals(resource.getData(), savedResource.getData()); |
|||
|
|||
savedResource.setTitle("My new resource"); |
|||
|
|||
doPost("/api/resource", savedResource, TbResource.class); |
|||
|
|||
TbResource foundResource = doGet("/api/resource/" + savedResource.getId().getId().toString(), TbResource.class); |
|||
Assert.assertEquals(foundResource.getTitle(), savedResource.getTitle()); |
|||
} |
|||
|
|||
@Test |
|||
public void testUpdateTbResourceFromDifferentTenant() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My first resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
|
|||
TbResource savedResource = doPost("/api/resource", resource, TbResource.class); |
|||
|
|||
loginDifferentTenant(); |
|||
doPost("/api/resource", savedResource, TbResource.class, status().isForbidden()); |
|||
deleteDifferentTenant(); |
|||
} |
|||
|
|||
@Test |
|||
public void testFindTbResourceById() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My first resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
|
|||
TbResource savedResource = doPost("/api/resource", resource, TbResource.class); |
|||
|
|||
TbResource foundResource = doGet("/api/resource/" + savedResource.getId().getId().toString(), TbResource.class); |
|||
Assert.assertNotNull(foundResource); |
|||
Assert.assertEquals(savedResource, foundResource); |
|||
} |
|||
|
|||
@Test |
|||
public void testDeleteTbResource() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My first resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
|
|||
TbResource savedResource = doPost("/api/resource", resource, TbResource.class); |
|||
|
|||
doDelete("/api/resource/" + savedResource.getId().getId().toString()) |
|||
.andExpect(status().isOk()); |
|||
|
|||
doGet("/api/resource/" + savedResource.getId().getId().toString()) |
|||
.andExpect(status().isNotFound()); |
|||
} |
|||
|
|||
@Test |
|||
public void testFindTenantTbResources() throws Exception { |
|||
List<TbResourceInfo> resources = new ArrayList<>(); |
|||
for (int i = 0; i < 173; i++) { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTitle("Resource" + i); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setFileName(i + DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
resources.add(new TbResourceInfo(doPost("/api/resource", resource, TbResource.class))); |
|||
} |
|||
List<TbResourceInfo> loadedResources = new ArrayList<>(); |
|||
PageLink pageLink = new PageLink(24); |
|||
PageData<TbResourceInfo> pageData; |
|||
do { |
|||
pageData = doGetTypedWithPageLink("/api/resource?", |
|||
new TypeReference<PageData<TbResourceInfo>>() { |
|||
}, pageLink); |
|||
loadedResources.addAll(pageData.getData()); |
|||
if (pageData.hasNext()) { |
|||
pageLink = pageLink.nextPageLink(); |
|||
} |
|||
} while (pageData.hasNext()); |
|||
|
|||
Collections.sort(resources, idComparator); |
|||
Collections.sort(loadedResources, idComparator); |
|||
|
|||
Assert.assertEquals(resources, loadedResources); |
|||
} |
|||
|
|||
@Test |
|||
public void testFindSystemTbResources() throws Exception { |
|||
loginSysAdmin(); |
|||
|
|||
List<TbResourceInfo> resources = new ArrayList<>(); |
|||
for (int i = 0; i < 173; i++) { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTitle("Resource" + i); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setFileName(i + DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
resources.add(new TbResourceInfo(doPost("/api/resource", resource, TbResource.class))); |
|||
} |
|||
List<TbResourceInfo> loadedResources = new ArrayList<>(); |
|||
PageLink pageLink = new PageLink(24); |
|||
PageData<TbResourceInfo> pageData; |
|||
do { |
|||
pageData = doGetTypedWithPageLink("/api/resource?", |
|||
new TypeReference<PageData<TbResourceInfo>>() { |
|||
}, pageLink); |
|||
loadedResources.addAll(pageData.getData()); |
|||
if (pageData.hasNext()) { |
|||
pageLink = pageLink.nextPageLink(); |
|||
} |
|||
} while (pageData.hasNext()); |
|||
|
|||
Collections.sort(resources, idComparator); |
|||
Collections.sort(loadedResources, idComparator); |
|||
|
|||
Assert.assertEquals(resources, loadedResources); |
|||
|
|||
for (TbResourceInfo resource : resources) { |
|||
doDelete("/api/resource/" + resource.getId().getId().toString()) |
|||
.andExpect(status().isOk()); |
|||
} |
|||
|
|||
pageLink = new PageLink(27); |
|||
loadedResources.clear(); |
|||
do { |
|||
pageData = doGetTypedWithPageLink("/api/resource?", |
|||
new TypeReference<PageData<TbResourceInfo>>() { |
|||
}, pageLink); |
|||
loadedResources.addAll(pageData.getData()); |
|||
if (pageData.hasNext()) { |
|||
pageLink = pageLink.nextPageLink(); |
|||
} |
|||
} while (pageData.hasNext()); |
|||
|
|||
Assert.assertTrue(loadedResources.isEmpty()); |
|||
} |
|||
|
|||
@Test |
|||
public void testFindSystemAndTenantTbResources() throws Exception { |
|||
List<TbResourceInfo> systemResources = new ArrayList<>(); |
|||
List<TbResourceInfo> expectedResources = new ArrayList<>(); |
|||
for (int i = 0; i < 73; i++) { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTitle("Resource" + i); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setFileName(i + DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
expectedResources.add(new TbResourceInfo(doPost("/api/resource", resource, TbResource.class))); |
|||
} |
|||
|
|||
loginSysAdmin(); |
|||
|
|||
for (int i = 0; i < 173; i++) { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTitle("Resource" + i); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setFileName(i + DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
TbResourceInfo savedResource = new TbResourceInfo(doPost("/api/resource", resource, TbResource.class)); |
|||
systemResources.add(savedResource); |
|||
if (i >= 73) { |
|||
expectedResources.add(savedResource); |
|||
} |
|||
} |
|||
|
|||
login(tenantAdmin.getEmail(), "testPassword1"); |
|||
|
|||
List<TbResourceInfo> loadedResources = new ArrayList<>(); |
|||
PageLink pageLink = new PageLink(24); |
|||
PageData<TbResourceInfo> pageData; |
|||
do { |
|||
pageData = doGetTypedWithPageLink("/api/resource?", |
|||
new TypeReference<PageData<TbResourceInfo>>() { |
|||
}, pageLink); |
|||
loadedResources.addAll(pageData.getData()); |
|||
if (pageData.hasNext()) { |
|||
pageLink = pageLink.nextPageLink(); |
|||
} |
|||
} while (pageData.hasNext()); |
|||
|
|||
Collections.sort(expectedResources, idComparator); |
|||
Collections.sort(loadedResources, idComparator); |
|||
|
|||
Assert.assertEquals(expectedResources, loadedResources); |
|||
|
|||
loginSysAdmin(); |
|||
|
|||
for (TbResourceInfo resource : systemResources) { |
|||
doDelete("/api/resource/" + resource.getId().getId().toString()) |
|||
.andExpect(status().isOk()); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
/** |
|||
* Copyright © 2016-2021 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.controller.sql; |
|||
|
|||
import org.thingsboard.server.controller.BaseTbResourceControllerTest; |
|||
import org.thingsboard.server.dao.service.DaoSqlTest; |
|||
|
|||
@DaoSqlTest |
|||
public class TbResourceControllerSqlTest extends BaseTbResourceControllerTest { |
|||
} |
|||
@ -1,37 +0,0 @@ |
|||
/** |
|||
* Copyright © 2016-2021 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.common.data.transport.resource; |
|||
|
|||
import lombok.Data; |
|||
import org.thingsboard.server.common.data.HasTenantId; |
|||
import org.thingsboard.server.common.data.id.TenantId; |
|||
|
|||
@Data |
|||
public class Resource implements HasTenantId { |
|||
private TenantId tenantId; |
|||
private ResourceType resourceType; |
|||
private String resourceId; |
|||
private String value; |
|||
|
|||
@Override |
|||
public String toString() { |
|||
return "Resource{" + |
|||
"tenantId=" + tenantId + |
|||
", resourceType=" + resourceType + |
|||
", resourceId='" + resourceId + '\'' + |
|||
'}'; |
|||
} |
|||
} |
|||
@ -0,0 +1,350 @@ |
|||
/** |
|||
* Copyright © 2016-2021 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.dao.service; |
|||
|
|||
import com.datastax.oss.driver.api.core.uuid.Uuids; |
|||
import org.junit.After; |
|||
import org.junit.Assert; |
|||
import org.junit.Before; |
|||
import org.junit.Test; |
|||
import org.thingsboard.server.common.data.ResourceType; |
|||
import org.thingsboard.server.common.data.TbResource; |
|||
import org.thingsboard.server.common.data.TbResourceInfo; |
|||
import org.thingsboard.server.common.data.Tenant; |
|||
import org.thingsboard.server.common.data.id.TenantId; |
|||
import org.thingsboard.server.common.data.page.PageData; |
|||
import org.thingsboard.server.common.data.page.PageLink; |
|||
import org.thingsboard.server.dao.exception.DataValidationException; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.Base64; |
|||
import java.util.Collections; |
|||
import java.util.List; |
|||
|
|||
public abstract class BaseTbResourceServiceTest extends AbstractServiceTest { |
|||
|
|||
private static final String LWM2M_TEST_MODEL = "<LWM2M xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www.openmobilealliance.org/tech/profiles/LWM2M-v1_1.xsd\">\n" + |
|||
"<Object ObjectType=\"MODefinition\">\n" + |
|||
"<Name>My first resource</Name>\n" + |
|||
"<Description1></Description1>\n" + |
|||
"<ObjectID>0</ObjectID>\n" + |
|||
"<ObjectURN></ObjectURN>\n" + |
|||
"<ObjectVersion>1.0</ObjectVersion>\n" + |
|||
"<MultipleInstances>Multiple</MultipleInstances>\n" + |
|||
"<Mandatory>Mandatory</Mandatory>\n" + |
|||
"<Resources>\n" + |
|||
"<Item ID=\"0\">\n" + |
|||
"<Name>LWM2M</Name>\n" + |
|||
"<Operations></Operations>\n" + |
|||
"<MultipleInstances>Single</MultipleInstances>\n" + |
|||
"<Mandatory>Mandatory</Mandatory>\n" + |
|||
"<Type>String</Type>\n" + |
|||
"<RangeEnumeration>0..255</RangeEnumeration>\n" + |
|||
"<Units></Units>\n" + |
|||
"<Description></Description>\n" + |
|||
"</Item>\n" + |
|||
"</Resources>\n" + |
|||
"<Description2></Description2>\n" + |
|||
"</Object>\n" + |
|||
"</LWM2M>"; |
|||
|
|||
private static final String DEFAULT_FILE_NAME = "test.jks"; |
|||
|
|||
private IdComparator<TbResourceInfo> idComparator = new IdComparator<>(); |
|||
|
|||
private TenantId tenantId; |
|||
|
|||
@Before |
|||
public void before() { |
|||
Tenant tenant = new Tenant(); |
|||
tenant.setTitle("My tenant"); |
|||
Tenant savedTenant = tenantService.saveTenant(tenant); |
|||
Assert.assertNotNull(savedTenant); |
|||
tenantId = savedTenant.getId(); |
|||
} |
|||
|
|||
@After |
|||
public void after() { |
|||
tenantService.deleteTenant(tenantId); |
|||
} |
|||
|
|||
@Test |
|||
public void testSaveTbResource() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTenantId(tenantId); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My first resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
|
|||
TbResource savedResource = resourceService.saveResource(resource); |
|||
|
|||
Assert.assertNotNull(savedResource); |
|||
Assert.assertNotNull(savedResource.getId()); |
|||
Assert.assertTrue(savedResource.getCreatedTime() > 0); |
|||
Assert.assertEquals(resource.getTenantId(), savedResource.getTenantId()); |
|||
Assert.assertEquals(resource.getTitle(), savedResource.getTitle()); |
|||
Assert.assertEquals(resource.getResourceKey(), savedResource.getResourceKey()); |
|||
Assert.assertEquals(resource.getData(), savedResource.getData()); |
|||
|
|||
savedResource.setTitle("My new resource"); |
|||
|
|||
resourceService.saveResource(savedResource); |
|||
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); |
|||
Assert.assertEquals(foundResource.getTitle(), savedResource.getTitle()); |
|||
|
|||
resourceService.deleteResource(tenantId, savedResource.getId()); |
|||
} |
|||
|
|||
@Test |
|||
public void testSaveLwm2mTbResource() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTenantId(tenantId); |
|||
resource.setResourceType(ResourceType.LWM2M_MODEL); |
|||
resource.setFileName("test_model.xml"); |
|||
resource.setData(Base64.getEncoder().encodeToString(LWM2M_TEST_MODEL.getBytes())); |
|||
|
|||
TbResource savedResource = resourceService.saveResource(resource); |
|||
|
|||
Assert.assertNotNull(savedResource); |
|||
Assert.assertNotNull(savedResource.getId()); |
|||
Assert.assertTrue(savedResource.getCreatedTime() > 0); |
|||
Assert.assertEquals(resource.getTenantId(), savedResource.getTenantId()); |
|||
Assert.assertEquals("My first resource", savedResource.getTitle()); |
|||
Assert.assertEquals("0_1.0", savedResource.getResourceKey()); |
|||
Assert.assertEquals(resource.getData(), savedResource.getData()); |
|||
|
|||
resourceService.deleteResource(tenantId, savedResource.getId()); |
|||
} |
|||
|
|||
@Test |
|||
public void testSaveTbResourceWithEmptyTenant() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
TbResource savedResource = resourceService.saveResource(resource); |
|||
|
|||
Assert.assertEquals(TenantId.SYS_TENANT_ID, savedResource.getTenantId()); |
|||
|
|||
resourceService.deleteResource(tenantId, savedResource.getId()); |
|||
} |
|||
|
|||
@Test(expected = DataValidationException.class) |
|||
public void testSaveTbResourceWithExistsFileName() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTenantId(tenantId); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
|
|||
TbResource savedResource = resourceService.saveResource(resource); |
|||
|
|||
TbResource resource2 = new TbResource(); |
|||
resource.setTenantId(tenantId); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
|
|||
try { |
|||
resourceService.saveResource(resource2); |
|||
} finally { |
|||
resourceService.deleteResource(tenantId, savedResource.getId()); |
|||
} |
|||
} |
|||
|
|||
@Test(expected = DataValidationException.class) |
|||
public void testSaveTbResourceWithEmptyTitle() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTenantId(tenantId); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
resourceService.saveResource(resource); |
|||
} |
|||
|
|||
@Test(expected = DataValidationException.class) |
|||
public void testSaveTbResourceWithInvalidTenant() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTenantId(new TenantId(Uuids.timeBased())); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
resourceService.saveResource(resource); |
|||
} |
|||
|
|||
@Test |
|||
public void testFindResourceById() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
TbResource savedResource = resourceService.saveResource(resource); |
|||
|
|||
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); |
|||
Assert.assertNotNull(foundResource); |
|||
Assert.assertEquals(savedResource, foundResource); |
|||
resourceService.deleteResource(tenantId, savedResource.getId()); |
|||
} |
|||
|
|||
@Test |
|||
public void testFindResourceByTenantIdAndResourceTypeAndResourceKey() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTenantId(tenantId); |
|||
resource.setTitle("My resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
TbResource savedResource = resourceService.saveResource(resource); |
|||
|
|||
TbResource foundResource = resourceService.getResource(tenantId, savedResource.getResourceType(), savedResource.getResourceKey()); |
|||
Assert.assertNotNull(foundResource); |
|||
Assert.assertEquals(savedResource, foundResource); |
|||
resourceService.deleteResource(tenantId, savedResource.getId()); |
|||
} |
|||
|
|||
@Test |
|||
public void testDeleteResource() throws Exception { |
|||
TbResource resource = new TbResource(); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setTitle("My resource"); |
|||
resource.setFileName(DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
TbResource savedResource = resourceService.saveResource(resource); |
|||
|
|||
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); |
|||
Assert.assertNotNull(foundResource); |
|||
resourceService.deleteResource(tenantId, savedResource.getId()); |
|||
foundResource = resourceService.findResourceById(tenantId, savedResource.getId()); |
|||
Assert.assertNull(foundResource); |
|||
} |
|||
|
|||
@Test |
|||
public void testFindTenantResourcesByTenantId() throws Exception { |
|||
Tenant tenant = new Tenant(); |
|||
tenant.setTitle("Test tenant"); |
|||
tenant = tenantService.saveTenant(tenant); |
|||
|
|||
TenantId tenantId = tenant.getId(); |
|||
|
|||
List<TbResourceInfo> resources = new ArrayList<>(); |
|||
for (int i = 0; i < 165; i++) { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTenantId(tenantId); |
|||
resource.setTitle("Resource" + i); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setFileName(i + DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
resources.add(new TbResourceInfo(resourceService.saveResource(resource))); |
|||
} |
|||
|
|||
List<TbResourceInfo> loadedResources = new ArrayList<>(); |
|||
PageLink pageLink = new PageLink(16); |
|||
PageData<TbResourceInfo> pageData; |
|||
do { |
|||
pageData = resourceService.findTenantResourcesByTenantId(tenantId, pageLink); |
|||
loadedResources.addAll(pageData.getData()); |
|||
if (pageData.hasNext()) { |
|||
pageLink = pageLink.nextPageLink(); |
|||
} |
|||
} while (pageData.hasNext()); |
|||
|
|||
Collections.sort(resources, idComparator); |
|||
Collections.sort(loadedResources, idComparator); |
|||
|
|||
Assert.assertEquals(resources, loadedResources); |
|||
|
|||
resourceService.deleteResourcesByTenantId(tenantId); |
|||
|
|||
pageLink = new PageLink(31); |
|||
pageData = resourceService.findTenantResourcesByTenantId(tenantId, pageLink); |
|||
Assert.assertFalse(pageData.hasNext()); |
|||
Assert.assertTrue(pageData.getData().isEmpty()); |
|||
|
|||
tenantService.deleteTenant(tenantId); |
|||
} |
|||
|
|||
@Test |
|||
public void testFindAllTenantResourcesByTenantId() throws Exception { |
|||
Tenant tenant = new Tenant(); |
|||
tenant.setTitle("Test tenant"); |
|||
tenant = tenantService.saveTenant(tenant); |
|||
|
|||
TenantId tenantId = tenant.getId(); |
|||
|
|||
List<TbResourceInfo> resources = new ArrayList<>(); |
|||
for (int i = 0; i < 100; i++) { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTenantId(TenantId.SYS_TENANT_ID); |
|||
resource.setTitle("System Resource" + i); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setFileName(i + DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
TbResourceInfo tbResourceInfo = new TbResourceInfo(resourceService.saveResource(resource)); |
|||
if (i >= 50) { |
|||
resources.add(tbResourceInfo); |
|||
} |
|||
} |
|||
|
|||
for (int i = 0; i < 50; i++) { |
|||
TbResource resource = new TbResource(); |
|||
resource.setTenantId(tenantId); |
|||
resource.setTitle("Tenant Resource" + i); |
|||
resource.setResourceType(ResourceType.JKS); |
|||
resource.setFileName(i + DEFAULT_FILE_NAME); |
|||
resource.setData("Test Data"); |
|||
resources.add(new TbResourceInfo(resourceService.saveResource(resource))); |
|||
} |
|||
|
|||
List<TbResourceInfo> loadedResources = new ArrayList<>(); |
|||
PageLink pageLink = new PageLink(10); |
|||
PageData<TbResourceInfo> pageData; |
|||
do { |
|||
pageData = resourceService.findAllTenantResourcesByTenantId(tenantId, pageLink); |
|||
loadedResources.addAll(pageData.getData()); |
|||
if (pageData.hasNext()) { |
|||
pageLink = pageLink.nextPageLink(); |
|||
} |
|||
} while (pageData.hasNext()); |
|||
|
|||
Collections.sort(resources, idComparator); |
|||
Collections.sort(loadedResources, idComparator); |
|||
|
|||
Assert.assertEquals(resources, loadedResources); |
|||
|
|||
resourceService.deleteResourcesByTenantId(tenantId); |
|||
|
|||
pageLink = new PageLink(100); |
|||
pageData = resourceService.findAllTenantResourcesByTenantId(tenantId, pageLink); |
|||
Assert.assertFalse(pageData.hasNext()); |
|||
Assert.assertEquals(pageData.getData().size(), 100); |
|||
|
|||
resourceService.deleteResourcesByTenantId(TenantId.SYS_TENANT_ID); |
|||
|
|||
pageLink = new PageLink(100); |
|||
pageData = resourceService.findAllTenantResourcesByTenantId(TenantId.SYS_TENANT_ID, pageLink); |
|||
Assert.assertFalse(pageData.hasNext()); |
|||
Assert.assertTrue(pageData.getData().isEmpty()); |
|||
|
|||
tenantService.deleteTenant(tenantId); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
/** |
|||
* Copyright © 2016-2021 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.dao.service.sql; |
|||
|
|||
import org.thingsboard.server.dao.service.BaseTbResourceServiceTest; |
|||
import org.thingsboard.server.dao.service.DaoSqlTest; |
|||
|
|||
@DaoSqlTest |
|||
public class TbResourceServiceSqlTest extends BaseTbResourceServiceTest { |
|||
} |
|||
Loading…
Reference in new issue