69 lines
3.5 KiB
Java
69 lines
3.5 KiB
Java
package com.baiyue.firstleg.controller;
|
|
|
|
import com.baiyue.common.core.exception.BizException;
|
|
import com.baiyue.firstleg.dto.CustomerDimensionConfigDtos.InitializeRequest;
|
|
import com.baiyue.firstleg.dto.CustomerDimensionConfigDtos.InitializeResponse;
|
|
import com.baiyue.firstleg.service.CustomerDimensionConfigService;
|
|
import jakarta.annotation.Resource;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
import static org.mockito.Mockito.verify;
|
|
import static org.mockito.Mockito.when;
|
|
|
|
@SpringJUnitConfig(InternalCustomerDimensionConfigController.class)
|
|
class CustomerDimensionConfigControllerContractTest {
|
|
@Resource
|
|
private InternalCustomerDimensionConfigController internalController;
|
|
@MockBean
|
|
private CustomerDimensionConfigService service;
|
|
|
|
@BeforeEach
|
|
void initializeToken() {
|
|
ReflectionTestUtils.setField(internalController, "internalToken", "test-token");
|
|
internalController.initializeToken();
|
|
}
|
|
|
|
@Test
|
|
void internalInitializationRequiresTokenAndReturnsCreationIdentity() {
|
|
InitializeRequest request = new InitializeRequest(8L, 100L, "registration-1", "柏悦物流");
|
|
when(service.initializeDefault(8L, 100L, "registration-1", "柏悦物流"))
|
|
.thenReturn(new InitializeResponse(91L, 191L, true));
|
|
|
|
assertThatThrownBy(() -> internalController.initializeDefault("wrong", request))
|
|
.isInstanceOf(BizException.class);
|
|
assertThat(internalController.initializeDefault("test-token", request).data())
|
|
.isEqualTo(new InitializeResponse(91L, 191L, true));
|
|
verify(service).initializeDefault(8L, 100L, "registration-1", "柏悦物流");
|
|
}
|
|
|
|
@Test
|
|
void platformControllerKeepsScopeAndExistingPermissions() throws Exception {
|
|
RequestMapping mapping = PlatformCustomerDimensionConfigController.class
|
|
.getAnnotation(RequestMapping.class);
|
|
assertThat(mapping.value()).containsExactly("/api/platform/v1/first-leg/customer-dimension-config");
|
|
assertThat(PlatformCustomerDimensionConfigController.class
|
|
.getDeclaredMethod("get", com.baiyue.common.security.AuthenticatedUser.class, long.class)
|
|
.getAnnotation(PreAuthorize.class).value())
|
|
.isEqualTo("hasAuthority('firstleg:dimension-config:view')");
|
|
assertThat(PlatformCustomerDimensionConfigController.class
|
|
.getDeclaredMethod("update", com.baiyue.common.security.AuthenticatedUser.class,
|
|
long.class, com.baiyue.firstleg.dto.CustomerDimensionConfigDtos.UpdateRequest.class)
|
|
.getAnnotation(PreAuthorize.class).value())
|
|
.isEqualTo("hasAuthority('firstleg:dimension-config:edit')");
|
|
assertThat(PlatformCustomerDimensionConfigController.class
|
|
.getDeclaredMethod("updateDefaultCalculationMode",
|
|
com.baiyue.common.security.AuthenticatedUser.class, long.class,
|
|
com.baiyue.firstleg.dto.CustomerDimensionConfigDtos.DefaultCalculationModeUpdateRequest.class)
|
|
.getAnnotation(PreAuthorize.class).value())
|
|
.isEqualTo("hasAuthority('firstleg:dimension-config:edit')");
|
|
}
|
|
}
|