优化
This commit is contained in:
@@ -31,7 +31,8 @@ class IamOpenApiContractTest {
|
||||
.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:view")
|
||||
.contains("platform:customer:list")
|
||||
.doesNotContain("platform:customer:view")
|
||||
.contains("TenantAddressListApiResponse:")
|
||||
.contains("TenantQualificationListApiResponse:")
|
||||
.contains("InternalUserListApiResponse:")
|
||||
|
||||
+4
-4
@@ -13,17 +13,17 @@ class PlatformCustomerResourceContractTest {
|
||||
|
||||
@Test
|
||||
void shouldHandleCase01() throws Exception {
|
||||
assertReadOnlyViewContract("platformAddresses",
|
||||
assertListPermissionContract("platformAddresses",
|
||||
"/api/platform/v1/iam/tenants/{tenantId}/addresses");
|
||||
assertReadOnlyViewContract("platformQualifications",
|
||||
assertListPermissionContract("platformQualifications",
|
||||
"/api/platform/v1/iam/tenants/{tenantId}/qualifications");
|
||||
}
|
||||
|
||||
private void assertReadOnlyViewContract(String methodName, String path) throws Exception {
|
||||
private void assertListPermissionContract(String methodName, String path) throws Exception {
|
||||
Method method = ProfileResourceController.class.getMethod(
|
||||
methodName, long.class, AuthenticatedUser.class);
|
||||
assertEquals(path, method.getAnnotation(GetMapping.class).value()[0]);
|
||||
assertEquals("hasAuthority('platform:customer:view')",
|
||||
assertEquals("hasAuthority('platform:customer:list')",
|
||||
method.getAnnotation(PreAuthorize.class).value());
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ class PlatformTenantControllerContractTest {
|
||||
void shouldHandleCase03() throws Exception {
|
||||
Method method = PlatformTenantController.class.getMethod("tenant", long.class, AuthenticatedUser.class);
|
||||
|
||||
assertEquals("hasAuthority('platform:customer:view')",
|
||||
assertEquals("hasAuthority('platform:customer:list')",
|
||||
method.getAnnotation(PreAuthorize.class).value());
|
||||
}
|
||||
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.baiyue.iam.notification;
|
||||
|
||||
import com.baiyue.iam.notification.controller.NotificationInboxController;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class NotificationInboxPermissionContractTest {
|
||||
@Test
|
||||
void separatesReadOperationsFromInboxViewing() {
|
||||
assertPermission("list", "hasAuthority(#app + ':notification:view')");
|
||||
assertPermission("unread", "hasAuthority(#app + ':notification:view')");
|
||||
assertPermission("detail", "hasAuthority(#app + ':notification:view')");
|
||||
assertPermission("read", "hasAuthority(#app + ':notification:read')");
|
||||
assertPermission("readAll", "hasAuthority(#app + ':notification:read-all')");
|
||||
}
|
||||
|
||||
private static void assertPermission(String methodName, String expected) {
|
||||
var method = Arrays.stream(NotificationInboxController.class.getDeclaredMethods())
|
||||
.filter(candidate -> candidate.getName().equals(methodName))
|
||||
.findFirst().orElseThrow();
|
||||
assertThat(method.getAnnotation(PreAuthorize.class).value()).isEqualTo(expected);
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
class NotificationSqlContractTest {
|
||||
@Test void definesTablesIsolationIdempotencyAndPermissions() throws Exception {String sql;try(var in=getClass().getResourceAsStream("/db/notification-center.sql")){assertThat(in).isNotNull();sql=new String(in.readAllBytes(),StandardCharsets.UTF_8);}assertThat(sql).contains("iam_notification_template","iam_notification_task","iam_notification_recipient","iam_notification_inbox","iam_notification_event_inbox","uk_notification_task_no","uk_notification_task_idempotency","uk_notification_source_event","uk_notification_recipient","idx_notification_inbox_list","platform:notification:template:status","platform:notification:task:retry","merchant:notification:view");}
|
||||
@Test void definesTablesIsolationIdempotencyAndPermissions() throws Exception {String sql;try(var in=getClass().getResourceAsStream("/db/notification-center.sql")){assertThat(in).isNotNull();sql=new String(in.readAllBytes(),StandardCharsets.UTF_8);}assertThat(sql).contains("iam_notification_template","iam_notification_task","iam_notification_recipient","iam_notification_inbox","iam_notification_event_inbox","uk_notification_task_no","uk_notification_task_idempotency","uk_notification_source_event","uk_notification_recipient","idx_notification_inbox_list","platform:notification:template:status","platform:notification:task:retry","platform:notification:read","platform:notification:read-all","merchant:notification:view","merchant:notification:read","merchant:notification:read-all").contains("'MENU',5106000,'platform:notification:template:list'","'MENU',5106000,'platform:notification:task:list'");}
|
||||
|
||||
@Test void unifiedMigrationContainsNotificationBaselineAndSevenIndexAssertion() throws Exception {
|
||||
Path direct=Path.of("deploy","sql","头程数据库统一增量-MySQL8.sql");
|
||||
|
||||
Reference in New Issue
Block a user