diff --git a/auth/src/test/java/com/baiyue/auth/repository/LoginIdentifierContractTest.java b/auth/src/test/java/com/baiyue/auth/repository/LoginIdentifierContractTest.java index 0b471f746..5ce5d40e9 100644 --- a/auth/src/test/java/com/baiyue/auth/repository/LoginIdentifierContractTest.java +++ b/auth/src/test/java/com/baiyue/auth/repository/LoginIdentifierContractTest.java @@ -7,11 +7,21 @@ import org.junit.jupiter.api.Test; import org.springframework.core.io.ClassPathResource; import java.nio.charset.StandardCharsets; +import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; class LoginIdentifierContractTest { + @Test + void registrationExposesAnAccountPhoneInsteadOfALegalPersonPhoneAlias() { + var componentNames = Arrays.stream(MerchantRegisterRequest.class.getRecordComponents()) + .map(component -> component.getName()) + .toList(); + + assertThat(componentNames).contains("phone").doesNotContain("legalPhone"); + } + @Test void mainlandMobileRuleRejectsPlaceholderNumbersAcrossJavaAndSql() throws Exception { try (var factory = Validation.buildDefaultValidatorFactory()) { diff --git a/iam/src/test/java/com/baiyue/iam/controller/IamOpenApiContractTest.java b/iam/src/test/java/com/baiyue/iam/controller/IamOpenApiContractTest.java index c8d8a0959..9c8b8afe3 100644 --- a/iam/src/test/java/com/baiyue/iam/controller/IamOpenApiContractTest.java +++ b/iam/src/test/java/com/baiyue/iam/controller/IamOpenApiContractTest.java @@ -54,6 +54,10 @@ class IamOpenApiContractTest { .contains("UpdateMemberRequest:") .contains("membershipId: {type: integer, format: int64}") .contains("roleIds: {type: array, items: {type: integer, format: int64}}") + .contains("/api/platform/v1/iam/tenants/administrator-phone-availability:") + .doesNotContain("/api/platform/v1/iam/tenants/contact-phone-availability:") + .contains("公司联系电话,不作为登录标识且不要求跨企业唯一") + .contains("法人身份证、货代资质证书和银行开户许可证选填") .contains("'422': {$ref: '#/components/responses/UnprocessableEntity'}"); Map openApi = new Yaml().load(document); diff --git a/iam/src/test/java/com/baiyue/iam/repository/IdentityContactDecouplingContractTest.java b/iam/src/test/java/com/baiyue/iam/repository/IdentityContactDecouplingContractTest.java new file mode 100644 index 000000000..32a424e52 --- /dev/null +++ b/iam/src/test/java/com/baiyue/iam/repository/IdentityContactDecouplingContractTest.java @@ -0,0 +1,23 @@ +package com.baiyue.iam.repository; + +import org.junit.jupiter.api.Test; +import org.springframework.core.io.ClassPathResource; + +import java.nio.charset.StandardCharsets; + +import static org.assertj.core.api.Assertions.assertThat; + +class IdentityContactDecouplingContractTest { + + @Test + void baselineKeepsCompanyContactNonUniqueAndUserPhoneAsLoginIdentity() throws Exception { + String sql = new ClassPathResource("db/iam.sql") + .getContentAsString(StandardCharsets.UTF_8); + + assertThat(sql) + .contains("公司联系电话,非登录标识且不要求跨企业唯一") + .contains("用户登录手机号,与企业联系电话独立") + .doesNotContain("UNIQUE KEY uk_iam_tenant_contact_phone") + .doesNotContain("UNIQUE KEY uk_tenant_contact_phone"); + } +}