committed by
GitHub
11 changed files with 151 additions and 47 deletions
@ -0,0 +1,98 @@ |
|||
/** |
|||
* Copyright © 2016-2025 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.component; |
|||
|
|||
import com.fasterxml.jackson.databind.JsonNode; |
|||
import org.junit.jupiter.api.BeforeEach; |
|||
import org.junit.jupiter.api.Test; |
|||
import org.mockito.Mockito; |
|||
import org.thingsboard.common.util.JacksonUtil; |
|||
import org.thingsboard.server.common.data.id.TenantId; |
|||
import org.thingsboard.server.common.data.plugin.ComponentClusteringMode; |
|||
import org.thingsboard.server.common.data.plugin.ComponentDescriptor; |
|||
import org.thingsboard.server.common.data.plugin.ComponentScope; |
|||
import org.thingsboard.server.common.data.plugin.ComponentType; |
|||
import org.thingsboard.server.dao.exception.IncorrectParameterException; |
|||
|
|||
import static org.junit.jupiter.api.Assertions.assertFalse; |
|||
import static org.junit.jupiter.api.Assertions.assertThrows; |
|||
import static org.junit.jupiter.api.Assertions.assertTrue; |
|||
|
|||
class BaseComponentDescriptorServiceTest { |
|||
|
|||
private BaseComponentDescriptorService service; |
|||
private ComponentDescriptor componentDescriptor; |
|||
private TenantId tenantId; |
|||
|
|||
@BeforeEach |
|||
void setUp() { |
|||
service = Mockito.spy(BaseComponentDescriptorService.class); |
|||
tenantId = TenantId.SYS_TENANT_ID; |
|||
|
|||
// Create a simple component descriptor
|
|||
componentDescriptor = new ComponentDescriptor(); |
|||
componentDescriptor.setType(ComponentType.ACTION); |
|||
componentDescriptor.setScope(ComponentScope.TENANT); |
|||
componentDescriptor.setClusteringMode(ComponentClusteringMode.ENABLED); |
|||
componentDescriptor.setName("Test Component"); |
|||
componentDescriptor.setClazz("org.thingsboard.test.TestComponent"); |
|||
|
|||
// Create configuration descriptor with schema from JSON string
|
|||
String configDescriptorJson = """ |
|||
{ |
|||
"schema": { |
|||
"type": "object", |
|||
"properties": { |
|||
"testField": { |
|||
"type": "string" |
|||
} |
|||
}, |
|||
"required": ["testField"] |
|||
} |
|||
}"""; |
|||
|
|||
componentDescriptor.setConfigurationDescriptor(JacksonUtil.toJsonNode(configDescriptorJson)); |
|||
} |
|||
|
|||
@Test |
|||
void testValidate() { |
|||
// Create valid configuration from JSON string
|
|||
String validConfigJson = "{\"testField\": \"test value\"}"; |
|||
JsonNode validConfig = JacksonUtil.toJsonNode(validConfigJson); |
|||
|
|||
// Create invalid configuration (missing required field) from JSON string
|
|||
String invalidConfigJson = "{}"; |
|||
JsonNode invalidConfig = JacksonUtil.toJsonNode(invalidConfigJson); |
|||
|
|||
// Test valid configuration
|
|||
boolean validResult = service.validate(tenantId, componentDescriptor, validConfig); |
|||
assertTrue(validResult, "Valid configuration should pass validation"); |
|||
|
|||
// Test invalid configuration
|
|||
boolean invalidResult = service.validate(tenantId, componentDescriptor, invalidConfig); |
|||
assertFalse(invalidResult, "Invalid configuration should fail validation"); |
|||
|
|||
// Test with component descriptor without schema
|
|||
ComponentDescriptor noSchemaDescriptor = new ComponentDescriptor(componentDescriptor); |
|||
noSchemaDescriptor.setConfigurationDescriptor(JacksonUtil.toJsonNode("{}")); |
|||
|
|||
// Should throw exception when schema is missing
|
|||
assertThrows(IncorrectParameterException.class, () -> { |
|||
service.validate(tenantId, noSchemaDescriptor, validConfig); |
|||
}, "Should throw exception when schema is missing"); |
|||
} |
|||
|
|||
} |
|||
Loading…
Reference in new issue