59 lines
3.0 KiB
Java
59 lines
3.0 KiB
Java
package com.baiyue.iam.controller;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
import org.yaml.snakeyaml.Yaml;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.Map;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
class IamOpenApiContractTest {
|
|
@Test
|
|
void shouldHandleCase01() throws IOException {
|
|
String document;
|
|
try (var stream = getClass().getResourceAsStream("/openapi/iam-v1.yaml")) {
|
|
assertThat(stream).isNotNull();
|
|
document = new String(stream.readAllBytes(), StandardCharsets.UTF_8);
|
|
}
|
|
|
|
assertThat(document).contains("/api/platform/v1/iam/authorization/permissions:")
|
|
.contains("/api/merchant/v1/iam/authorization/permissions:")
|
|
.contains("PermissionCodesApiResponse:")
|
|
.contains("TenantPageApiResponse:")
|
|
.contains("TenantApiResponse:")
|
|
.contains("PendingEnterpriseReviewListApiResponse:")
|
|
.contains("PendingEnterpriseReviewResponse:")
|
|
.contains("required: [id, tenantId, reviewType, status, tenantName, tenantCode, contactName, submittedAt]")
|
|
.contains("submittedAt: {type: string, format: date-time, description: 提交审核时间}")
|
|
.contains("TenantSuccess:")
|
|
.contains("salesOwnerName:")
|
|
.contains("paymentTermDays:")
|
|
.contains("registeredCapitalCurrency:")
|
|
.contains("createdAt: {type: string, format: date-time, description: 入驻时间}")
|
|
.contains("id: {type: string, pattern: '^\\d+$'")
|
|
.contains("/api/platform/v1/iam/tenants/{tenantId}/addresses:")
|
|
.contains("/api/platform/v1/iam/tenants/{tenantId}/qualifications:")
|
|
.contains("platform:customer:list")
|
|
.doesNotContain("platform:customer:view")
|
|
.contains("TenantAddressListApiResponse:")
|
|
.contains("TenantQualificationListApiResponse:")
|
|
.contains("InternalUserListApiResponse:")
|
|
.contains("/api/platform/v1/iam/internal-users/{membershipId}/roles:")
|
|
.contains("AssignInternalUserRolesRequest:")
|
|
.contains("/api/merchant/v1/iam/members/{membershipId}:")
|
|
.contains("仅当 roleIds 与当前角色集合实际不同时额外要求 merchant:member:grant-role")
|
|
.contains("传空数组清空角色也属于角色变更")
|
|
.contains("roleIds 为服务端实时查询的当前角色集合")
|
|
.contains("UpdateMemberRequest:")
|
|
.contains("membershipId: {type: integer, format: int64}")
|
|
.contains("roleIds: {type: array, items: {type: integer, format: int64}}")
|
|
.contains("'422': {$ref: '#/components/responses/UnprocessableEntity'}");
|
|
|
|
Map<String, Object> openApi = new Yaml().load(document);
|
|
assertThat(openApi).containsEntry("openapi", "3.0.3");
|
|
assertThat(openApi.get("paths")).isInstanceOf(Map.class);
|
|
}
|
|
}
|