Skip to content

Commit b49b20f

Browse files
authored
Improve deserialization unit testing (#1421)
* Rename to ideal * Add scheme deserialization test * Improve unit tests * Update returnUrl in unit test
1 parent b9ba24d commit b49b20f

File tree

3 files changed

+66
-12
lines changed

3 files changed

+66
-12
lines changed

src/test/java/com/adyen/CheckoutTest.java

+37-11
Original file line numberDiff line numberDiff line change
@@ -86,23 +86,49 @@ public void TestPaymentSuccess() throws Exception {
8686
* Should be able to stringify and parse paymentMethod in CheckoutPaymentRequest (test oneOf serialization and deserialization)
8787
*/
8888
@Test
89-
public void TestCheckoutPaymentRequestSerialization() throws Exception {
90-
String paymentRequestJson = getFileContents("mocks/checkout/paymentRequest.json");
91-
IdealDetails idealDetails = new IdealDetails();
92-
idealDetails.setIssuer("issuerName");
93-
Amount amount = new Amount().currency("EUR").value(1000L);
94-
PaymentRequest paymentRequest = new PaymentRequest();
95-
paymentRequest.setAmount(amount);
96-
paymentRequest.setMerchantAccount("myMerchantAccount");
97-
paymentRequest.setReference("merchantReference");
98-
paymentRequest.setReturnUrl("http://return.com");
99-
paymentRequest.setPaymentMethod(new CheckoutPaymentMethod(idealDetails));
89+
public void TestDeserializePaymentRequestIdeal() throws Exception {
90+
String paymentRequestJson = getFileContents("mocks/checkout/paymentRequestIdeal.json");
10091

10192
PaymentRequest parsedCheckoutPaymentRequest = PaymentRequest.fromJson(paymentRequestJson);
93+
94+
// paymentMethod
10295
assertEquals(IdealDetails.TypeEnum.IDEAL, parsedCheckoutPaymentRequest.getPaymentMethod().getIdealDetails().getType());
96+
assertEquals("issuerName", parsedCheckoutPaymentRequest.getPaymentMethod().getIdealDetails().getIssuer());
97+
// amount
98+
assertEquals(1000L, parsedCheckoutPaymentRequest.getAmount().getValue().longValue());
10399
assertEquals("EUR", parsedCheckoutPaymentRequest.getAmount().getCurrency());
100+
// merchant account
101+
assertEquals("myMerchantAccount", parsedCheckoutPaymentRequest.getMerchantAccount());
102+
// reference
103+
assertEquals("merchantReference", parsedCheckoutPaymentRequest.getReference());
104+
// return url
105+
assertEquals("https://your-company.com/..", parsedCheckoutPaymentRequest.getReturnUrl());
104106
}
105107

108+
/**
109+
* Deserialise CardDetails (scheme)
110+
* @throws Exception
111+
*/
112+
@Test
113+
public void TestDeserializePaymentRequestScheme() throws Exception {
114+
String paymentRequestJson = getFileContents("mocks/checkout/paymentRequestScheme.json");
115+
116+
PaymentRequest parsedCheckoutPaymentRequest = PaymentRequest.fromJson(paymentRequestJson);
117+
assertNotNull(parsedCheckoutPaymentRequest.getPaymentMethod());
118+
assertEquals(CardDetails.TypeEnum.SCHEME, parsedCheckoutPaymentRequest.getPaymentMethod().getCardDetails().getType());
119+
assertEquals("2.4.2", parsedCheckoutPaymentRequest.getPaymentMethod().getCardDetails().getThreeDS2SdkVersion());
120+
// verify un-encrypted fields are empty
121+
assertNull(parsedCheckoutPaymentRequest.getPaymentMethod().getCardDetails().getNumber());
122+
assertNull(parsedCheckoutPaymentRequest.getPaymentMethod().getCardDetails().getCvc());
123+
// verify encrypted fields are correct
124+
assertNotNull(parsedCheckoutPaymentRequest.getPaymentMethod().getCardDetails().getEncryptedCardNumber());
125+
assertEquals("eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwidmVyc2lvbiI6IjEifQ.DXQDEl3M" +
126+
"dyyW_ZrJoF2Kt3P1H2wWaP1z-FgI6SuDv96lN7e_0ki0mUkI8AL2USS_iiMbG5W4NtD4Ut5TqCBPlgOZfN6vDyM8O6Df-" +
127+
"qNbX7rnW9iQQUue_21oo6U9K2tpFEQ9rYgUVIFhfLdFmLZ4q8ejmXFSGuTh-iC06APs2zWdUn0v-S4q4ltAzhee_5yOvff" +
128+
"oSCWOWiGltUqViVOnrllheH-POp4qfL9GbaIkjixPyLNLRizQTrOO_j3m0gczeiORcrjXI2NSouSkPP9M1K9nwUWX-jpVTf" +
129+
"1PkqLTYRzGQwZCoL9JU9HabRXYdM_eLMtNaIfiBo_4wPq5Iocmww",
130+
parsedCheckoutPaymentRequest.getPaymentMethod().getCardDetails().getEncryptedCardNumber());
131+
}
106132
/**
107133
* Should make paymentMethods call
108134
*/

src/test/resources/mocks/checkout/paymentRequest.json renamed to src/test/resources/mocks/checkout/paymentRequestIdeal.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99
"type":"ideal"
1010
},
1111
"reference":"merchantReference",
12-
"returnUrl":"http://return.com"
12+
"returnUrl":"https://your-company.com/.."
1313
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"paymentMethod": {
3+
"brand": null,
4+
"checkoutAttemptId": null,
5+
"cvc": null,
6+
"encryptedCard": null,
7+
"encryptedCardNumber": "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwidmVyc2lvbiI6IjEifQ.DXQDEl3MdyyW_ZrJoF2Kt3P1H2wWaP1z-FgI6SuDv96lN7e_0ki0mUkI8AL2USS_iiMbG5W4NtD4Ut5TqCBPlgOZfN6vDyM8O6Df-qNbX7rnW9iQQUue_21oo6U9K2tpFEQ9rYgUVIFhfLdFmLZ4q8ejmXFSGuTh-iC06APs2zWdUn0v-S4q4ltAzhee_5yOvffoSCWOWiGltUqViVOnrllheH-POp4qfL9GbaIkjixPyLNLRizQTrOO_j3m0gczeiORcrjXI2NSouSkPP9M1K9nwUWX-jpVTf1PkqLTYRzGQwZCoL9JU9HabRXYdM_eLMtNaIfiBo_4wPq5Iocmww",
8+
"encryptedExpiryMonth": "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwidmVyc2lvbiI6IjEifQ.MtVkIf8d7nh22lpyf5QgnNWQnGGrjyk06qA5l-jGG0t5n2eLMRwoxEIq-U7XnWERGzZcmTKhJx31Li7rHOsKUimakfimrGdQVjBFmayf0Uq0mg74SW8Z2bG4ll1TKicPefjDVI1vG0zbOfBcHAWHH8D-xeZM7UqKnuVFErKGgJR84DcCLx8Ue5r7n1NftOYTlVWC65jC-h17c6Q9nvtF2-or-ln3lbK7aIomJO7prmFRJi4NzgCfdvdskrYaHQ-Cmbetl6WYk061KMfGovaUbFIKdzzqp1VIiJ5PBsmz3_poL9G_ZIbbMYomO7HQ5qpn2PZy5XEFV5unPSnAMgj0lw.VDKN7ExyIs2NRLx2D8ptEw.oPjV7bqK07oWnlDV6PAhnHEiVQRE2HWjxs99U2bRfH1D-WeF66zYVVP08cSfB228N2p757gURgH5tchWninxRw.xh0PGSkQKBlp0lurhmQVZqln2YOQpKdYHsFioCl6HgQ",
9+
"encryptedExpiryYear": "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwidmVyc2lvbiI6IjEifQ.Oy3Bpn9EDTI4HOIZv0tDQbX6zLga1pykydqFrxO-e_sEaNKAFdZph_zsA8E71ZlovYdhgaqbJW-5G3rubtVtQc6eawKviXHAJHJNMhlLdf0nsmBwAF2rpgBLvfWM4T48iQG3u1s2QvP75eNFAG0ps7tJM1kZbtnkyA9rBs-JVEZGj-p-B3kvKsqZrX48P8nObCzIdIQfW36i9bj26tCNmygXp5H8MA3fsTqbqytsffOTde-smQkrttoOysAQcD8t5ZoCbFByZElG5GBS1fpCiNVG6t7eFhOsYzG3Z-U23Ep7vRkQSG_zdGgXFEo-qE97e75PH3nXbHILOIIhe5IxrA.huo7SHXgBXtLWZeycoFZmQ.XK9szr9TDRSZGX3sqvv10t-hxQClJ37x_pDFxT4aQ7ZO_kHIsZo9RNp206Bdl3gJYVexwwk6w_j-9fb9sV1ggg.akr9kFjMo2bCwiNozxp6Uq62XmjDbcILXPJX3c3YcHc",
10+
"encryptedSecurityCode": "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwidmVyc2lvbiI6IjEifQ.gqODDkA-rSgSZ48W-YK7Ofxyvdu6F7kRorV6dtDwaayHDDvTEw-eSsFYpfMfXKeGJcjhAWZL7RwR51XRTez-x7ujwt4MGavr__2NdDJ0tO1e-Pak2k34WZs3H_xyHfJmd7E9SODsJ1yweLNSRrfuLoKY3smSnOd85ZuKv-d1m74ojjWpvDC0pPTe69nsLzbIw1g--UxMGI9oXkeDP_EYnIo9F8W7qUCZfwQ23gJtYTcTg6Qxbd_DP57tKQhvYCi26AHweWKcPWlgl6B1g3z9pL__i46dG8BCd3LDX8ETmgurbbq8chObI-h7FYEZrmLfeTJcRfE0uW7GXvT9ZojIGA.QKdUIrCAsDoNOD3qN7dEqA.LmmCr1q5vKMt_m_ZkQbho7E-28H0N7Hxc8XVrX4yQXkZRqSaGLCOR4MiYV0uFFeV5qzBt6jpTHFANmT9DXQgsg.k9zkNnkggMuHdcpwsLvfmPTDhrw3zF00FXsw7p9QC_Q",
11+
"expiryMonth": null,
12+
"expiryYear": null,
13+
"fundingSource": null,
14+
"holderName": null,
15+
"networkPaymentReference": null,
16+
"number": null,
17+
"shopperNotificationReference": null,
18+
"srcCorrelationId": null,
19+
"srcDigitalCardId": null,
20+
"srcScheme": null,
21+
"srcTokenReference": null,
22+
"storedPaymentMethodId": null,
23+
"threeDS2SdkVersion": "2.4.2",
24+
"type": "scheme"
25+
},
26+
"isNullable": false,
27+
"schemaType": "oneOf"
28+
}

0 commit comments

Comments
 (0)