Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,17 +77,6 @@ public AccessorResponse<MdxList<CrossAccountRecurringTransfer>> list() {
throw new AccessorMethodNotImplementedException();
}

/**
* List all recurring cross account transfers - Version 20260427
*
* @return
*/
@GatewayAPI
@API(description = "List all recurring cross account transfers version 20260427")
public AccessorResponse<MdxList<CrossAccountRecurringTransfer>> list20260427() {
throw new AccessorMethodNotImplementedException();
}

/**
* Skip next payment of recurring cross account transfer
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,18 +86,6 @@ public AccessorResponse<MdxList<RecurringTransfer>> list(RecurringTransferListOp
throw new AccessorMethodNotImplementedException();
}

/**
* List recurring transfers - Version 20260427
*
* @param options
* @return
*/
@GatewayAPI
@API(description = "List recurring transfers version 20260427")
public AccessorResponse<MdxList<RecurringTransfer>> list20260427(RecurringTransferListOptions options) {
throw new AccessorMethodNotImplementedException();
}

/**
* Skip next payment of recurring transfer
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,16 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import jakarta.servlet.http.HttpServletRequest;

@RestController
@RequestMapping(value = "{clientId}", produces = BaseController.MDX_MEDIA)
public class CrossAccountRecurringTransferController extends BaseController {
public CrossAccountRecurringTransferController() {
}

@SuppressWarnings({ "MagicNumber", "unchecked" })
@RequestMapping(value = "/users/{userId}/cross_account_transfers/recurring_cross_account_transfers", method = RequestMethod.GET)
public final ResponseEntity<MdxList<CrossAccountRecurringTransfer>> getCrossAccountRecurringTransfers(HttpServletRequest request) {
return (ResponseEntity<MdxList<CrossAccountRecurringTransfer>>) versioned(request)
.defaultVersion(MdxList.class, MdxList.class, recurringTransfers -> {
AccessorResponse<MdxList<CrossAccountRecurringTransfer>> response = gateway().crossAccount().crossAccountRecurring().list();
return new ResponseEntity<>(response.getResult().wrapped(), createMultiMapForResponse(response.getHeaders()), HttpStatus.OK);
})
.version(20260427, MdxList.class, MdxList.class, recurringTransfers -> {
AccessorResponse<MdxList<CrossAccountRecurringTransfer>> response = gateway().crossAccount().crossAccountRecurring().list20260427();
return new ResponseEntity<>(response.getResult().wrapped(), createMultiMapForResponse(response.getHeaders()), HttpStatus.OK);
})
.execute();
public final ResponseEntity<MdxList<CrossAccountRecurringTransfer>> getCrossAccountRecurringTransfers() {
AccessorResponse<MdxList<CrossAccountRecurringTransfer>> response = gateway().crossAccount().crossAccountRecurring().list();
return new ResponseEntity<>(response.getResult().wrapped(), createMultiMapForResponse(response.getHeaders()), HttpStatus.OK);
}

@RequestMapping(value = "/users/{userId}/cross_account_transfers/recurring_cross_account_transfers/{id}", method = RequestMethod.GET)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,16 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import jakarta.servlet.http.HttpServletRequest;

@RestController
@RequestMapping(value = "{clientId}", produces = BaseController.MDX_MEDIA)
public class RecurringTransfersController extends BaseController {

@SuppressWarnings({ "MagicNumber", "unchecked" })
@RequestMapping(value = "/users/{userId}/recurring_transfers", method = RequestMethod.GET)
public final ResponseEntity<MdxList<RecurringTransfer>> list(RecurringTransferListQueryParameters queryParameters, HttpServletRequest request) {
public final ResponseEntity<MdxList<RecurringTransfer>> list(RecurringTransferListQueryParameters queryParameters) {
RecurringTransferListOptions options = new RecurringTransferListOptions();
options.setTransferType(queryParameters.getTransfer_type());
return (ResponseEntity<MdxList<RecurringTransfer>>) versioned(request)
.defaultVersion(MdxList.class, MdxList.class, recurringTransfers -> {
AccessorResponse<MdxList<RecurringTransfer>> response = gateway().transfers().recurring().list(options);
return new ResponseEntity<>(response.getResult().wrapped(), createMultiMapForResponse(response.getHeaders()), HttpStatus.OK);
})
.version(20260427, MdxList.class, MdxList.class, recurringTransfers -> {
AccessorResponse<MdxList<RecurringTransfer>> response = gateway().transfers().recurring().list20260427(options);
return new ResponseEntity<>(response.getResult().wrapped(), createMultiMapForResponse(response.getHeaders()), HttpStatus.OK);
})
.execute();
AccessorResponse<MdxList<RecurringTransfer>> response = gateway().transfers().recurring().list(options);
return new ResponseEntity<>(response.getResult().wrapped(), createMultiMapForResponse(response.getHeaders()), HttpStatus.OK);
}

@RequestMapping(value = "/users/{userId}/recurring_transfers", method = RequestMethod.POST, consumes = MDX_MEDIA)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,45 +1,32 @@
package com.mx.path.model.mdx.web.controller

import static org.mockito.Mockito.mock
import static org.mockito.Mockito.spy
import static org.mockito.Mockito.verify
import static org.mockito.Mockito.when

import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.mx.path.core.context.Session
import com.mx.path.gateway.accessor.AccessorResponse
import com.mx.path.gateway.api.Gateway
import com.mx.path.gateway.api.cross_account_transfer.CrossAccountRecurringTransferGateway
import com.mx.path.gateway.api.cross_account_transfer.CrossAccountTransferGateway
import com.mx.path.model.mdx.model.MdxList
import com.mx.path.model.mdx.model.Resources
import com.mx.path.model.mdx.model.cross_account_transfer.CrossAccountRecurringTransfer

import org.mockito.Mockito
import org.springframework.http.HttpStatus

import spock.lang.Specification

import jakarta.servlet.http.HttpServletRequest

class CrossAccountRecurringTransferControllerTest extends Specification{
CrossAccountRecurringTransferController subject
Gateway gateway
CrossAccountTransferGateway crossAccountTransferGateway
CrossAccountRecurringTransferGateway crossAccountRecurringTransferGateway
Gson gson

def setup() {
subject = new CrossAccountRecurringTransferController()
crossAccountRecurringTransferGateway = spy(CrossAccountRecurringTransferGateway.builder().build())
crossAccountTransferGateway = spy(CrossAccountTransferGateway.builder()
.crossAccountRecurring(crossAccountRecurringTransferGateway).build())
gateway = Gateway.builder().crossAccount(crossAccountTransferGateway).build()

GsonBuilder builder = new GsonBuilder()
Resources.registerResources(builder)
gson = builder.create()
}

def cleanup() {
Expand Down Expand Up @@ -89,31 +76,13 @@ class CrossAccountRecurringTransferControllerTest extends Specification{

when:
Mockito.doReturn(new AccessorResponse<MdxList<CrossAccountRecurringTransfer>>().withResult(list)).when(crossAccountRecurringTransferGateway).list()
def response = subject.getCrossAccountRecurringTransfers(buildRequest(null, "application/vnd.mx.mdx.v6+json"))
def response = subject.getCrossAccountRecurringTransfers()

then:
HttpStatus.OK == response.getStatusCode()
verify(crossAccountRecurringTransferGateway).list() || true
}

def "getCrossAccountRecurringTransfers v20260427 interacts with gateway"() {
given:
BaseController.setGateway(gateway)

def crossAccountRecurringTransfer = new CrossAccountRecurringTransfer()
def list = new MdxList<CrossAccountRecurringTransfer>().tap {
add(crossAccountRecurringTransfer)
}

when:
Mockito.doReturn(new AccessorResponse<MdxList<CrossAccountRecurringTransfer>>().withResult(list)).when(crossAccountRecurringTransferGateway).list20260427()
def response = subject.getCrossAccountRecurringTransfers(buildRequest(null, "application/vnd.mx.mdx.v6+json;version=20260427"))

then:
HttpStatus.OK == response.getStatusCode()
verify(crossAccountRecurringTransferGateway).list20260427() || true
}

def "updateCrossAccountRecurringTransfer interacts with gateway"() {
given:
BaseController.setGateway(gateway)
Expand Down Expand Up @@ -157,16 +126,4 @@ class CrossAccountRecurringTransferControllerTest extends Specification{
HttpStatus.NO_CONTENT == response.getStatusCode()
verify(crossAccountRecurringTransferGateway).skipNext("id") || true
}

def buildRequest(Object body, String contentType) {
HttpServletRequest request = mock(HttpServletRequest.class)
when(request.getReader()).thenReturn(new BufferedReader(new StringReader(gson.toJson(body))))
if (Session.current() != null) {
when(request.getHeader("mx-session-key")).thenReturn(Session.current().getId())
}
when(request.getHeaders("Content-Type")).thenReturn(Collections.enumeration([contentType]))
when(request.getHeaders("Accept")).thenReturn(Collections.enumeration([contentType]))

return request
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
package com.mx.path.model.mdx.web.controller

import static org.mockito.Mockito.any
import static org.mockito.Mockito.mock
import static org.mockito.Mockito.spy
import static org.mockito.Mockito.verify
import static org.mockito.Mockito.when

import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.mx.path.core.context.Session
import com.mx.path.gateway.accessor.AccessorResponse
import com.mx.path.gateway.api.Gateway
import com.mx.path.gateway.api.transfer.TransferGateway
import com.mx.path.gateway.api.transfer.recurring_transfer.RecurringTransferGateway
import com.mx.path.model.mdx.model.MdxList
import com.mx.path.model.mdx.model.Resources
import com.mx.path.model.mdx.model.challenges.Challenge
import com.mx.path.model.mdx.model.profile.ChallengeQuestions
import com.mx.path.model.mdx.model.transfer.RecurringTransfer
Expand All @@ -27,25 +21,18 @@ import org.springframework.http.HttpStatus

import spock.lang.Specification

import jakarta.servlet.http.HttpServletRequest

class RecurringTransfersControllerTest extends Specification implements WithMockery {

RecurringTransfersController subject
Gateway gateway
TransferGateway transferGateway
RecurringTransferGateway recurringTransferGateway
Gson gson

def setup() {
subject = new RecurringTransfersController()
recurringTransferGateway = spy(RecurringTransferGateway.builder().build())
transferGateway = TransferGateway.builder().recurring(recurringTransferGateway).build()
gateway = Gateway.builder().transfers(transferGateway).build()

GsonBuilder builder = new GsonBuilder()
Resources.registerResources(builder)
gson = builder.create()
}

def cleanup() {
Expand Down Expand Up @@ -116,33 +103,14 @@ class RecurringTransfersControllerTest extends Specification implements WithMock

when:
Mockito.doReturn(new AccessorResponse<MdxList<RecurringTransfer>>().withResult(list)).when(recurringTransferGateway).list(any(RecurringTransferListOptions))
def response = subject.list(queryParameters, buildRequest(null, "application/vnd.mx.mdx.v6+json"))
def response = subject.list(queryParameters)

then:
HttpStatus.OK == response.statusCode
verify(recurringTransferGateway).list(any(RecurringTransferListOptions)) || true
response.body == list
}

def "getRecurringTransfers v20260427 interacts with gateway"() {
given:
BaseController.setGateway(gateway)
def transfer = new RecurringTransfer()
def list = new MdxList<RecurringTransfer>().tap { add(transfer) }
def queryParameters = new RecurringTransferListQueryParameters().tap {
transfer_type = "test"
}

when:
Mockito.doReturn(new AccessorResponse<MdxList<RecurringTransfer>>().withResult(list)).when(recurringTransferGateway).list20260427(any(RecurringTransferListOptions))
def response = subject.list(queryParameters, buildRequest(null, "application/vnd.mx.mdx.v6+json;version=20260427"))

then:
HttpStatus.OK == response.statusCode
verify(recurringTransferGateway).list20260427(any(RecurringTransferListOptions)) || true
response.body == list
}

def "skipNextRecurringTransfer interacts with gateway"() {
given:
BaseController.setGateway(gateway)
Expand Down Expand Up @@ -206,16 +174,4 @@ class RecurringTransfersControllerTest extends Specification implements WithMock
verify(recurringTransferGateway).update("id", transfer) || true
response.body == mockResponse.result
}

def buildRequest(Object body, String contentType) {
HttpServletRequest request = mock(HttpServletRequest.class)
when(request.getReader()).thenReturn(new BufferedReader(new StringReader(gson.toJson(body))))
if (Session.current() != null) {
when(request.getHeader("mx-session-key")).thenReturn(Session.current().getId())
}
when(request.getHeaders("Content-Type")).thenReturn(Collections.enumeration([contentType]))
when(request.getHeaders("Accept")).thenReturn(Collections.enumeration([contentType]))

return request
}
}
Loading