Skip to content

Commit 2c4682a

Browse files
authored
Improve Terminal API test (#1573)
1 parent dbd18ca commit 2c4682a

File tree

2 files changed

+77
-10
lines changed

2 files changed

+77
-10
lines changed

src/test/java/com/adyen/BaseTest.java

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,7 @@
3232
import com.adyen.httpclient.AdyenHttpClient;
3333
import com.adyen.httpclient.HTTPClientException;
3434
import com.adyen.model.additionalData.InvoiceLine;
35-
import com.adyen.model.nexo.AmountsReq;
36-
import com.adyen.model.nexo.MessageCategoryType;
37-
import com.adyen.model.nexo.MessageClassType;
38-
import com.adyen.model.nexo.MessageHeader;
39-
import com.adyen.model.nexo.MessageType;
40-
import com.adyen.model.nexo.PaymentTransaction;
41-
import com.adyen.model.nexo.SaleData;
42-
import com.adyen.model.nexo.SaleToPOIRequest;
43-
import com.adyen.model.nexo.TransactionIdentification;
35+
import com.adyen.model.nexo.*;
4436
import com.adyen.model.payment.ApplicationInfo;
4537
import com.adyen.model.payment.AuthenticationResultRequest;
4638
import com.adyen.model.payment.BrowserInfo;
@@ -368,6 +360,38 @@ protected TerminalAPIRequest createTerminalAPIPaymentRequest()
368360
return terminalAPIRequest;
369361
}
370362

363+
protected TerminalAPIRequest createTerminalAPIInputRequest()
364+
throws DatatypeConfigurationException {
365+
SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
366+
367+
MessageHeader messageHeader = new MessageHeader();
368+
messageHeader.setProtocolVersion("3.0");
369+
messageHeader.setMessageClass(MessageClassType.DEVICE);
370+
messageHeader.setMessageCategory(MessageCategoryType.INPUT);
371+
messageHeader.setMessageType(MessageType.REQUEST);
372+
messageHeader.setSaleID("001");
373+
messageHeader.setServiceID("001");
374+
messageHeader.setPOIID("P400Plus-123456789");
375+
376+
saleToPOIRequest.setMessageHeader(messageHeader);
377+
378+
com.adyen.model.nexo.InputRequest inputRequest = new com.adyen.model.nexo.InputRequest();
379+
DisplayOutput displayOutput = new DisplayOutput();
380+
OutputContent outputContent = new OutputContent();
381+
PredefinedContent predefinedContent = new PredefinedContent();
382+
predefinedContent.setReferenceID("GetSignature");
383+
outputContent.setPredefinedContent(predefinedContent);
384+
displayOutput.setOutputContent(outputContent);
385+
inputRequest.setDisplayOutput(displayOutput);
386+
387+
saleToPOIRequest.setInputRequest(inputRequest);
388+
389+
TerminalAPIRequest terminalAPIRequest = new TerminalAPIRequest();
390+
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
391+
392+
return terminalAPIRequest;
393+
}
394+
371395
protected AuthenticationResultRequest createAuthenticationResultRequest() {
372396
AuthenticationResultRequest authenticationResultRequest = new AuthenticationResultRequest();
373397
authenticationResultRequest.setMerchantAccount("AMerchant");

src/test/java/com/adyen/TerminalCloudAPITest.java

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@
2121
package com.adyen;
2222

2323
import static org.junit.Assert.*;
24+
import static org.mockito.ArgumentMatchers.*;
25+
import static org.mockito.ArgumentMatchers.eq;
26+
import static org.mockito.ArgumentMatchers.isNull;
27+
import static org.mockito.Mockito.verify;
2428

29+
import com.adyen.constants.ApiConstants;
2530
import com.adyen.model.nexo.MessageCategoryType;
2631
import com.adyen.model.nexo.MessageClassType;
2732
import com.adyen.model.nexo.MessageHeader;
@@ -45,6 +50,7 @@
4550
import java.math.BigDecimal;
4651
import java.util.List;
4752
import org.junit.Test;
53+
import org.mockito.ArgumentCaptor;
4854

4955
/** Tests for /sync and /async */
5056
public class TerminalCloudAPITest extends BaseTest {
@@ -166,6 +172,23 @@ public void syncPaymentRequestSuccess() throws Exception {
166172
paymentResult.getCurrencyConversion().get(0).getConvertedAmount().getAmountValue());
167173
assertEquals(
168174
"EUR", paymentResult.getCurrencyConversion().get(0).getConvertedAmount().getCurrency());
175+
176+
final ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
177+
verify(client.getHttpClient())
178+
.request(
179+
isNotNull(),
180+
captor.capture(),
181+
any(com.adyen.Config.class),
182+
eq(true),
183+
isNull(),
184+
eq(ApiConstants.HttpMethod.POST),
185+
isNull());
186+
187+
String requestAsJson = captor.getValue();
188+
assertTrue(
189+
"SaleToAcquirerData field not found", requestAsJson.contains("\"SaleToAcquirerData\":"));
190+
assertFalse("Found null value", requestAsJson.contains(":null"));
191+
assertFalse("Found null value", requestAsJson.contains(": null"));
169192
}
170193

171194
/** Test success flow for POST /sync that includes unexpected attributes */
@@ -230,7 +253,9 @@ public void syncInputRequestSuccess() throws Exception {
230253
Client client = createMockClientFromFile("mocks/terminal-api/input-request-success.json");
231254
TerminalCloudAPI terminalCloudApi = new TerminalCloudAPI(client);
232255

233-
TerminalAPIResponse requestResponse = terminalCloudApi.sync(new TerminalAPIRequest());
256+
TerminalAPIRequest inputRequest = createTerminalAPIInputRequest();
257+
258+
TerminalAPIResponse requestResponse = terminalCloudApi.sync(inputRequest);
234259

235260
assertNotNull(requestResponse);
236261
assertNotNull(requestResponse.getSaleToPOIResponse());
@@ -254,6 +279,24 @@ public void syncInputRequestSuccess() throws Exception {
254279
.getInput()
255280
.getMenuEntryNumber()
256281
.length);
282+
283+
final ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
284+
verify(client.getHttpClient())
285+
.request(
286+
isNotNull(),
287+
captor.capture(),
288+
any(com.adyen.Config.class),
289+
eq(true),
290+
isNull(),
291+
eq(ApiConstants.HttpMethod.POST),
292+
isNull());
293+
294+
String requestAsJson = captor.getValue();
295+
assertTrue("InputRequest field not found", requestAsJson.contains("\"InputRequest\":"));
296+
assertTrue(
297+
"PredefinedContent field not found", requestAsJson.contains("\"PredefinedContent\":"));
298+
assertFalse("Found null value", requestAsJson.contains(":null"));
299+
assertFalse("Found null value", requestAsJson.contains(": null"));
257300
}
258301

259302
/** Mocked response for stored value type for POST /sync */

0 commit comments

Comments
 (0)