test: cover fleet calendar authorization in integrated contracts
This commit is contained in:
+1
-1
@@ -46,7 +46,7 @@ class FleetTripApiContractTest {
|
|||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertThat(count).isEqualTo(52);
|
assertThat(count).isEqualTo(53);
|
||||||
verifyRefs(document, document);
|
verifyRefs(document, document);
|
||||||
verifyRefs(preparation, preparation);
|
verifyRefs(preparation, preparation);
|
||||||
verifyRefs(pool, pool);
|
verifyRefs(pool, pool);
|
||||||
|
|||||||
+19
@@ -12,6 +12,24 @@ import static org.assertj.core.api.Assertions.*;
|
|||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
class FleetTripAuthorizationTest {
|
class FleetTripAuthorizationTest {
|
||||||
|
@Test void calendarRequiresTripReadPermissionThroughMethodSecurity() {
|
||||||
|
try (var context = new AnnotationConfigApplicationContext(Config.class)) {
|
||||||
|
var controller = context.getBean(PlatformFleetTripController.class);
|
||||||
|
var calendar = context.getBean(FleetTripCalendarService.class);
|
||||||
|
var from = java.time.Instant.parse("2026-10-01T00:00:00Z");
|
||||||
|
var to = from.plusSeconds(86400);
|
||||||
|
var user = new com.baiyue.common.security.AuthenticatedUser(1L, 0L, 0L, 1L,
|
||||||
|
"platform", "PLATFORM", "WEB", java.util.Set.of("platform:fleet:trip:list"));
|
||||||
|
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(
|
||||||
|
user, "unused", List.of(new SimpleGrantedAuthority("platform:appointment:list"))));
|
||||||
|
assertThatThrownBy(() -> controller.calendar(user, from, to)).isInstanceOf(AccessDeniedException.class);
|
||||||
|
verifyNoInteractions(calendar);
|
||||||
|
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(
|
||||||
|
user, "unused", List.of(new SimpleGrantedAuthority("platform:fleet:trip:list"))));
|
||||||
|
controller.calendar(user, from, to);
|
||||||
|
verify(calendar).calendar(from, to);
|
||||||
|
} finally { SecurityContextHolder.clearContext(); }
|
||||||
|
}
|
||||||
@Test void bookingQuoteCandidatesRequireBothTripAndQuoteReadPermissions() {
|
@Test void bookingQuoteCandidatesRequireBothTripAndQuoteReadPermissions() {
|
||||||
try(var context=new AnnotationConfigApplicationContext(Config.class)) {
|
try(var context=new AnnotationConfigApplicationContext(Config.class)) {
|
||||||
var controller=context.getBean(PlatformFleetBookingController.class);
|
var controller=context.getBean(PlatformFleetBookingController.class);
|
||||||
@@ -69,6 +87,7 @@ class FleetTripAuthorizationTest {
|
|||||||
}
|
}
|
||||||
@Configuration @EnableMethodSecurity
|
@Configuration @EnableMethodSecurity
|
||||||
static class Config {
|
static class Config {
|
||||||
|
@Bean FleetTripCalendarService calendar() { return mock(FleetTripCalendarService.class); }
|
||||||
@Bean FleetCapacityOfferCommandMapper commands() { return mock(FleetCapacityOfferCommandMapper.class); }
|
@Bean FleetCapacityOfferCommandMapper commands() { return mock(FleetCapacityOfferCommandMapper.class); }
|
||||||
@Bean FleetDispatchPlanningGateway planning() { return mock(FleetDispatchPlanningGateway.class); }
|
@Bean FleetDispatchPlanningGateway planning() { return mock(FleetDispatchPlanningGateway.class); }
|
||||||
@Bean FleetTripPreparationService preparation() { return mock(FleetTripPreparationService.class); }
|
@Bean FleetTripPreparationService preparation() { return mock(FleetTripPreparationService.class); }
|
||||||
|
|||||||
Reference in New Issue
Block a user