test fixes, refactoring
This commit is contained in:
		
							parent
							
								
									62d6ffd715
								
							
						
					
					
						commit
						c5e1c5a1a5
					
				@ -70,25 +70,21 @@
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.testng</groupId>
 | 
			
		||||
            <artifactId>testng</artifactId>
 | 
			
		||||
            <version>7.6.1</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.assertj</groupId>
 | 
			
		||||
            <artifactId>assertj-core</artifactId>
 | 
			
		||||
            <version>3.23.1</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>io.rest-assured</groupId>
 | 
			
		||||
            <artifactId>rest-assured</artifactId>
 | 
			
		||||
            <version>5.2.0</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.hamcrest</groupId>
 | 
			
		||||
            <artifactId>hamcrest-all</artifactId>
 | 
			
		||||
            <version>1.3</version>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,6 @@ public abstract class AbstractContainerTest {
 | 
			
		||||
 | 
			
		||||
    @BeforeSuite
 | 
			
		||||
    public void beforeSuite() {
 | 
			
		||||
        RestAssured.filters(new RequestLoggingFilter(), new ResponseLoggingFilter());
 | 
			
		||||
        if ("false".equals(System.getProperty("runLocal", "false"))) {
 | 
			
		||||
            containerTestSuite.start();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@ public class TestProperties {
 | 
			
		||||
        if (instance.isActive()) {
 | 
			
		||||
            return WSS_URL;
 | 
			
		||||
        }
 | 
			
		||||
        return getProperty("tb.baseUrl");
 | 
			
		||||
        return getProperty("tb.wsUrl");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static String getProperty(String propertyName) {
 | 
			
		||||
 | 
			
		||||
@ -16,13 +16,21 @@
 | 
			
		||||
package org.thingsboard.server.msa;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.databind.JsonNode;
 | 
			
		||||
import io.restassured.RestAssured;
 | 
			
		||||
import io.restassured.builder.ResponseSpecBuilder;
 | 
			
		||||
import io.restassured.common.mapper.TypeRef;
 | 
			
		||||
import io.restassured.config.HeaderConfig;
 | 
			
		||||
import io.restassured.config.HttpClientConfig;
 | 
			
		||||
import io.restassured.config.RestAssuredConfig;
 | 
			
		||||
import io.restassured.filter.log.RequestLoggingFilter;
 | 
			
		||||
import io.restassured.filter.log.ResponseLoggingFilter;
 | 
			
		||||
import io.restassured.http.ContentType;
 | 
			
		||||
import io.restassured.path.json.JsonPath;
 | 
			
		||||
import io.restassured.response.ValidatableResponse;
 | 
			
		||||
import io.restassured.specification.RequestSpecification;
 | 
			
		||||
import io.restassured.specification.ResponseSpecification;
 | 
			
		||||
import org.hamcrest.Matchers;
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.thingsboard.rest.client.RestClient;
 | 
			
		||||
import org.thingsboard.server.common.data.Device;
 | 
			
		||||
import org.thingsboard.server.common.data.id.DeviceId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
			
		||||
@ -40,24 +48,33 @@ import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import static io.restassured.RestAssured.given;
 | 
			
		||||
import static org.apache.http.params.CoreConnectionPNames.CONNECTION_TIMEOUT;
 | 
			
		||||
import static org.apache.http.params.CoreConnectionPNames.SO_TIMEOUT;
 | 
			
		||||
import static org.hamcrest.Matchers.is;
 | 
			
		||||
import static org.hamcrest.core.AnyOf.anyOf;
 | 
			
		||||
import static org.thingsboard.server.common.data.StringUtils.isEmpty;
 | 
			
		||||
import static org.thingsboard.server.msa.AbstractContainerTest.getRequestFactoryForSelfSignedCert;
 | 
			
		||||
 | 
			
		||||
public class TestRestClient {
 | 
			
		||||
    private static final String JWT_TOKEN_HEADER_PARAM = "X-Authorization";
 | 
			
		||||
    private final String baseURL;
 | 
			
		||||
    private String token;
 | 
			
		||||
    private String refreshToken;
 | 
			
		||||
    private RequestSpecification spec;
 | 
			
		||||
    private RequestSpecification requestSpec;
 | 
			
		||||
    private ResponseSpecification responseSpec;
 | 
			
		||||
    protected static final String ACTIVATE_TOKEN_REGEX = "/api/noauth/activate?activateToken=";
 | 
			
		||||
 | 
			
		||||
    public TestRestClient(String url) {
 | 
			
		||||
        RestAssured.filters(new RequestLoggingFilter(), new ResponseLoggingFilter());
 | 
			
		||||
 | 
			
		||||
        baseURL = url;
 | 
			
		||||
        spec = given().baseUri(baseURL).contentType(ContentType.JSON);
 | 
			
		||||
        requestSpec = given().baseUri(baseURL)
 | 
			
		||||
                .contentType(ContentType.JSON)
 | 
			
		||||
                .config(RestAssuredConfig.config()
 | 
			
		||||
                        .headerConfig(HeaderConfig.headerConfig()
 | 
			
		||||
                                .overwriteHeadersWithName(JWT_TOKEN_HEADER_PARAM)));
 | 
			
		||||
 | 
			
		||||
        if (url.matches("^(https)://.*$")) {
 | 
			
		||||
            spec.relaxedHTTPSValidation();
 | 
			
		||||
            requestSpec.relaxedHTTPSValidation();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -70,12 +87,11 @@ public class TestRestClient {
 | 
			
		||||
                .getBody().jsonPath();
 | 
			
		||||
        token = jsonPath.get("token");
 | 
			
		||||
        refreshToken = jsonPath.get("refreshToken");
 | 
			
		||||
        spec.header(JWT_TOKEN_HEADER_PARAM, "Bearer " + token)
 | 
			
		||||
                .contentType(ContentType.JSON);
 | 
			
		||||
        requestSpec.header(JWT_TOKEN_HEADER_PARAM, "Bearer " + token);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Device postDevice(String accessToken, Device device) {
 | 
			
		||||
        return  given().spec(spec).body(device)
 | 
			
		||||
        return  given().spec(requestSpec).body(device)
 | 
			
		||||
                .pathParams("accessToken", accessToken)
 | 
			
		||||
                .post("/api/device?accessToken={accessToken}")
 | 
			
		||||
                .then()
 | 
			
		||||
@ -85,7 +101,7 @@ public class TestRestClient {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ValidatableResponse getDeviceById(DeviceId deviceId, int statusCode) {
 | 
			
		||||
        return  given().spec(spec)
 | 
			
		||||
        return  given().spec(requestSpec)
 | 
			
		||||
                .pathParams("deviceId", deviceId.getId())
 | 
			
		||||
                .get("/api/device/{deviceId}")
 | 
			
		||||
                .then()
 | 
			
		||||
@ -97,7 +113,7 @@ public class TestRestClient {
 | 
			
		||||
                .as(Device.class);
 | 
			
		||||
    }
 | 
			
		||||
    public DeviceCredentials getDeviceCredentialsByDeviceId(DeviceId deviceId) {
 | 
			
		||||
        return given().spec(spec).get("/api/device/{deviceId}/credentials", deviceId.getId())
 | 
			
		||||
        return given().spec(requestSpec).get("/api/device/{deviceId}/credentials", deviceId.getId())
 | 
			
		||||
                    .then()
 | 
			
		||||
                    .assertThat()
 | 
			
		||||
                    .statusCode(HttpStatus.OK.value())
 | 
			
		||||
@ -106,41 +122,41 @@ public class TestRestClient {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ValidatableResponse postTelemetry(String credentialsId, JsonNode telemetry) {
 | 
			
		||||
         return  given().spec(spec).body(telemetry)
 | 
			
		||||
         return  given().spec(requestSpec).body(telemetry)
 | 
			
		||||
                 .post("/api/v1/{credentialsId}/telemetry", credentialsId)
 | 
			
		||||
                 .then()
 | 
			
		||||
                 .statusCode(HttpStatus.OK.value());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ValidatableResponse deleteDevice(DeviceId deviceId) {
 | 
			
		||||
        return  given().spec(spec)
 | 
			
		||||
        return  given().spec(requestSpec)
 | 
			
		||||
                .delete("/api/device/{deviceId}", deviceId.getId())
 | 
			
		||||
                .then()
 | 
			
		||||
                .statusCode(HttpStatus.OK.value());
 | 
			
		||||
    }
 | 
			
		||||
    public ValidatableResponse deleteDeviceIfExists(DeviceId deviceId) {
 | 
			
		||||
        return  given().spec(spec)
 | 
			
		||||
        return  given().spec(requestSpec)
 | 
			
		||||
                .delete("/api/device/{deviceId}", deviceId.getId())
 | 
			
		||||
                .then()
 | 
			
		||||
                .statusCode(anyOf(is(HttpStatus.OK.value()),is(HttpStatus.NOT_FOUND.value())));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ValidatableResponse postTelemetryAttribute(String entityType, DeviceId deviceId, String scope, JsonNode attribute) {
 | 
			
		||||
        return  given().spec(spec).body(attribute)
 | 
			
		||||
        return  given().spec(requestSpec).body(attribute)
 | 
			
		||||
                .post("/api/plugins/telemetry/{entityType}/{entityId}/attributes/{scope}", entityType, deviceId.getId(), scope)
 | 
			
		||||
                .then()
 | 
			
		||||
                .statusCode(HttpStatus.OK.value());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ValidatableResponse postAttribute(String accessToken, JsonNode attribute) {
 | 
			
		||||
        return  given().spec(spec).body(attribute)
 | 
			
		||||
        return  given().spec(requestSpec).body(attribute)
 | 
			
		||||
                .post("/api/v1/{accessToken}/attributes/", accessToken)
 | 
			
		||||
                .then()
 | 
			
		||||
                .statusCode(HttpStatus.OK.value());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public JsonNode getAttributes(String accessToken, String clientKeys, String sharedKeys) {
 | 
			
		||||
        return  given().spec(spec)
 | 
			
		||||
        return  given().spec(requestSpec)
 | 
			
		||||
                .queryParam("clientKeys", clientKeys)
 | 
			
		||||
                .queryParam("sharedKeys", sharedKeys)
 | 
			
		||||
                .get("/api/v1/{accessToken}/attributes", accessToken)
 | 
			
		||||
@ -153,7 +169,7 @@ public class TestRestClient {
 | 
			
		||||
    public PageData<RuleChain> getRuleChains(PageLink pageLink) {
 | 
			
		||||
        Map<String, String> params = new HashMap<>();
 | 
			
		||||
        addPageLinkToParam(params, pageLink);
 | 
			
		||||
        return given().spec(spec).queryParams(params)
 | 
			
		||||
        return given().spec(requestSpec).queryParams(params)
 | 
			
		||||
                .get("/api/ruleChains")
 | 
			
		||||
                .then()
 | 
			
		||||
                .statusCode(HttpStatus.OK.value())
 | 
			
		||||
@ -162,7 +178,7 @@ public class TestRestClient {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RuleChain postRootRuleChain(RuleChain ruleChain) {
 | 
			
		||||
        return given().spec(spec)
 | 
			
		||||
        return given().spec(requestSpec)
 | 
			
		||||
                .body(ruleChain)
 | 
			
		||||
                .post("/api/ruleChain")
 | 
			
		||||
                .then()
 | 
			
		||||
@ -172,7 +188,7 @@ public class TestRestClient {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public RuleChainMetaData postRuleChainMetadata(RuleChainMetaData ruleChainMetaData) {
 | 
			
		||||
        return given().spec(spec)
 | 
			
		||||
        return given().spec(requestSpec)
 | 
			
		||||
                .body(ruleChainMetaData)
 | 
			
		||||
                .post("/api/ruleChain/metadata")
 | 
			
		||||
                .then()
 | 
			
		||||
@ -182,14 +198,14 @@ public class TestRestClient {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setRootRuleChain(RuleChainId ruleChainId) {
 | 
			
		||||
        given().spec(spec)
 | 
			
		||||
        given().spec(requestSpec)
 | 
			
		||||
                .post("/api/ruleChain/{ruleChainId}/root", ruleChainId.getId())
 | 
			
		||||
                .then()
 | 
			
		||||
                .statusCode(HttpStatus.OK.value());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void deleteRuleChain(RuleChainId ruleChainId) {
 | 
			
		||||
        given().spec(spec)
 | 
			
		||||
        given().spec(requestSpec)
 | 
			
		||||
                .delete("/api/ruleChain/{ruleChainId}", ruleChainId.getId())
 | 
			
		||||
                .then()
 | 
			
		||||
                .statusCode(HttpStatus.OK.value());
 | 
			
		||||
@ -224,7 +240,7 @@ public class TestRestClient {
 | 
			
		||||
        params.put("fromType", fromId.getEntityType().name());
 | 
			
		||||
        params.put("relationTypeGroup", relationTypeGroup.name());
 | 
			
		||||
 | 
			
		||||
        return given().spec(spec)
 | 
			
		||||
        return given().spec(requestSpec)
 | 
			
		||||
                .pathParams(params)
 | 
			
		||||
                .get("/api/relations?fromId={fromId}&fromType={fromType}&relationTypeGroup={relationTypeGroup}")
 | 
			
		||||
                .then()
 | 
			
		||||
@ -234,7 +250,7 @@ public class TestRestClient {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public JsonNode postServerSideRpc(DeviceId deviceId, JsonNode serverRpcPayload) {
 | 
			
		||||
        return given().spec(spec)
 | 
			
		||||
        return given().spec(requestSpec)
 | 
			
		||||
                .body(serverRpcPayload)
 | 
			
		||||
                .post("/api/rpc/twoway/{deviceId}", deviceId.getId())
 | 
			
		||||
                .then()
 | 
			
		||||
 | 
			
		||||
@ -16,6 +16,9 @@
 | 
			
		||||
package org.thingsboard.server.msa.connectivity;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.databind.JsonNode;
 | 
			
		||||
import com.google.common.util.concurrent.ListenableFuture;
 | 
			
		||||
import com.google.common.util.concurrent.ListeningExecutorService;
 | 
			
		||||
import com.google.common.util.concurrent.MoreExecutors;
 | 
			
		||||
import com.google.gson.JsonArray;
 | 
			
		||||
import com.google.gson.JsonObject;
 | 
			
		||||
import com.google.gson.JsonParser;
 | 
			
		||||
@ -24,11 +27,15 @@ import io.netty.buffer.Unpooled;
 | 
			
		||||
import io.netty.handler.codec.mqtt.MqttQoS;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.junit.Assert;
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.ResponseEntity;
 | 
			
		||||
import org.testcontainers.shaded.org.apache.commons.lang3.RandomStringUtils;
 | 
			
		||||
import org.testng.annotations.AfterMethod;
 | 
			
		||||
import org.testng.annotations.BeforeMethod;
 | 
			
		||||
import org.testng.annotations.Test;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.common.util.ThingsBoardThreadFactory;
 | 
			
		||||
import org.thingsboard.mqtt.MqttClient;
 | 
			
		||||
import org.thingsboard.mqtt.MqttClientConfig;
 | 
			
		||||
import org.thingsboard.mqtt.MqttHandler;
 | 
			
		||||
@ -44,12 +51,10 @@ import org.thingsboard.server.msa.AbstractContainerTest;
 | 
			
		||||
import org.thingsboard.server.msa.WsClient;
 | 
			
		||||
import org.thingsboard.server.msa.mapper.WsTelemetryResponse;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.nio.charset.StandardCharsets;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.concurrent.ArrayBlockingQueue;
 | 
			
		||||
import java.util.concurrent.BlockingQueue;
 | 
			
		||||
import java.util.concurrent.ExecutionException;
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
import java.util.concurrent.*;
 | 
			
		||||
 | 
			
		||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
			
		||||
import static org.thingsboard.server.common.data.DataConstants.DEVICE;
 | 
			
		||||
@ -187,7 +192,7 @@ public class MqttGatewayClientTest extends AbstractContainerTest {
 | 
			
		||||
        event = listener.getEvents().poll(10 * timeoutMultiplier, TimeUnit.SECONDS);
 | 
			
		||||
        responseData = jsonParser.parse(Objects.requireNonNull(event).getMessage()).getAsJsonObject();
 | 
			
		||||
 | 
			
		||||
        assertThat(responseData.has("value")).isTrue();
 | 
			
		||||
        assertThat(responseData.has("values")).isTrue();
 | 
			
		||||
        assertThat(responseData.get("values").getAsJsonObject().get("attr1").getAsString()).isEqualTo(sharedAttributes.get("attr1").getAsString());
 | 
			
		||||
        assertThat(responseData.get("values").getAsJsonObject().get("attr2").getAsString()).isEqualTo(sharedAttributes.get("attr2").getAsString());
 | 
			
		||||
 | 
			
		||||
@ -304,11 +309,19 @@ public class MqttGatewayClientTest extends AbstractContainerTest {
 | 
			
		||||
        JsonObject serverRpcPayload = new JsonObject();
 | 
			
		||||
        serverRpcPayload.addProperty("method", "getValue");
 | 
			
		||||
        serverRpcPayload.addProperty("params", true);
 | 
			
		||||
 | 
			
		||||
        JsonNode response = testRestClient.postServerSideRpc(createdDevice.getId(), mapper.readTree(serverRpcPayload.toString()));
 | 
			
		||||
        ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor(ThingsBoardThreadFactory.forName(getClass().getSimpleName())));
 | 
			
		||||
        ListenableFuture<JsonNode> future = service.submit(() -> {
 | 
			
		||||
            try {
 | 
			
		||||
                return testRestClient.postServerSideRpc(createdDevice.getId(), mapper.readTree(serverRpcPayload.toString()));
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // Wait for RPC call from the server and send the response
 | 
			
		||||
        MqttEvent requestFromServer = listener.getEvents().poll(10 * timeoutMultiplier, TimeUnit.SECONDS);
 | 
			
		||||
        service.shutdownNow();
 | 
			
		||||
 | 
			
		||||
        assertThat(requestFromServer).isNotNull();
 | 
			
		||||
        assertThat(requestFromServer.getMessage()).isNotNull();
 | 
			
		||||
        JsonNode requestFromServerJson = JacksonUtil.toJsonNode(requestFromServer.getMessage());
 | 
			
		||||
@ -326,8 +339,9 @@ public class MqttGatewayClientTest extends AbstractContainerTest {
 | 
			
		||||
        // Send a response to the server's RPC request
 | 
			
		||||
 | 
			
		||||
        mqttClient.publish(gatewayRpcTopic, Unpooled.wrappedBuffer(gatewayResponse.toString().getBytes())).get();
 | 
			
		||||
        JsonNode serverResponse = future.get(5 * timeoutMultiplier, TimeUnit.SECONDS);
 | 
			
		||||
 | 
			
		||||
        assertThat(response).isEqualTo(clientResponse.getAsJsonObject());
 | 
			
		||||
        assertThat(serverResponse).isEqualTo(mapper.readTree(clientResponse.toString()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@ -366,7 +380,7 @@ public class MqttGatewayClientTest extends AbstractContainerTest {
 | 
			
		||||
            TimeUnit.SECONDS.sleep(30);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        String deviceName = "mqtt_device";
 | 
			
		||||
        String deviceName = "mqtt_device" + RandomStringUtils.randomAlphabetic(5);
 | 
			
		||||
        mqttClient.publish("v1/gateway/connect", Unpooled.wrappedBuffer(createGatewayConnectPayload(deviceName).toString().getBytes()), MqttQoS.AT_LEAST_ONCE).get();
 | 
			
		||||
 | 
			
		||||
        if (timeoutMultiplier > 1) {
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,7 @@ package org.thingsboard.server.msa.prototypes;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.core.JsonProcessingException;
 | 
			
		||||
import com.fasterxml.jackson.databind.JsonNode;
 | 
			
		||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
			
		||||
import org.testcontainers.shaded.org.apache.commons.lang3.RandomStringUtils;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.common.data.Device;
 | 
			
		||||
@ -33,7 +34,7 @@ public class DevicePrototypes {
 | 
			
		||||
        String isGateway = "{\"gateway\":true}";
 | 
			
		||||
        JsonNode additionalInfo = JacksonUtil.valueToTree(isGateway);
 | 
			
		||||
        Device gatewayDeviceTemplate = new Device();
 | 
			
		||||
        gatewayDeviceTemplate.setName("mqtt_gateway " + RandomStringUtils.randomAlphabetic(5));
 | 
			
		||||
        gatewayDeviceTemplate.setName("mqtt_gateway_" + RandomStringUtils.randomAlphabetic(5));
 | 
			
		||||
        gatewayDeviceTemplate.setType("gateway");
 | 
			
		||||
        gatewayDeviceTemplate.setAdditionalInfo(additionalInfo);
 | 
			
		||||
        return gatewayDeviceTemplate;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								pom.xml
									
									
									
									
									
								
							@ -133,6 +133,10 @@
 | 
			
		||||
        <spring-test-dbunit.version>1.3.0</spring-test-dbunit.version> <!-- 2016 -->
 | 
			
		||||
        <takari-cpsuite.version>1.2.7</takari-cpsuite.version> <!-- 2015 -->
 | 
			
		||||
        <!--      BLACKBOX TEST SCOPE     -->
 | 
			
		||||
        <testng.version>7.6.1</testng.version>
 | 
			
		||||
        <assertj.version>3.23.1</assertj.version>
 | 
			
		||||
        <rest-assured.version>5.2.0</rest-assured.version>
 | 
			
		||||
        <hamcrest.version>1.3</hamcrest.version>
 | 
			
		||||
        <testcontainers.version>1.17.3</testcontainers.version>
 | 
			
		||||
        <zeroturnaround.version>1.12</zeroturnaround.version>
 | 
			
		||||
        <opensmpp.version>3.0.0</opensmpp.version>
 | 
			
		||||
@ -1618,6 +1622,30 @@
 | 
			
		||||
                    </exclusion>
 | 
			
		||||
                </exclusions>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.testng</groupId>
 | 
			
		||||
                <artifactId>testng</artifactId>
 | 
			
		||||
                <version>${testng.version}</version>
 | 
			
		||||
                <scope>test</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.assertj</groupId>
 | 
			
		||||
                <artifactId>assertj-core</artifactId>
 | 
			
		||||
                <version>${assertj.version}</version>
 | 
			
		||||
                <scope>test</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>io.rest-assured</groupId>
 | 
			
		||||
                <artifactId>rest-assured</artifactId>
 | 
			
		||||
                <version>${rest-assured.version}</version>
 | 
			
		||||
                <scope>test</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.hamcrest</groupId>
 | 
			
		||||
                <artifactId>hamcrest-all</artifactId>
 | 
			
		||||
                <version>${hamcrest}</version>
 | 
			
		||||
                <scope>test</scope>
 | 
			
		||||
            </dependency>
 | 
			
		||||
            <dependency>
 | 
			
		||||
                <groupId>org.awaitility</groupId>
 | 
			
		||||
                <artifactId>awaitility</artifactId>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user