package com.tcm.training.admin.common;
|
|
import org.junit.jupiter.api.Test;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.when;
|
|
class GlobalExceptionHandlerTest {
|
|
private final GlobalExceptionHandler handler = new GlobalExceptionHandler();
|
|
@Test
|
void handleIllegalStateShouldReturnBusinessMessage() {
|
ApiResponse<Void> response = handler.handleIllegalState(
|
new IllegalStateException("短信发送失败,请稍后重试"),
|
mockRequest()
|
);
|
|
assertEquals(500, response.getCode());
|
assertEquals("短信发送失败,请稍后重试", response.getMsg());
|
}
|
|
@Test
|
void handleIllegalStateShouldReturnFriendlyFallbackWhenMessageBlank() {
|
ApiResponse<Void> response = handler.handleIllegalState(
|
new IllegalStateException(" "),
|
mockRequest()
|
);
|
|
assertEquals(500, response.getCode());
|
assertEquals("服务器开小差啦,请稍后重试", response.getMsg());
|
}
|
|
@Test
|
void handleExceptionShouldHideInternalMessage() {
|
ApiResponse<Void> response = handler.handleException(
|
new RuntimeException("database down"),
|
mockRequest()
|
);
|
|
assertEquals(500, response.getCode());
|
assertEquals("服务器开小差啦,请稍后重试", response.getMsg());
|
}
|
|
private HttpServletRequest mockRequest() {
|
HttpServletRequest request = mock(HttpServletRequest.class);
|
when(request.getMethod()).thenReturn("POST");
|
when(request.getRequestURI()).thenReturn("/api/app/auth/sms-code");
|
return request;
|
}
|
}
|