From 0ae63b846b2cd22822a52ba035140790449fea9d Mon Sep 17 00:00:00 2001 From: 13009 Date: Thu, 18 Apr 2024 19:01:53 +0800 Subject: [PATCH] ref: v2 model --- pom.xml | 12 +++ .../service/v2/account/AccountService.java | 1 + .../scfs/api/service/TestHttpResponse.java | 27 +++++++ .../scfs/api/service/sms/SmsServiceTest.java | 4 - .../v2/account/AccountServiceTest.java | 61 ++++++++++++++ .../api/service/v2/sms/SmsServiceTest.java | 79 +++++++++++++++++++ 6 files changed, 180 insertions(+), 4 deletions(-) create mode 100644 scfs-api-service/src/test/java/com/czcb/scfs/api/service/TestHttpResponse.java delete mode 100644 scfs-api-service/src/test/java/com/czcb/scfs/api/service/sms/SmsServiceTest.java create mode 100644 scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java create mode 100644 scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/sms/SmsServiceTest.java diff --git a/pom.xml b/pom.xml index 1345db8..ac13eda 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,18 @@ 4.2.0 test + + org.mockito + mockito-core + 4.8.1 + test + + + org.mockito + mockito-junit-jupiter + 4.8.1 + test + diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java index a54658f..cc443e1 100644 --- a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java @@ -26,6 +26,7 @@ public class AccountService { * @param openAccSubRequest OpenAccSubRequest * @return OpenAccSubResponse */ + @Deprecated public OpenAccSubResponse openAccSub(OpenAccSubRequest openAccSubRequest) { String url = "/accInfo/openAccSub"; HttpHeaders headers = new HttpHeaders(); diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/TestHttpResponse.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/TestHttpResponse.java new file mode 100644 index 0000000..afcf2cb --- /dev/null +++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/TestHttpResponse.java @@ -0,0 +1,27 @@ +package com.czcb.scfs.api.service; + +import com.czcb.scfs.api.core.ApiResponse; +import com.czcb.scfs.api.core.http.HttpMethod; +import com.czcb.scfs.api.core.http.HttpRequest; +import com.czcb.scfs.api.core.http.HttpResponse; +import com.czcb.scfs.api.core.http.OriginalResponse; + +/** + * @author wangwei + * @date 2024/4/18 + */ +public class TestHttpResponse { + + public static HttpResponse create(String url, ApiResponse apiResponse, Class responseType) { + return new HttpResponse.Builder() + .serviceResponseType(responseType) + .originalResponse(new OriginalResponse.Builder() + .request(new HttpRequest.Builder() + .url(url) + .httpMethod(HttpMethod.POST) + .build()) + .body(apiResponse.toJsonResponse().getBody()) + .build()) + .build(); + } +} diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/sms/SmsServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/sms/SmsServiceTest.java deleted file mode 100644 index 4fd542c..0000000 --- a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/sms/SmsServiceTest.java +++ /dev/null @@ -1,4 +0,0 @@ -//package com.czcb.scfs.api.service.sms; -// -//class SmsServiceTest { -//} \ No newline at end of file diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java new file mode 100644 index 0000000..dd0e99d --- /dev/null +++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java @@ -0,0 +1,61 @@ +package com.czcb.scfs.api.service.v2.account; + +import com.czcb.scfs.api.core.ApiClient; +import com.czcb.scfs.api.core.http.HttpHeaders; +import com.czcb.scfs.api.core.http.HttpResponse; +import com.czcb.scfs.api.core.http.RequestBody; +import com.czcb.scfs.api.core.util.Json; +import com.czcb.scfs.api.service.TestHttpResponse; +import com.czcb.scfs.api.service.v2.account.model.ClosedAccRequest; +import com.czcb.scfs.api.service.v2.account.model.ClosedAccResponse; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; + +@ExtendWith(MockitoExtension.class) +class AccountServiceTest { + @InjectMocks + private AccountService service; + + @Mock + private ApiClient apiClient; + + @Test + void closedAcc() { + ClosedAccRequest request = new ClosedAccRequest(); + request.setChannelNo("setChannelNo"); + request.setAppNo("setAppNo"); + request.setAccountNo("setAccountNo"); + request.setSerialNo("setSerialNo"); + request.setTradeNo("setTradeNo"); + request.setVerifyCode("setVerifyCode"); + request.setTransDate("setTransDate"); + request.setTransTradeTime("setTransTradeTime"); + + ClosedAccResponse response = new ClosedAccResponse(); + response.setRecode("setRecode"); + response.setRecodeInfo("setRecodeInfo"); + response.setSysDate("setSysDate"); + response.setSysTime("setSysTime"); + + HttpResponse httpResponse = TestHttpResponse.create("/account/v2/closed-account", response, ClosedAccResponse.class); + + Mockito.when(apiClient.post( + Mockito.eq("/account/v2/closed-account"), + Mockito.any(HttpHeaders.class), + Mockito.any(RequestBody.class), + Mockito.eq(ClosedAccResponse.class))) + .thenReturn(httpResponse); + + ClosedAccResponse result = service.closedAcc(request); + + // 断言结果 + assertThatJson(Json.toJson(result)).isEqualTo("{\"recode\":\"setRecode\",\"recode_info\":\"setRecodeInfo\"," + + "\"sys_date\":\"setSysDate\",\"sys_time\":\"setSysTime\"}"); + } +} \ No newline at end of file diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/sms/SmsServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/sms/SmsServiceTest.java new file mode 100644 index 0000000..ef3d83a --- /dev/null +++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/sms/SmsServiceTest.java @@ -0,0 +1,79 @@ +package com.czcb.scfs.api.service.v2.sms; + +import com.czcb.scfs.api.core.ApiClient; +import com.czcb.scfs.api.core.http.HttpHeaders; +import com.czcb.scfs.api.core.http.HttpResponse; +import com.czcb.scfs.api.core.http.RequestBody; +import com.czcb.scfs.api.core.util.Json; +import com.czcb.scfs.api.service.TestHttpResponse; +import com.czcb.scfs.api.service.v2.sms.model.SendVerifySignRequest; +import com.czcb.scfs.api.service.v2.sms.model.SendVerifySignResponse; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; + +@ExtendWith(MockitoExtension.class) +class SmsServiceTest { + + @InjectMocks + private SmsService service; + + @Mock + private ApiClient apiClient; + + @Test + void send() { + SendVerifySignRequest request = new SendVerifySignRequest(); + request.setChannelNo("setChannelNo"); + request.setAppNo("setAppNo"); + request.setSerialNo("setSerialNo"); + request.setTradeNo("setTradeNo"); + request.setModelNo("setModelNo"); + request.setTradeType("setTradeType"); + request.setAccountNo("setAccountNo"); + request.setAmount("setAmount"); + request.setCardNo("setCardNo"); + request.setCardName("setCardName"); + request.setIdNo("setIdNo"); + request.setMobile("setMobile"); + request.setTransDate("setTransDate"); + request.setTransTradeTime("setTransTradeTime"); + + // 验证字段是否有变化 + assertThatJson(Json.toJson(request)).isEqualTo("{\"channel_no\":\"setChannelNo\"," + + "\"app_no\":\"setAppNo\",\"serial_no\":\"setSerialNo\",\"trade_no\":\"setTradeNo\"," + + "\"model_no\":\"setModelNo\",\"trade_type\":\"setTradeType\",\"account_no\":\"setAccountNo\"," + + "\"amount\":\"setAmount\",\"card_no\":\"setCardNo\",\"card_name\":\"setCardName\"," + + "\"id_no\":\"setIdNo\",\"mobile\":\"setMobile\",\"trans_date\":\"setTransDate\"," + + "\"trans_tradetime\":\"setTransTradeTime\"}"); + + // 模拟结果 + SendVerifySignResponse response = new SendVerifySignResponse(); + response.setRecode("setRecode"); + response.setRecodeInfo("setRecodeInfo"); + response.setSysDate("setSysDate"); + response.setSysTime("setSysTime"); + response.setSmsNo("setSmsNo"); + + HttpResponse httpResponse = TestHttpResponse.create("/sms/v2/send-verify-code", response, SendVerifySignResponse.class); + + // 打桩 + Mockito.when(apiClient.post( + Mockito.eq("/sms/v2/send-verify-code"), + Mockito.any(HttpHeaders.class), + Mockito.any(RequestBody.class), + Mockito.eq(SendVerifySignResponse.class))) + .thenReturn(httpResponse); + + SendVerifySignResponse result = service.send(request); + + // 断言结果 + assertThatJson(Json.toJson(result)).isEqualTo("{\"recode\":\"setRecode\",\"recode_info\":\"setRecodeInfo\"," + + "\"sys_date\":\"setSysDate\",\"sys_time\":\"setSysTime\",\"smsNo\":\"setSmsNo\"}"); + } +} \ No newline at end of file