完善e2e测试与后端测试,微信小程序端UI层测试暂未完成

This commit was merged in pull request #52.
This commit is contained in:
2026-07-23 20:16:31 +08:00
parent b689656faf
commit 86b7555943
37 changed files with 6819 additions and 5 deletions
@@ -0,0 +1,175 @@
package cn.novalon.gym.manage.auth.handler;
import cn.novalon.gym.manage.auth.dto.PhoneLoginDto;
import cn.novalon.gym.manage.auth.dto.PhoneCodeLoginDto;
import cn.novalon.gym.manage.auth.dto.SendCodeRequest;
import cn.novalon.gym.manage.auth.service.PhoneAuthService;
import cn.novalon.gym.manage.auth.vo.PhoneLoginVO;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.http.HttpStatus;
import org.springframework.mock.web.reactive.function.server.MockServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class PhoneAuthHandlerTest {
@Mock
private PhoneAuthService phoneAuthService;
private PhoneAuthHandler phoneAuthHandler;
@BeforeEach
void setUp() {
phoneAuthHandler = new PhoneAuthHandler(phoneAuthService);
}
// ==================== oneClickLogin ====================
@Test
void oneClickLogin_shouldReturnOkWithLoginResult() {
PhoneLoginVO loginVO = new PhoneLoginVO();
loginVO.setAccessToken("test-jwt-token");
loginVO.setPhone("13800138000");
PhoneLoginDto dto = new PhoneLoginDto();
dto.setAccessToken("dcloud-access-token");
when(phoneAuthService.oneClickLogin(any(PhoneLoginDto.class))).thenReturn(Mono.just(loginVO));
MockServerRequest request = MockServerRequest.builder()
.body(Mono.just(dto));
Mono<ServerResponse> result = phoneAuthHandler.oneClickLogin(request);
StepVerifier.create(result)
.assertNext(response -> assertThat(response.statusCode()).isEqualTo(HttpStatus.OK))
.verifyComplete();
verify(phoneAuthService).oneClickLogin(any(PhoneLoginDto.class));
}
@Test
void oneClickLogin_shouldPropagateServiceError() {
PhoneLoginDto dto = new PhoneLoginDto();
dto.setAccessToken("invalid-token");
when(phoneAuthService.oneClickLogin(any(PhoneLoginDto.class)))
.thenReturn(Mono.error(new RuntimeException("Auth failed")));
MockServerRequest request = MockServerRequest.builder()
.body(Mono.just(dto));
Mono<ServerResponse> result = phoneAuthHandler.oneClickLogin(request);
StepVerifier.create(result)
.expectError(RuntimeException.class)
.verify();
}
// ==================== sendSmsCode ====================
@Test
void sendSmsCode_shouldReturnOkWithSuccessTrue() {
SendCodeRequest sendCodeRequest = new SendCodeRequest();
sendCodeRequest.setPhone("13800138000");
when(phoneAuthService.sendSmsCode("13800138000")).thenReturn(Mono.just(true));
MockServerRequest request = MockServerRequest.builder()
.body(Mono.just(sendCodeRequest));
Mono<ServerResponse> result = phoneAuthHandler.sendSmsCode(request);
StepVerifier.create(result)
.assertNext(response -> assertThat(response.statusCode()).isEqualTo(HttpStatus.OK))
.verifyComplete();
}
@Test
void sendSmsCode_shouldReturnOkWithSuccessFalseWhenServiceReturnsFalse() {
SendCodeRequest sendCodeRequest = new SendCodeRequest();
sendCodeRequest.setPhone("13800138000");
when(phoneAuthService.sendSmsCode("13800138000")).thenReturn(Mono.just(false));
MockServerRequest request = MockServerRequest.builder()
.body(Mono.just(sendCodeRequest));
Mono<ServerResponse> result = phoneAuthHandler.sendSmsCode(request);
StepVerifier.create(result)
.assertNext(response -> assertThat(response.statusCode()).isEqualTo(HttpStatus.OK))
.verifyComplete();
}
@Test
void sendSmsCode_shouldPropagateError() {
SendCodeRequest sendCodeRequest = new SendCodeRequest();
sendCodeRequest.setPhone("13800138000");
when(phoneAuthService.sendSmsCode("13800138000"))
.thenReturn(Mono.error(new RuntimeException("SMS service unavailable")));
MockServerRequest request = MockServerRequest.builder()
.body(Mono.just(sendCodeRequest));
Mono<ServerResponse> result = phoneAuthHandler.sendSmsCode(request);
StepVerifier.create(result)
.expectError(RuntimeException.class)
.verify();
}
// ==================== codeLogin ====================
@Test
void codeLogin_shouldReturnOkWithLoginResult() {
PhoneLoginVO loginVO = new PhoneLoginVO();
loginVO.setAccessToken("test-jwt-token");
PhoneCodeLoginDto dto = new PhoneCodeLoginDto();
dto.setPhone("13800138000");
dto.setCode("123456");
when(phoneAuthService.codeLogin(any(PhoneCodeLoginDto.class))).thenReturn(Mono.just(loginVO));
MockServerRequest request = MockServerRequest.builder()
.body(Mono.just(dto));
Mono<ServerResponse> result = phoneAuthHandler.codeLogin(request);
StepVerifier.create(result)
.assertNext(response -> assertThat(response.statusCode()).isEqualTo(HttpStatus.OK))
.verifyComplete();
}
@Test
void codeLogin_shouldPropagateServiceError() {
PhoneCodeLoginDto dto = new PhoneCodeLoginDto();
dto.setPhone("13800138000");
dto.setCode("wrong-code");
when(phoneAuthService.codeLogin(any(PhoneCodeLoginDto.class)))
.thenReturn(Mono.error(new RuntimeException("Invalid code")));
MockServerRequest request = MockServerRequest.builder()
.body(Mono.just(dto));
Mono<ServerResponse> result = phoneAuthHandler.codeLogin(request);
StepVerifier.create(result)
.expectError(RuntimeException.class)
.verify();
}
}