diff --git a/pom.xml b/pom.xml index 81665c4..1a3e093 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ 2.3.0 17 - 2.37.2 + 2.37.4-SNAPSHOT 3.5.9 4.1.4 diff --git a/specmatic.yaml b/specmatic.yaml index 0066da4..2b3425d 100644 --- a/specmatic.yaml +++ b/specmatic.yaml @@ -3,9 +3,12 @@ contracts: - git: url: https://github.com/specmatic/specmatic-order-contracts.git provides: - - io/specmatic/examples/store/openapi/api_order_v5.yaml + - specs: + - io/specmatic/examples/store/openapi/api_order_v5.yaml + baseUrl: http://localhost:8090 - consumes: - - wsdls/inventory.wsdl + - wsdls/inventory.wsdl + report: types: APICoverage: @@ -14,3 +17,7 @@ report: minThresholdPercentage: 65 maxMissedEndpointsInSpec: 4 enforce: true +test: + resiliencyTests: + enable: all + filter: "PATH!='/internal/metrics'" diff --git a/src/test/java/com/store/ContractTest.java b/src/test/java/com/store/ContractTest.java index 3dd0385..fa6ca91 100644 --- a/src/test/java/com/store/ContractTest.java +++ b/src/test/java/com/store/ContractTest.java @@ -5,34 +5,21 @@ import io.specmatic.test.SpecmaticContractTest; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; -import org.springframework.boot.SpringApplication; -import org.springframework.context.ConfigurableApplicationContext; +import org.junit.jupiter.api.TestInstance; +import org.springframework.boot.test.context.SpringBootTest; import java.io.IOException; -import java.util.Optional; import static io.specmatic.stub.API.createStub; +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) public class ContractTest implements SpecmaticContractTest { - private static ConfigurableApplicationContext context; - private static final String EXCLUDED_ENDPOINTS = "'/internal/metrics'"; private static ContractStub stub = null; - @BeforeAll - public static void setUp() { - System.setProperty("host", "localhost"); - System.setProperty("port", "8090"); - System.setProperty("SPECMATIC_GENERATIVE_TESTS", "true"); - System.setProperty("SPECMATIC_TEST_PARALLELISM", "auto"); - System.setProperty("filter", String.format("PATH!=%s", EXCLUDED_ENDPOINTS)); - System.setProperty("INVENTORY_API_URL", "http://localhost:9000/ws"); - System.out.println("Running contract tests using Specmatic against application at localhost:8080"); - + public static void setup() throws Exception { DB.INSTANCE.resetDB(); - stub = createStub("localhost", 9000); - - context = SpringApplication.run(Application.class); } @AfterAll @@ -40,7 +27,5 @@ public static void tearDown() throws IOException { if(stub != null) { stub.close(); } - - context.close(); } } diff --git a/src/test/java/com/store/ContractTestUsingCLITest.java b/src/test/java/com/store/ContractTestUsingCLITest.java index 22695ce..3d654d1 100644 --- a/src/test/java/com/store/ContractTestUsingCLITest.java +++ b/src/test/java/com/store/ContractTestUsingCLITest.java @@ -11,6 +11,7 @@ import java.util.Map; import static java.util.Arrays.asList; +import static java.util.Collections.emptyMap; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @EnabledIf(value = "isNonCIOrLinux", disabledReason = "Run only on Linux in CI; all platforms allowed locally") @@ -48,14 +49,12 @@ public static void teardown() throws Exception { } private static SpecmaticExecutor createStub() { - List args = asList("virtualize", "--port=" + HTTP_STUB_PORT); - Map env = Map.of("SOME_ENV", "value"); - return new SpecmaticExecutor(args, env); + List args = asList("virtualize"); + return new SpecmaticExecutor(args, emptyMap()); } private static SpecmaticExecutor createTest() { - List args = asList("test", "--host=" + APPLICATION_HOST, "--port=" + APPLICATION_PORT, "--filter=PATH!=" + EXCLUDED_ENDPOINTS); - Map env = Map.of("SPECMATIC_GENERATIVE_TESTS", "true", "SPECMATIC_TEST_PARALLELISM", "auto"); - return new SpecmaticExecutor(args, env); + List args = asList("test"); + return new SpecmaticExecutor(args, emptyMap()); } } diff --git a/src/test/java/com/store/ContractTestUsingTestContainerTest.java b/src/test/java/com/store/ContractTestUsingTestContainerTest.java index 66154aa..d390afc 100644 --- a/src/test/java/com/store/ContractTestUsingTestContainerTest.java +++ b/src/test/java/com/store/ContractTestUsingTestContainerTest.java @@ -36,10 +36,8 @@ public static boolean isNonCIOrLinux() { System.out.println("Using docker host address: " + dockerHostAddress); testContainer = new GenericContainer<>("specmatic/specmatic:latest") - .withCommand("test", "--host=" + APPLICATION_HOST, "--port=" + APPLICATION_PORT, "--filter=PATH!=" + EXCLUDED_ENDPOINTS) + .withCommand("test") // .withImagePullPolicy(PullPolicy.alwaysPull()) - .withEnv("SPECMATIC_GENERATIVE_TESTS", "true") - .withEnv("SPECMATIC_TEST_PARALLELISM", "auto") .withFileSystemBind("./specmatic.yaml", "/usr/src/app/specmatic.yaml", BindMode.READ_ONLY) .withFileSystemBind("./build/reports/specmatic", "/usr/src/app/build/reports/specmatic", BindMode.READ_WRITE) // For Docker Desktop on Windows and Mac, "host.docker.internal" is used to refer to the host machine. @@ -53,8 +51,7 @@ public static boolean isNonCIOrLinux() { stubContainer = new GenericContainer<>("specmatic/specmatic") // .withImagePullPolicy(PullPolicy.alwaysPull()) .withCommand( - "virtualize", - "--port=" + HTTP_STUB_PORT + "virtualize" ) .withCreateContainerCmdModifier(cmd -> { if (cmd.getHostConfig() != null) {