This commit is contained in:
2026-08-11 19:35:18 +08:00
parent 4d49d7a2e4
commit 3809d2a028
4 changed files with 301 additions and 2 deletions
@@ -0,0 +1,42 @@
package com.baiyue.finance;
import com.baiyue.finance.controller.FinancePhase1OperationController;
import org.junit.jupiter.api.Test;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import java.lang.reflect.Method;
import static org.assertj.core.api.Assertions.assertThat;
class FinancePhase1PermissionContractTest {
@Test
void freezesG1AndG2ControllerPermissionsAndHttpActions() throws Exception {
assertEndpoint("listDerivedCustomerAccounts", GetMapping.class,
"hasAuthority('platform:finance:account:view')", int.class, int.class, String.class, String.class);
assertEndpoint("listDerivedCustomerAccountLedger", GetMapping.class,
"hasAuthority('platform:finance:account:view')", long.class, int.class, int.class,
String.class, java.time.LocalDate.class, java.time.LocalDate.class);
assertEndpoint("getFinanceFeeSource", GetMapping.class,
"hasAuthority('platform:finance:fee-source:view')", long.class);
assertEndpoint("reviewFinanceFeeSource", PostMapping.class,
"hasAuthority('platform:finance:fee-source:review')",
com.baiyue.common.security.AuthenticatedUser.class, long.class, String.class,
com.baiyue.finance.dto.FinancePhase1Dtos.ReviewRequest.class);
assertEndpoint("updateFeeSourceSettlementInclusion", PutMapping.class,
"hasAuthority('platform:finance:fee-source:settlement')",
com.baiyue.common.security.AuthenticatedUser.class, long.class, String.class,
com.baiyue.finance.dto.FinancePhase1Dtos.SettlementInclusionRequest.class);
}
private static void assertEndpoint(String methodName,
Class<? extends java.lang.annotation.Annotation> mapping,
String authority,
Class<?>... parameterTypes) throws Exception {
Method method = FinancePhase1OperationController.class.getMethod(methodName, parameterTypes);
assertThat(method.isAnnotationPresent(mapping)).isTrue();
assertThat(method.getAnnotation(PreAuthorize.class).value()).isEqualTo(authority);
}
}