From 7ff6512864ea4fe3cb074eb7a6a62d3579f4026e Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 7 Oct 2026 11:17:28 +0800 Subject: [PATCH] test(deploy): verify unified TEST and gray environment contracts --- .../config/ExportInfrastructureContractTest.java | 5 +++-- .../EventBridgeClientDeploymentContractTest.java | 13 +++++++++++-- .../controller/Phase4BrowserApiBoundaryTest.java | 4 ++-- .../DomesticPartnerWarehouseClientContractTest.java | 4 ++-- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/file/src/test/java/com/baiyue/file/config/ExportInfrastructureContractTest.java b/file/src/test/java/com/baiyue/file/config/ExportInfrastructureContractTest.java index 4cd57f188..f1dbe02ce 100644 --- a/file/src/test/java/com/baiyue/file/config/ExportInfrastructureContractTest.java +++ b/file/src/test/java/com/baiyue/file/config/ExportInfrastructureContractTest.java @@ -16,12 +16,13 @@ class ExportInfrastructureContractTest { assertTrue(compose.contains("FILE_EXPORT_PUBLISHER_ENABLED: ${FILE_EXPORT_PUBLISHER_ENABLED:-false}")); assertTrue(compose.contains("FILE_EXPORT_RECONCILER_ENABLED: ${FILE_EXPORT_RECONCILER_ENABLED:-false}")); assertTrue(compose.contains("-Xms1g -Xmx2g")); - assertTrue(compose.contains("MQ_TOPIC_PREFIX: test-")); + assertTrue(compose.contains("MQ_TOPIC_PREFIX: ${MQ_TOPIC_PREFIX:-test-}")); assertTrue(compose.contains("ROCKETMQ_NAME_SERVER: ${ROCKETMQ_NAME_SERVER}")); String entry=read("..","deploy","scripts","deploy-services.sh"); assertTrue(entry.contains("sh deploy/scripts/deploy-built-service.sh")); String deployScript=read("..","deploy","scripts","deploy-built-service.sh"); - assertTrue(deployScript.contains("MQ_TOPIC_PREFIX must be test-")); + assertTrue(deployScript.contains("MQ_TOPIC_PREFIX must be $DEPLOY_ENV-")); + assertTrue(deployScript.contains("[ \"$(env_file_value MQ_TOPIC_PREFIX)\" = \"$DEPLOY_ENV-\" ]")); assertTrue(deployScript.contains("ROCKETMQ_NAME_SERVER")); assertTrue(deployScript.contains("env_file_value")); } diff --git a/firstleg/src/test/java/com/baiyue/firstleg/client/EventBridgeClientDeploymentContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/client/EventBridgeClientDeploymentContractTest.java index e3e80589e..155007737 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/client/EventBridgeClientDeploymentContractTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/client/EventBridgeClientDeploymentContractTest.java @@ -1,10 +1,12 @@ package com.baiyue.firstleg.client; import org.junit.jupiter.api.Test; +import org.springframework.util.PropertyPlaceholderHelper; import java.nio.file.Files; import java.nio.file.Path; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -23,11 +25,18 @@ class EventBridgeClientDeploymentContractTest { } @Test - void testComposeUsesDirectBusinessServiceDns() throws Exception { + void composeUsesDirectBusinessServiceDnsForTestAndGray() throws Exception { String compose = Files.readString(REPOSITORY_ROOT.resolve("deploy/docker-compose.yml")); assertTrue(compose.contains("LASTLEG_SERVICE_URL: http://lastleg-service:9303")); - assertTrue(compose.contains("firstleg-test-network")); + String networkName = compose.lines().map(String::strip) + .filter(line -> line.startsWith("name: firstleg-") && line.endsWith("-network")) + .findFirst().orElseThrow().substring("name: ".length()); + assertEquals("firstleg-${DEPLOY_ENV:-test}-network", networkName); + var placeholders = new PropertyPlaceholderHelper("${", "}", ":-", false); + assertEquals("firstleg-test-network", placeholders.replacePlaceholders(networkName, key -> null)); + assertEquals("firstleg-production-network", placeholders.replacePlaceholders(networkName, + key -> "DEPLOY_ENV".equals(key) ? "production" : null)); assertFalse(compose.contains("event-bridge")); } } diff --git a/lastleg-service/src/test/java/com/baiyue/lastleg/controller/Phase4BrowserApiBoundaryTest.java b/lastleg-service/src/test/java/com/baiyue/lastleg/controller/Phase4BrowserApiBoundaryTest.java index 3cdfb5d6c..fd9129a73 100644 --- a/lastleg-service/src/test/java/com/baiyue/lastleg/controller/Phase4BrowserApiBoundaryTest.java +++ b/lastleg-service/src/test/java/com/baiyue/lastleg/controller/Phase4BrowserApiBoundaryTest.java @@ -74,7 +74,7 @@ class Phase4BrowserApiBoundaryTest { } @Test - void lastlegReachesPrintThroughTheUnifiedTestNetwork() throws Exception { + void lastlegReachesPrintThroughTheUnifiedEnvironmentNetwork() throws Exception { Path composePath = Path.of("deploy/docker-compose.yml"); if (!Files.exists(composePath)) composePath = Path.of("..").resolve(composePath); String compose = Files.readString(composePath); @@ -83,7 +83,7 @@ class Phase4BrowserApiBoundaryTest { assertTrue(lastleg.contains("<<: *common-environment")); assertTrue(lastleg.contains("PRINT_SERVICE_URL: ${PRINT_SERVICE_URL:-http://print:9207}")); assertTrue(compose.contains("networks: [firstleg-network, infra-network]")); - assertTrue(compose.contains("name: firstleg-test-network")); + assertTrue(compose.contains("name: firstleg-${DEPLOY_ENV:-test}-network")); assertFalse(lastleg.contains("ports:")); assertFalse(compose.contains("gateway-overseas")); } diff --git a/lastleg-service/src/test/java/com/baiyue/lastleg/masterdata/quote/client/DomesticPartnerWarehouseClientContractTest.java b/lastleg-service/src/test/java/com/baiyue/lastleg/masterdata/quote/client/DomesticPartnerWarehouseClientContractTest.java index 9751fd95c..d2053f636 100644 --- a/lastleg-service/src/test/java/com/baiyue/lastleg/masterdata/quote/client/DomesticPartnerWarehouseClientContractTest.java +++ b/lastleg-service/src/test/java/com/baiyue/lastleg/masterdata/quote/client/DomesticPartnerWarehouseClientContractTest.java @@ -49,12 +49,12 @@ class DomesticPartnerWarehouseClientContractTest { .doesNotContain("ports:"); assertThat(compose).contains("INTERNAL_SERVICE_TOKEN: ${INTERNAL_SERVICE_TOKEN}") .contains("NACOS_USERNAME: ${NACOS_USERNAME}") - .contains("NACOS_NAMESPACE: ${NACOS_NAMESPACE:?actual TEST namespace ID required}") + .contains("NACOS_NAMESPACE: ${NACOS_NAMESPACE:?actual environment namespace ID required}") .contains("JWT_JWKS_URI: http://auth:9100/api/auth/.well-known/jwks.json") .doesNotContain("OVERSEAS_NACOS_NAMESPACE", "OVERSEAS_NACOS_USERNAME", "FIRSTLEG_EVENT_BRIDGE_URL"); assertThat(common).contains("session-mode: redis") .contains("jwk-set-uri: ${JWT_JWKS_URI:http://auth:9100/api/auth/.well-known/jwks.json}"); - assertThat(deploy).contains("Only test is supported") + assertThat(deploy).contains("Only test and production are supported") .contains("NACOS_SERVER_ADDR NACOS_NAMESPACE NACOS_USERNAME NACOS_PASSWORD") .contains("REDIS_TOKEN_KEY_PREFIX INTERNAL_SERVICE_TOKEN") .contains("lastleg-service) db_prefix=LASTLEG");