added trim to json parsing, updated test
This commit is contained in:
		
							parent
							
								
									7be97f379c
								
							
						
					
					
						commit
						6ae8cdf623
					
				@ -38,6 +38,7 @@ import org.springframework.test.context.ContextConfiguration;
 | 
			
		||||
import org.testcontainers.shaded.org.awaitility.Awaitility;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.common.util.ThingsBoardExecutors;
 | 
			
		||||
import org.thingsboard.server.common.data.AttributeScope;
 | 
			
		||||
import org.thingsboard.server.common.data.Customer;
 | 
			
		||||
import org.thingsboard.server.common.data.Device;
 | 
			
		||||
import org.thingsboard.server.common.data.DeviceInfo;
 | 
			
		||||
@ -59,6 +60,7 @@ import org.thingsboard.server.common.data.id.CustomerId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.DeviceCredentialsId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.DeviceId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageData;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageLink;
 | 
			
		||||
import org.thingsboard.server.common.data.relation.EntityRelation;
 | 
			
		||||
@ -82,10 +84,10 @@ import org.thingsboard.server.utils.CsvUtils;
 | 
			
		||||
import java.nio.charset.StandardCharsets;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.LinkedHashMap;
 | 
			
		||||
import java.util.LinkedList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
			
		||||
@ -1595,11 +1597,11 @@ public class DeviceControllerTest extends AbstractControllerTest {
 | 
			
		||||
    public void testBulkImportDeviceWithJsonAttr() throws Exception {
 | 
			
		||||
        String deviceName = "some_device";
 | 
			
		||||
        String deviceType = "some_type";
 | 
			
		||||
        JsonNode deviceAttr = JacksonUtil.toJsonNode("{\"threshold\": 45}");
 | 
			
		||||
        String deviceAttr = "{\"threshold\":45}";
 | 
			
		||||
 | 
			
		||||
        List<List<String>> content = new LinkedList<>();
 | 
			
		||||
        content.add(Arrays.asList("NAME", "TYPE", "ATTR"));
 | 
			
		||||
        content.add(Arrays.asList(deviceName, deviceType, deviceAttr.toString()));
 | 
			
		||||
        content.add(Arrays.asList(deviceName, deviceType, deviceAttr));
 | 
			
		||||
 | 
			
		||||
        byte[] bytes = CsvUtils.generateCsv(content);
 | 
			
		||||
        BulkImportRequest request = new BulkImportRequest();
 | 
			
		||||
@ -1636,14 +1638,9 @@ public class DeviceControllerTest extends AbstractControllerTest {
 | 
			
		||||
        Assert.assertEquals(deviceName, savedDevice.getName());
 | 
			
		||||
        Assert.assertEquals(deviceType, savedDevice.getType());
 | 
			
		||||
 | 
			
		||||
        //check server attribute value
 | 
			
		||||
        await().atMost(TIMEOUT, TimeUnit.SECONDS).untilAsserted(() -> {
 | 
			
		||||
            Map<String, Object> actualAttribute = doGetAsyncTyped("/api/plugins/telemetry/DEVICE/" + savedDevice.getId() +
 | 
			
		||||
                    "/values/attributes/SERVER_SCOPE", new TypeReference<List<Map<String, Object>>>() {}).stream()
 | 
			
		||||
                    .filter(att -> att.get("key").equals("attr")).findFirst().get();
 | 
			
		||||
            LinkedHashMap<String, Object> expected = JacksonUtil.convertValue(deviceAttr, new TypeReference<>() {});
 | 
			
		||||
            Assert.assertEquals(expected, actualAttribute.get("value"));
 | 
			
		||||
        });
 | 
			
		||||
        Optional<AttributeKvEntry> retrieved = attributesService.find(tenantId, savedDevice.getId(), AttributeScope.SERVER_SCOPE, "attr").get();
 | 
			
		||||
        assertThat(retrieved.get().getJsonValue().get()).isEqualTo(deviceAttr);
 | 
			
		||||
        assertThat(retrieved.get().getStrValue()).isNotPresent();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
 | 
			
		||||
@ -77,8 +77,9 @@ public class TypeCastUtil {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static boolean looksLikeJson(String value) {
 | 
			
		||||
        return (value.startsWith("{") && value.endsWith("}")) ||
 | 
			
		||||
                (value.startsWith("[") && value.endsWith("]"));
 | 
			
		||||
        String trimmed = value.trim();
 | 
			
		||||
        return (trimmed.startsWith("{") && trimmed.endsWith("}")) ||
 | 
			
		||||
                (trimmed.startsWith("[") && trimmed.endsWith("]"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user