Browse Source

added tests

pull/8562/head
dashevchenko 3 years ago
parent
commit
29384170d7
  1. 2
      application/src/main/java/org/thingsboard/server/controller/ControllerConstants.java
  2. 8
      application/src/main/java/org/thingsboard/server/controller/TbResourceController.java
  3. 7
      application/src/test/java/org/thingsboard/server/controller/AbstractWebTest.java
  4. 112
      application/src/test/java/org/thingsboard/server/controller/TbResourceControllerTest.java
  5. 21
      common/data/src/main/java/org/thingsboard/server/common/data/ResourceType.java
  6. 6
      dao/src/main/java/org/thingsboard/server/dao/model/sql/TbResourceInfoEntity.java
  7. 1
      dao/src/main/resources/sql/schema-entities.sql

2
application/src/main/java/org/thingsboard/server/controller/ControllerConstants.java

@ -140,7 +140,7 @@ public class ControllerConstants {
protected static final String RESOURCE_TEXT_SEARCH_DESCRIPTION = "The case insensitive 'substring' filter based on the resource title.";
protected static final String RESOURCE_SORT_PROPERTY_ALLOWABLE_VALUES = "createdTime, title, resourceType, tenantId";
protected static final String RESOURCE_TYPE_PROPERTY_ALLOWABLE_VALUES = "LWM2M_MODEL, JKS, PKCS_12, JS_MODULE";
protected static final String RESOURCE_TYPE_PROPERTY_ALLOWABLE_VALUES = "lwm2m, jks, pkcs12, js";
protected static final String RESOURCE_TYPE = "A string value representing the resource type.";
protected static final String LWM2M_OBJECT_DESCRIPTION = "LwM2M Object is a object that includes information about the LwM2M model which can be used in transport configuration for the LwM2M device profile. ";

8
application/src/main/java/org/thingsboard/server/controller/TbResourceController.java

@ -119,7 +119,7 @@ public class TbResourceController extends BaseController {
@RequestMapping(value = "/resource/pkcs12/{resourceId}/download", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<org.springframework.core.io.Resource> downloadPkcs12ResourceIfChanged(@ApiParam(value = RESOURCE_ID_PARAM_DESCRIPTION)
@PathVariable(RESOURCE_ID) String strResourceId, HttpHeaders headers) throws ThingsboardException {
@PathVariable(RESOURCE_ID) String strResourceId, @RequestHeader HttpHeaders headers) throws ThingsboardException {
return downloadResourceIfChanged(ResourceType.PKCS_12, strResourceId, headers);
}
@ -128,7 +128,7 @@ public class TbResourceController extends BaseController {
@RequestMapping(value = "/resource/js/{resourceId}/download", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<org.springframework.core.io.Resource> downloadJsResourceIfChanged(@ApiParam(value = RESOURCE_ID_PARAM_DESCRIPTION)
@PathVariable(RESOURCE_ID) String strResourceId, HttpHeaders headers) throws ThingsboardException {
@PathVariable(RESOURCE_ID) String strResourceId, @RequestHeader HttpHeaders headers) throws ThingsboardException {
return downloadResourceIfChanged(ResourceType.JS_MODULE, strResourceId, headers);
}
@ -203,7 +203,7 @@ public class TbResourceController extends BaseController {
TbResourceInfoFilter.TbResourceInfoFilterBuilder filter = TbResourceInfoFilter.builder();
filter.tenantId(getTenantId());
if (StringUtils.isNotEmpty(resourceType)){
filter.resourceType(ResourceType.valueOf(resourceType));
filter.resourceType(ResourceType.getResourceByType(resourceType));
}
if (Authority.SYS_ADMIN.equals(getCurrentUser().getAuthority())) {
return checkNotNull(resourceService.findTenantResourcesByTenantId(filter.build(), pageLink));
@ -283,7 +283,7 @@ public class TbResourceController extends BaseController {
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + tbResource.getFileName())
.header("x-filename", tbResource.getFileName())
.contentLength(resource.contentLength())
.header("Content-Type", type.mediaType)
.header("Content-Type", type.getMediaType())
.cacheControl(CacheControl.noCache())
.eTag(tbResource.getHashCode())
.body(resource);

7
application/src/test/java/org/thingsboard/server/controller/AbstractWebTest.java

@ -601,6 +601,13 @@ public abstract class AbstractWebTest extends AbstractInMemoryStorageTest {
return mockMvc.perform(getRequest);
}
protected ResultActions doGet(String urlTemplate, HttpHeaders httpHeaders, Object... urlVariables) throws Exception {
MockHttpServletRequestBuilder getRequest = get(urlTemplate, urlVariables);
getRequest.headers(httpHeaders);
setJwtToken(getRequest);
return mockMvc.perform(getRequest);
}
protected <T> T doGet(String urlTemplate, Class<T> responseClass, Object... urlVariables) throws Exception {
return readResponse(doGet(urlTemplate, urlVariables).andExpect(status().isOk()), responseClass);
}

112
application/src/test/java/org/thingsboard/server/controller/TbResourceControllerTest.java

File diff suppressed because one or more lines are too long

21
common/data/src/main/java/org/thingsboard/server/common/data/ResourceType.java

@ -21,11 +21,28 @@ public enum ResourceType {
PKCS_12("pkcs12", "application/x-pkcs12"),
JS_MODULE("js", "application/javascript");
public String type;
public String mediaType;
private final String type;
private final String mediaType;
ResourceType(String type, String mediaType) {
this.type = type;
this.mediaType = mediaType;
}
public static ResourceType getResourceByType(String type) {
for(ResourceType resourceType : values()) {
if (resourceType.getType().equalsIgnoreCase(type)) {
return resourceType;
}
}
throw new IllegalArgumentException();
}
public String getMediaType() {
return mediaType;
}
public String getType() {
return type;
}
}

6
dao/src/main/java/org/thingsboard/server/dao/model/sql/TbResourceInfoEntity.java

@ -29,6 +29,7 @@ import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.RESOURCE_HASH_CODE_COLUMN;
import static org.thingsboard.server.dao.model.ModelConstants.RESOURCE_KEY_COLUMN;
import static org.thingsboard.server.dao.model.ModelConstants.RESOURCE_TABLE_NAME;
import static org.thingsboard.server.dao.model.ModelConstants.RESOURCE_TENANT_ID_COLUMN;
@ -57,6 +58,9 @@ public class TbResourceInfoEntity extends BaseSqlEntity<TbResourceInfo> implemen
@Column(name = SEARCH_TEXT_PROPERTY)
private String searchText;
@Column(name = RESOURCE_HASH_CODE_COLUMN)
private String hashCode;
public TbResourceInfoEntity() {
}
@ -70,6 +74,7 @@ public class TbResourceInfoEntity extends BaseSqlEntity<TbResourceInfo> implemen
this.resourceType = resource.getResourceType().name();
this.resourceKey = resource.getResourceKey();
this.searchText = resource.getSearchText();
this.hashCode = resource.getHashCode();
}
@Override
@ -81,6 +86,7 @@ public class TbResourceInfoEntity extends BaseSqlEntity<TbResourceInfo> implemen
resource.setResourceType(ResourceType.valueOf(resourceType));
resource.setResourceKey(resourceKey);
resource.setSearchText(searchText);
resource.setHashCode(hashCode);
return resource;
}
}

1
dao/src/main/resources/sql/schema-entities.sql

@ -697,6 +697,7 @@ CREATE TABLE IF NOT EXISTS resource (
search_text varchar(255),
file_name varchar(255) NOT NULL,
data varchar,
hash_code varchar,
CONSTRAINT resource_unq_key UNIQUE (tenant_id, resource_type, resource_key)
);

Loading…
Cancel
Save