优化
This commit is contained in:
+69
@@ -0,0 +1,69 @@
|
||||
package com.baiyue.iam.repository;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class AdminPrototypeMenuPermissionSqlContractTest {
|
||||
private static final String[] FINANCE_MENUS = {
|
||||
"platform:finance:customer-account:list", "platform:finance:customer-arap:list",
|
||||
"platform:finance:customer-statement:list", "platform:finance:settlement-ar:list",
|
||||
"platform:finance:settlement-ap:list"
|
||||
};
|
||||
|
||||
@Test
|
||||
void declaresFinancePageMenusAndReparentsActions() throws Exception {
|
||||
String sql = new ClassPathResource("db/admin-prototype-menu-permissions.sql")
|
||||
.getContentAsString(StandardCharsets.UTF_8);
|
||||
|
||||
for (int index = 0; index < FINANCE_MENUS.length; index++) {
|
||||
assertThat(sql).contains("(" + (5105040 + index) + ",0,'PLATFORM','MENU',5105000,'" + FINANCE_MENUS[index] + "'");
|
||||
}
|
||||
assertThat(sql)
|
||||
.contains("'platform:finance:account:view' code, 5105040 parent_id")
|
||||
.contains("'platform:finance:fee-source:view', 5105041")
|
||||
.contains("'platform:finance:reconciliation:create', 5105042")
|
||||
.contains("'platform:finance:settlement-ar:create', 5105043")
|
||||
.contains("'platform:finance:settlement-ap:create', 5105044")
|
||||
.contains("'platform:finance:payment:create', 5105044)")
|
||||
.contains("role_code='PLATFORM_ADMIN'");
|
||||
}
|
||||
|
||||
@Test
|
||||
void retiresUnsupportedOverseasFeeCreateAndDelete() throws Exception {
|
||||
String sql = new ClassPathResource("db/admin-prototype-menu-permissions.sql")
|
||||
.getContentAsString(StandardCharsets.UTF_8);
|
||||
|
||||
assertThat(sql).contains("status='INACTIVE', deleted=1")
|
||||
.contains("'platform:overseas-storage-fee:create','platform:overseas-storage-fee:delete'");
|
||||
|
||||
String unified = Files.readString(resolveUnifiedSql(), StandardCharsets.UTF_8);
|
||||
assertThat(unified).contains("<> 2")
|
||||
.contains("platform:overseas-storage-fee:list', 'platform:overseas-storage-fee:create'");
|
||||
}
|
||||
|
||||
@Test
|
||||
void keepsDomesticContainerAndSupplierPermissionIdsDisjoint() throws Exception {
|
||||
String sql = new ClassPathResource("db/admin-prototype-menu-permissions.sql")
|
||||
.getContentAsString(StandardCharsets.UTF_8);
|
||||
assertThat(sql)
|
||||
.contains("(5103070,0,'PLATFORM','API',5103010,'platform:domestic-container:list'")
|
||||
.contains("(5103071,0,'PLATFORM','BUTTON',5103070,'platform:domestic-container:inbound:create'")
|
||||
.contains("(5103072,0,'PLATFORM','BUTTON',5103070,'platform:domestic-container:outbound:create'")
|
||||
.contains("(5103080,0,'PLATFORM','MENU',5103000,'platform:supplier:list'")
|
||||
.contains("(5103081,0,'PLATFORM','BUTTON',5103080,'platform:supplier:create'")
|
||||
.contains("(5103082,0,'PLATFORM','BUTTON',5103080,'platform:supplier:edit'")
|
||||
.contains("(5103083,0,'PLATFORM','BUTTON',5103080,'platform:supplier:status'")
|
||||
.doesNotContain("platform:supplier:view");
|
||||
}
|
||||
|
||||
private static Path resolveUnifiedSql() {
|
||||
Path direct = Path.of("deploy", "sql", "头程数据库统一增量-MySQL8.sql");
|
||||
return Files.exists(direct) ? direct : Path.of("..", "deploy", "sql", "头程数据库统一增量-MySQL8.sql");
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.baiyue.iam.repository;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class DomesticContainerPermissionSqlContractTest {
|
||||
@Test
|
||||
void registersAndGrantsDedicatedPermissionsIdempotently() throws Exception {
|
||||
String sql = new ClassPathResource("db/domestic-container-permissions.sql")
|
||||
.getContentAsString(StandardCharsets.UTF_8);
|
||||
assertThat(sql).contains("5103070", "5103071", "5103072",
|
||||
"platform:domestic-container:list", "platform:domestic-container:inbound:create",
|
||||
"platform:domestic-container:outbound:create", "ON DUPLICATE KEY UPDATE",
|
||||
"INSERT IGNORE INTO iam_role_permission", "role_code='PLATFORM_ADMIN'", "<> 3");
|
||||
assertThat(sql).contains("permission id/code conflict", "permission catalog is incomplete",
|
||||
"PLATFORM_ADMIN domestic container grant is incomplete");
|
||||
}
|
||||
|
||||
@Test
|
||||
void reservesFinalIdsAndRejectsSupplierReuse() throws Exception {
|
||||
String sql = new ClassPathResource("db/domestic-container-permissions.sql")
|
||||
.getContentAsString(StandardCharsets.UTF_8);
|
||||
assertThat(sql).contains("(5103070,0,'PLATFORM','API'", "(5103071,0,'PLATFORM','BUTTON',5103070",
|
||||
"(5103072,0,'PLATFORM','BUTTON',5103070");
|
||||
Path supplier = Path.of("src/main/resources/db/platform-supplier-permissions.sql");
|
||||
if (!Files.exists(supplier)) supplier = Path.of("iam/src/main/resources/db/platform-supplier-permissions.sql");
|
||||
if (Files.exists(supplier)) {
|
||||
String supplierSql = Files.readString(supplier, StandardCharsets.UTF_8);
|
||||
assertThat(supplierSql).doesNotContain("5103070", "5103071", "5103072");
|
||||
}
|
||||
}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
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 PlatformSupplierPermissionSqlContractTest {
|
||||
@Test void registersFourSupplierPermissionsAndGrantsPlatformAdmin() throws Exception {
|
||||
String sql = new ClassPathResource("db/platform-supplier-permissions.sql").getContentAsString(StandardCharsets.UTF_8);
|
||||
assertThat(sql).contains("5103080", "5103081", "5103082", "5103083",
|
||||
"platform:supplier:list", "platform:supplier:create",
|
||||
"platform:supplier:edit", "platform:supplier:status", "role_code='PLATFORM_ADMIN'",
|
||||
"ON DUPLICATE KEY UPDATE", "INSERT IGNORE INTO iam_role_permission",
|
||||
"guard_platform_supplier_permission_ids", "SIGNAL SQLSTATE '45000'",
|
||||
"assert_platform_supplier_permissions");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user