fixed license, included edqs tests to test suite

This commit is contained in:
dashevchenko 2025-02-25 13:23:26 +02:00
parent f1e42aeeb0
commit 6c8887995a
10 changed files with 36 additions and 17 deletions

View File

@ -1,5 +1,5 @@
# #
# Copyright © 2016-2024 The Thingsboard Authors # Copyright © 2016-2025 The Thingsboard Authors
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@ -1,5 +1,5 @@
# #
# Copyright © 2016-2024 The Thingsboard Authors # Copyright © 2016-2025 The Thingsboard Authors
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!-- <!--
Copyright © 2016-2024 The Thingsboard Authors Copyright © 2016-2025 The Thingsboard Authors
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -165,7 +165,8 @@ public class ContainerTestSuite {
// to trigger edqs synchronization // to trigger edqs synchronization
addToFile(targetDir, "tb-node.env", addToFile(targetDir, "tb-node.env",
Map.of("TB_EDQS_SYNC_ENABLED", "true")); Map.of("TB_EDQS_SYNC_ENABLED", "true",
"TB_EDQS_API_ENABLED", "true"));
testContainer = new DockerComposeContainerImpl<>(composeFiles) testContainer = new DockerComposeContainerImpl<>(composeFiles)
.withPull(false) .withPull(false)

View File

@ -28,7 +28,6 @@ import io.restassured.internal.ValidatableResponseImpl;
import io.restassured.path.json.JsonPath; import io.restassured.path.json.JsonPath;
import io.restassured.response.ValidatableResponse; import io.restassured.response.ValidatableResponse;
import io.restassured.specification.RequestSpecification; import io.restassured.specification.RequestSpecification;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.Customer; import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.Dashboard; import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.Device;
@ -114,6 +113,11 @@ public class TestRestClient {
requestSpec.header(JWT_TOKEN_HEADER_PARAM, "Bearer " + token); requestSpec.header(JWT_TOKEN_HEADER_PARAM, "Bearer " + token);
} }
public void resetToken() {
token = null;
refreshToken = null;
}
public Tenant postTenant(Tenant tenant) { public Tenant postTenant(Tenant tenant) {
return given().spec(requestSpec).body(tenant) return given().spec(requestSpec).body(tenant)
.post("/api/tenant") .post("/api/tenant")
@ -494,11 +498,11 @@ public class TestRestClient {
public UserId createUserAndLogin(User user, String password) { public UserId createUserAndLogin(User user, String password) {
UserId userId = postUser(user).getId(); UserId userId = postUser(user).getId();
getUserToken(userId.getId().toString()); getAndSetUserToken(userId.getId().toString());
return userId; return userId;
} }
public void getUserToken(String id) { public void getAndSetUserToken(String id) {
ObjectNode tokenInfo = given().spec(requestSpec) ObjectNode tokenInfo = given().spec(requestSpec)
.get("/api/user/" + id + "/token") .get("/api/user/" + id + "/token")
.then() .then()

View File

@ -1,5 +1,5 @@
/** /**
* Copyright © 2016-2024 The Thingsboard Authors * Copyright © 2016-2025 The Thingsboard Authors
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -53,6 +53,7 @@ import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultCustom
import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultDeviceProfile; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultDeviceProfile;
import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultTenantAdmin; import static org.thingsboard.server.msa.ui.utils.EntityPrototypes.defaultTenantAdmin;
@DisableUIListeners
public class EdqsEntityDataQueryTest extends AbstractContainerTest { public class EdqsEntityDataQueryTest extends AbstractContainerTest {
private TenantId tenantId; private TenantId tenantId;
@ -70,7 +71,7 @@ public class EdqsEntityDataQueryTest extends AbstractContainerTest {
@BeforeClass @BeforeClass
public void beforeClass() throws Exception { public void beforeClass() throws Exception {
testRestClient.login("sysadmin@thingsboard.org", "sysadmin"); testRestClient.login("sysadmin@thingsboard.org", "sysadmin");
await().atMost(TIMEOUT, TimeUnit.SECONDS).until(() -> testRestClient.isEdqsApiEnabled()); await().atMost(60, TimeUnit.SECONDS).until(() -> testRestClient.isEdqsApiEnabled());
tenantId = testRestClient.postTenant(EntityPrototypes.defaultTenantPrototype("Tenant")).getId(); tenantId = testRestClient.postTenant(EntityPrototypes.defaultTenantPrototype("Tenant")).getId();
tenantAdminId = testRestClient.createUserAndLogin(defaultTenantAdmin(tenantId, "tenantAdmin@thingsboard.org"), "tenant"); tenantAdminId = testRestClient.createUserAndLogin(defaultTenantAdmin(tenantId, "tenantAdmin@thingsboard.org"), "tenant");
@ -97,6 +98,7 @@ public class EdqsEntityDataQueryTest extends AbstractContainerTest {
@AfterClass @AfterClass
public void afterClass() { public void afterClass() {
testRestClient.resetToken();
testRestClient.login("sysadmin@thingsboard.org", "sysadmin"); testRestClient.login("sysadmin@thingsboard.org", "sysadmin");
testRestClient.deleteTenant(tenantId); testRestClient.deleteTenant(tenantId);
testRestClient.deleteTenant(tenantId2); testRestClient.deleteTenant(tenantId2);
@ -111,13 +113,14 @@ public class EdqsEntityDataQueryTest extends AbstractContainerTest {
.atMost(30, TimeUnit.SECONDS) .atMost(30, TimeUnit.SECONDS)
.until(() -> testRestClient.postCountDataQuery(query).compareTo(97L * 2) >= 0); .until(() -> testRestClient.postCountDataQuery(query).compareTo(97L * 2) >= 0);
testRestClient.getUserToken(tenantAdminId.getId().toString()); testRestClient.getAndSetUserToken(tenantAdminId.getId().toString());
await("Waiting for total device count") await("Waiting for total device count")
.atMost(30, TimeUnit.SECONDS) .atMost(30, TimeUnit.SECONDS)
.until(() -> testRestClient.postCountDataQuery(query).equals(97L)); .until(() -> testRestClient.postCountDataQuery(query).equals(97L));
testRestClient.resetToken();
testRestClient.login("sysadmin@thingsboard.org", "sysadmin"); testRestClient.login("sysadmin@thingsboard.org", "sysadmin");
testRestClient.getUserToken(tenant2AdminId.getId().toString()); testRestClient.getAndSetUserToken(tenant2AdminId.getId().toString());
await("Waiting for total device count") await("Waiting for total device count")
.atMost(30, TimeUnit.SECONDS) .atMost(30, TimeUnit.SECONDS)
.until(() -> testRestClient.postCountDataQuery(query).equals(97L)); .until(() -> testRestClient.postCountDataQuery(query).equals(97L));
@ -126,16 +129,17 @@ public class EdqsEntityDataQueryTest extends AbstractContainerTest {
@Test @Test
public void testRetrieveTenantDevicesByDeviceTypeFilter() { public void testRetrieveTenantDevicesByDeviceTypeFilter() {
// login tenant admin // login tenant admin
testRestClient.getUserToken(tenantAdminId.getId().toString()); testRestClient.getAndSetUserToken(tenantAdminId.getId().toString());
checkUserDevices(tenantDevices); checkUserDevices(tenantDevices);
// login customer user // login customer user
testRestClient.getUserToken(customerUserId.getId().toString()); testRestClient.getAndSetUserToken(customerUserId.getId().toString());
checkUserDevices(tenantDevices.subList(0, 12)); checkUserDevices(tenantDevices.subList(0, 12));
// login other tenant admin // login other tenant admin
testRestClient.resetToken();
testRestClient.login("sysadmin@thingsboard.org", "sysadmin"); testRestClient.login("sysadmin@thingsboard.org", "sysadmin");
testRestClient.getUserToken(tenant2AdminId.getId().toString()); testRestClient.getAndSetUserToken(tenant2AdminId.getId().toString());
checkUserDevices(tenant2Devices); checkUserDevices(tenant2Devices);
} }

View File

@ -87,4 +87,14 @@
<package name="org.thingsboard.server.msa.ui.tests.alarmassignee.*"/> <package name="org.thingsboard.server.msa.ui.tests.alarmassignee.*"/>
</packages> </packages>
</test> </test>
<test name="Edqs tests">
<groups>
<run>
<exclude name="broken"/>
</run>
</groups>
<packages>
<package name="org.thingsboard.server.msa.edqs.*"/>
</packages>
</test>
</suite> </suite>

View File

@ -1,5 +1,5 @@
# #
# Copyright © 2016-2024 The Thingsboard Authors # Copyright © 2016-2025 The Thingsboard Authors
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# #
# Copyright © 2016-2024 The Thingsboard Authors # Copyright © 2016-2025 The Thingsboard Authors
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
<!-- <!--
Copyright © 2016-2024 The Thingsboard Authors Copyright © 2016-2025 The Thingsboard Authors
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.