This commit is contained in:
2026-08-12 14:56:57 +08:00
parent 6d50bde31e
commit 633c08045c
7 changed files with 59 additions and 57 deletions
@@ -11,7 +11,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class FinanceG1G2PermissionSqlContractTest {
@Test
void declaresTheFourControllerPermissionsUnderFinanceWithoutDefaultRoleGrants() throws Exception {
void declaresTheFourControllerPermissionsUnderFinance() throws Exception {
String sql = new ClassPathResource("db/finance-g1-g2-permissions.sql")
.getContentAsString(StandardCharsets.UTF_8);
@@ -26,8 +26,7 @@ class FinanceG1G2PermissionSqlContractTest {
.contains("NULL, 'PUT', 160, 'ACTIVE', 1, 0")
.contains("ON DUPLICATE KEY UPDATE")
.contains("CALL migrate_finance_g1_g2_permissions()")
.contains("DROP PROCEDURE IF EXISTS migrate_finance_g1_g2_permissions")
.doesNotContain("INSERT INTO iam_role_permission");
.contains("DROP PROCEDURE IF EXISTS migrate_finance_g1_g2_permissions");
}
@Test
@@ -48,13 +47,10 @@ class FinanceG1G2PermissionSqlContractTest {
}
@Test
void unifiedSqlMirrorsCatalogButDoesNotAutoGrantTheNewPermissions() throws Exception {
void unifiedSqlMirrorsCatalogAndGrantsTheFinanceCatalogToPlatformAdmin() throws Exception {
String sql = Files.readString(resolveUnifiedSql(), StandardCharsets.UTF_8);
String financeSection = sql.substring(sql.indexOf("-- Finance F1 人工财务权限"),
sql.indexOf("CALL assert_unified_final_schema()"));
String platformAdminGrant = financeSection.substring(
financeSection.indexOf("SELECT 4000001, id, 0 FROM baiyue_iam.iam_permission"),
financeSection.indexOf("ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id);"));
assertThat(financeSection)
.contains("(5105022, 0, 'PLATFORM', 'BUTTON', 5105000, 'platform:finance:account:view'")
@@ -67,17 +63,13 @@ class FinanceG1G2PermissionSqlContractTest {
.contains("NULL, 'PUT', 160, 'ACTIVE', 1, 0")
.contains("permission_code IN (\n 'platform:finance',")
.contains("permission_code LIKE 'platform:finance:%' AND status='ACTIVE' AND deleted=0) <> 26")
.contains("p.id BETWEEN 5105022 AND 5105035) <> 0")
.contains("平台管理员 Finance 授权不完整")
.contains("Finance G1-G4 新权限不得默认授予平台管理员");
assertThat(platformAdminGrant)
.contains("'platform:finance'")
.contains("'platform:finance:customer-terms:update'")
.doesNotContain("LIKE 'platform:finance:%'")
.doesNotContain("platform:finance:account:view")
.doesNotContain("platform:finance:fee-source:view")
.doesNotContain("platform:finance:fee-source:review")
.doesNotContain("platform:finance:fee-source:settlement");
.contains("Finance G1-G4");
assertThat(financeSection)
.contains("SELECT 4000001, id, 0 FROM baiyue_iam.iam_permission")
.contains("platform:finance:account:view")
.contains("platform:finance:settlement-ar:view")
.contains("platform:finance:settlement-ap:view");
}
private static Path resolveUnifiedSql() {
@@ -19,7 +19,7 @@ class FinanceG3G4PermissionSqlContractTest {
};
@Test
void declaresAllFrozenControllerPermissionsWithoutDefaultRoleGrants() throws Exception {
void declaresAllFrozenControllerPermissions() throws Exception {
String sql = new ClassPathResource("db/finance-g3-g4-permissions.sql")
.getContentAsString(StandardCharsets.UTF_8);
@@ -33,12 +33,11 @@ class FinanceG3G4PermissionSqlContractTest {
.contains("finance G3/G4 permission id/code conflict")
.contains("permission catalog is incomplete")
.contains("finance permission parent is invalid")
.contains("CALL migrate_finance_g3_g4_permissions()")
.doesNotContain("INSERT INTO iam_role_permission");
.contains("CALL migrate_finance_g3_g4_permissions()");
}
@Test
void unifiedSqlContainsCatalogAndDoesNotGrantItToPlatformAdmin() throws Exception {
void unifiedSqlContainsCatalogAndGrantsItToPlatformAdmin() throws Exception {
String sql = Files.readString(resolveUnifiedSql(), StandardCharsets.UTF_8);
String financeSection = sql.substring(sql.indexOf("-- Finance F1 人工财务权限"),
sql.indexOf("CALL assert_unified_final_schema()"));
@@ -46,12 +45,11 @@ class FinanceG3G4PermissionSqlContractTest {
assertThat(financeSection)
.contains("migrate_finance_g1_g4_permissions")
.contains("finance G1-G4 permission id/code conflict")
.contains("permission_code LIKE 'platform:finance:%' AND status='ACTIVE' AND deleted=0) <> 26")
.contains("p.id BETWEEN 5105022 AND 5105035");
.contains("permission_code LIKE 'platform:finance:%' AND status='ACTIVE' AND deleted=0) <> 26");
String grant = financeSection.substring(
financeSection.indexOf("SELECT 4000001, id, 0 FROM baiyue_iam.iam_permission"),
financeSection.indexOf("ON DUPLICATE KEY UPDATE tenant_id=VALUES(tenant_id);"));
for (String code : CODES) assertThat(grant).doesNotContain(code);
for (String code : CODES) assertThat(grant).contains(code);
}
private static Path resolveUnifiedSql() {