package com.baiyue.lastleg.controller; import com.baiyue.common.security.AuthenticatedUser; import com.baiyue.lastleg.dto.LastlegOrderRequests; import com.baiyue.lastleg.service.LastlegOrderService; import org.junit.jupiter.api.Test; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.web.server.ResponseStatusException; import java.util.Set; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; class MerchantLastlegOrderControllerTest { private final LastlegOrderService service = mock(LastlegOrderService.class); private final MerchantLastlegOrderController controller = controller(); private final LastlegOrderRequests.Query query = new LastlegOrderRequests.Query( 1L, 20L, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); @Test void merchantListUsesOnlyAuthenticatedTenant() { controller.list(user(100L, "MERCHANT"), query); verify(service).page(eq("100"), eq(query)); } @Test void merchantDetailUsesOnlyAuthenticatedTenant() { controller.detail(user(100L, "MERCHANT"), 11L); verify(service).detail("100", 11L); } @Test void merchantEndpointRejectsPlatformIdentity() { assertThrows(ResponseStatusException.class, () -> controller.list(user(0L, "PLATFORM"), query)); } private static AuthenticatedUser user(long tenantId, String appCode) { return new AuthenticatedUser(1L, tenantId, tenantId, 1L, "tester", appCode, "WEB", Set.of()); } private MerchantLastlegOrderController controller() { MerchantLastlegOrderController controller = new MerchantLastlegOrderController(); ReflectionTestUtils.setField(controller, "orderService", service); return controller; } }