Merge branch 'test' of http://git.buggoglobal.com/java-project/baiyue-firstleg into dev
This commit is contained in:
@@ -71,6 +71,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<String, Object> openApi = new Yaml().load(document);
|
||||
|
||||
+23
@@ -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");
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -88,7 +88,7 @@ class TenantAdministratorProvisioningServiceTest {
|
||||
var result = service.initialize(context());
|
||||
|
||||
assertTrue(result.created());
|
||||
assertEquals("13800138000", result.username());
|
||||
assertEquals("merchant_" + result.authUserId(), result.username());
|
||||
assertNotNull(result.temporaryPassword());
|
||||
assertEquals(16, result.temporaryPassword().length());
|
||||
assertTrue(result.temporaryPassword().matches("^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z0-9]+$"));
|
||||
@@ -97,6 +97,7 @@ class TenantAdministratorProvisioningServiceTest {
|
||||
ArgumentCaptor.forClass(AuthAccountClient.CreateAccountRequest.class);
|
||||
verify(auth).create(eq("internal-token"), account.capture());
|
||||
assertEquals(result.username(), account.getValue().username());
|
||||
assertEquals("13800138000", account.getValue().phone());
|
||||
assertEquals(result.temporaryPassword(), account.getValue().password());
|
||||
assertEquals("MERCHANT", account.getValue().appCode());
|
||||
assertEquals(tenant.getId(), account.getValue().tenantId());
|
||||
@@ -243,7 +244,7 @@ class TenantAdministratorProvisioningServiceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void usernameConflictStopsProvisioningInsteadOfChangingTheContactPhoneUsername() {
|
||||
void loginPhoneConflictStopsProvisioningWithoutCouplingCompanyContactToUsername() {
|
||||
org.mockito.Mockito.doReturn(ApiResponse.failure(com.baiyue.common.core.api.ResultCode.CONFLICT,
|
||||
"登录账号已存在", null, null)).when(auth).create(anyString(), any());
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.baiyue.iam.repository.MemberRepository;
|
||||
import com.baiyue.iam.mapper.IamRoleMapper;
|
||||
import com.baiyue.iam.client.AuthAccountClient;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
@@ -60,6 +61,12 @@ class TenantServiceTest {
|
||||
@SpyBean private TenantAdministratorProvisioningService provisioning;
|
||||
@Resource private TenantService service;
|
||||
|
||||
@BeforeEach
|
||||
void allowUnusedAdministratorPhone() {
|
||||
when(authClient.availability(eq("internal-token"), any()))
|
||||
.thenReturn(com.baiyue.common.core.api.ApiResponse.success(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
void pageMerchantsMapsTenantEntitiesToApiResponses() {
|
||||
|
||||
@@ -172,25 +179,25 @@ class TenantServiceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void activeCustomerCannotChangeTheContactPhoneUsedAsItsLoginUsername() {
|
||||
void activeCustomerCanChangeCompanyContactPhoneWithoutChangingAnyLoginIdentity() {
|
||||
IamTenant tenant = merchant(10001L, "ACTIVE");
|
||||
when(repository.findTenant(10001L)).thenReturn(tenant);
|
||||
|
||||
BizException exception = assertThrows(BizException.class, () -> service.updateMerchant(10001L,
|
||||
var updated = service.updateMerchant(10001L,
|
||||
new UpdateTenantRequest("New name", "New legal", "Bob", "Alice", "13900139000", null,
|
||||
"基础版", null, null, 30, null, null, null, "CNY", null, null)));
|
||||
"基础版", null, null, 30, null, null, null, "CNY", null, null));
|
||||
|
||||
assertEquals(ResultCode.CONFLICT, exception.getResultCode());
|
||||
assertEquals("13800138000", tenant.getContactPhone());
|
||||
verify(repository, never()).saveTenant(tenant);
|
||||
assertEquals("13900139000", updated.contactPhone());
|
||||
verify(repository).saveTenant(tenant);
|
||||
verify(authClient, never()).phone(any(), any(), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void contactPhoneAvailabilityAlsoChecksTheAuthUsernameFactSource() {
|
||||
void administratorPhoneAvailabilityChecksOnlyTheAuthLoginFactSource() {
|
||||
when(authClient.availability("internal-token", "13800138000"))
|
||||
.thenReturn(com.baiyue.common.core.api.ApiResponse.success(false));
|
||||
|
||||
assertEquals(false, service.contactPhoneAndUsernameAvailable("13800138000", null));
|
||||
assertEquals(false, service.administratorPhoneAvailable("13800138000"));
|
||||
verify(authClient).availability("internal-token", "13800138000");
|
||||
}
|
||||
|
||||
@@ -303,7 +310,7 @@ class TenantServiceTest {
|
||||
@Test
|
||||
void platformRegistrationCreatesDraftWithoutCreatingReviewTicket() {
|
||||
doReturn(TenantAdministratorProvisioningService.ProvisioningResult.created(
|
||||
81L, "13800138000", "Password1234"))
|
||||
81L, "merchant_81", "Password1234"))
|
||||
.when(provisioning).provisionPlatformCreatedTenant(any(), eq(9001L));
|
||||
|
||||
var created = service.register(new RegisterRequest(
|
||||
@@ -316,7 +323,7 @@ class TenantServiceTest {
|
||||
assertEquals("PENDING", created.tenant().dimensionInitializationStatus());
|
||||
assertEquals("Bob", created.tenant().legalRepresentative());
|
||||
assertEquals("基础版", created.tenant().servicePackage());
|
||||
assertEquals("13800138000", created.administratorUsername());
|
||||
assertEquals("merchant_81", created.administratorUsername());
|
||||
assertEquals("Password1234", created.temporaryPassword());
|
||||
verify(repository).insertTenant(argThat(tenant -> Long.valueOf(9001L).equals(tenant.getCreatedBy())
|
||||
&& Long.valueOf(9001L).equals(tenant.getUpdatedBy())));
|
||||
@@ -342,7 +349,7 @@ class TenantServiceTest {
|
||||
@Test
|
||||
void platformRegistrationAlwaysCreatesTheDraftWithoutACreditCode() {
|
||||
doReturn(TenantAdministratorProvisioningService.ProvisioningResult.created(
|
||||
81L, "13800138000", "Password1234"))
|
||||
81L, "merchant_81", "Password1234"))
|
||||
.when(provisioning).provisionPlatformCreatedTenant(any(), eq(9001L));
|
||||
|
||||
var created = service.register(new RegisterRequest(
|
||||
|
||||
Reference in New Issue
Block a user