1515 */
1616package ch .swisscom .mid .client .rest ;
1717
18- import ch .swisscom .mid .client .config .TlsConfiguration ;
19- import com .github .tomakehurst .wiremock .WireMockServer ;
20- import com .github .tomakehurst .wiremock .http .MimeType ;
21-
22- import org .junit .jupiter .api .AfterAll ;
23- import org .junit .jupiter .api .BeforeAll ;
24- import org .junit .jupiter .api .Test ;
25-
2618import ch .swisscom .mid .client .MIDClient ;
2719import ch .swisscom .mid .client .MIDFlowException ;
2820import ch .swisscom .mid .client .config .DefaultConfiguration ;
2921import ch .swisscom .mid .client .impl .MIDClientImpl ;
3022import ch .swisscom .mid .client .model .*;
23+ import com .github .tomakehurst .wiremock .WireMockServer ;
24+ import com .github .tomakehurst .wiremock .http .MimeType ;
25+ import org .junit .jupiter .api .AfterAll ;
26+ import org .junit .jupiter .api .BeforeAll ;
27+ import org .junit .jupiter .api .Test ;
3128
3229import static ch .swisscom .mid .client .rest .TestData .CUSTOM_AP_ID ;
3330import static ch .swisscom .mid .client .rest .TestData .CUSTOM_AP_PASSWORD ;
3431import static ch .swisscom .mid .client .rest .TestSupport .*;
35- import static ch .swisscom .mid .client .rest .TestSupport .fileToBytes ;
36- import static com .github .tomakehurst .wiremock .client .WireMock .aResponse ;
37- import static com .github .tomakehurst .wiremock .client .WireMock .containing ;
38- import static com .github .tomakehurst .wiremock .client .WireMock .post ;
39- import static com .github .tomakehurst .wiremock .client .WireMock .urlEqualTo ;
32+ import static com .github .tomakehurst .wiremock .client .WireMock .*;
4033import static com .github .tomakehurst .wiremock .core .WireMockConfiguration .options ;
4134import static org .hamcrest .MatcherAssert .assertThat ;
4235import static org .hamcrest .Matchers .is ;
4336import static org .hamcrest .Matchers .notNullValue ;
44- import static org .junit .jupiter .api .Assertions .fail ;
37+ import static org .junit .jupiter .api .Assertions .* ;
4538
4639public class SyncSignatureTest {
4740
@@ -68,11 +61,11 @@ public static void tearDownThisClass() {
6861 @ Test
6962 public void testSignature_success () {
7063 server .stubFor (
71- post (urlEqualTo (DefaultConfiguration .REST_ENDPOINT_SUB_URL ))
72- .willReturn (
73- aResponse ()
74- .withHeader ("Content-Type" , MimeType .JSON .toString ())
75- .withBody (fileToString ("/samples/rest-response-signature.json" ))));
64+ post (urlEqualTo (DefaultConfiguration .REST_ENDPOINT_SUB_URL ))
65+ .willReturn (
66+ aResponse ()
67+ .withHeader ("Content-Type" , MimeType .JSON .toString ())
68+ .withBody (fileToString ("/samples/rest-response-signature.json" ))));
7669
7770 SignatureRequest signatureRequest = buildSignatureRequest ();
7871 SignatureResponse response = client .requestSyncSignature (signatureRequest );
@@ -87,13 +80,13 @@ public void testSignature_success() {
8780 @ Test
8881 public void testSignature_success_overrideApIdAndApPassword () {
8982 server .stubFor (
90- post (urlEqualTo (DefaultConfiguration .REST_ENDPOINT_SUB_URL ))
91- .withRequestBody (containing ("\" " + CUSTOM_AP_ID + "\" " ))
92- .withRequestBody (containing ("\" " + CUSTOM_AP_PASSWORD + "\" " ))
93- .willReturn (
94- aResponse ()
95- .withHeader ("Content-Type" , MimeType .JSON .toString ())
96- .withBody (fileToString ("/samples/rest-response-signature.json" ))));
83+ post (urlEqualTo (DefaultConfiguration .REST_ENDPOINT_SUB_URL ))
84+ .withRequestBody (containing ("\" " + CUSTOM_AP_ID + "\" " ))
85+ .withRequestBody (containing ("\" " + CUSTOM_AP_PASSWORD + "\" " ))
86+ .willReturn (
87+ aResponse ()
88+ .withHeader ("Content-Type" , MimeType .JSON .toString ())
89+ .withBody (fileToString ("/samples/rest-response-signature.json" ))));
9790
9891 SignatureRequest signatureRequest = buildSignatureRequest ();
9992 signatureRequest .setOverrideApId (CUSTOM_AP_ID );
@@ -113,12 +106,12 @@ public void testSignature_success_overrideApIdAndApPassword() {
113106 @ Test
114107 public void testSignature_userCancel () {
115108 server .stubFor (
116- post (urlEqualTo ("/rest/service" ))
117- .willReturn (
118- aResponse ()
119- .withStatus (500 )
120- .withHeader ("Content-Type" , MimeType .JSON .toString ())
121- .withBody (fileToString ("/samples/rest-response-fault-user-cancel.json" ))));
109+ post (urlEqualTo ("/rest/service" ))
110+ .willReturn (
111+ aResponse ()
112+ .withStatus (500 )
113+ .withHeader ("Content-Type" , MimeType .JSON .toString ())
114+ .withBody (fileToString ("/samples/rest-response-fault-user-cancel.json" ))));
122115
123116 SignatureRequest signatureRequest = buildSignatureRequest ();
124117 try {
@@ -135,12 +128,12 @@ public void testSignature_userCancel() {
135128 @ Test
136129 public void testSignature_conFailure_responseTimeout () {
137130 server .stubFor (
138- post (urlEqualTo ("/rest/service" ))
139- .willReturn (
140- aResponse ()
141- .withStatus (200 )
142- .withBody ("" )
143- .withFixedDelay (5000 )));
131+ post (urlEqualTo ("/rest/service" ))
132+ .willReturn (
133+ aResponse ()
134+ .withStatus (200 )
135+ .withBody ("" )
136+ .withFixedDelay (5000 )));
144137
145138 SignatureRequest signatureRequest = buildSignatureRequest ();
146139 try {
@@ -154,6 +147,46 @@ public void testSignature_conFailure_responseTimeout() {
154147 }
155148 }
156149
150+ @ Test
151+ public void testSignatureWithDtbsAsTXNApproval_success () {
152+ server .stubFor (
153+ post (urlEqualTo (DefaultConfiguration .REST_ENDPOINT_SUB_URL ))
154+ .willReturn (
155+ aResponse ()
156+ .withHeader ("Content-Type" , MimeType .JSON .toString ())
157+ .withBody (fileToString ("/samples/rest-response-signature.json" ))));
158+
159+ SignatureRequest signatureRequest = buildSignatureReqWithDTBDTXNApproval (
160+ "{\" type\" :\" Address Change\" ,\" dtbd\" :[{\" key\" :\" Client\" ,\" value\" :\" #CLIENT#\" },{\" key\" :\" FN\" ,\" value\" :\" Test User\" },{\" key\" :\" Country\" ,\" value\" :\" Poland\" },{\" key\" :\" Session\" ,\" value\" :\" #SESSION#\" }]}"
161+ );
162+ SignatureResponse response = client .requestSyncSignature (signatureRequest );
163+ assertThat (response .getStatus ().getStatusCode (), is (StatusCode .SIGNATURE ));
164+ assertThat (response .getStatus ().getStatusCodeString (), is ("500" ));
165+ assertThat (response .getStatus ().getStatusMessage (), is ("SIGNATURE" ));
166+ assertThat (response .getSignatureProfile (), is (TestData .CUSTOM_SIGNATURE_PROFILE ));
167+ assertThat (response .getBase64Signature (), is (notNullValue ()));
168+ assertThat (response .getBase64Signature ().length (), is (TestData .BASE64_SIGNATURE_LENGTH ));
169+ }
170+
171+ @ Test
172+ public void testSignatureWithDtbsAsTXNApproval_invalidDtbsContent () {
173+ server .stubFor (
174+ post (urlEqualTo (DefaultConfiguration .REST_ENDPOINT_SUB_URL ))
175+ .willReturn (
176+ aResponse ()
177+ .withHeader ("Content-Type" , MimeType .JSON .toString ())
178+ .withBody (fileToString ("/samples/rest-response-signature.json" ))));
179+
180+ SignatureRequest signatureRequest = buildSignatureReqWithDTBDTXNApproval (
181+ "{\" type2\" :\" Address Change\" ,\" dtbd\" :[{}]"
182+ );
183+
184+ Exception exception = assertThrows (DataAssemblyException .class , () -> {
185+ SignatureResponse response = client .requestSyncSignature (signatureRequest );
186+ });
187+ assertEquals ("The DataToBeSigned format is not valid for mime type 'application/vnd.mobileid.txn-approval'" , exception .getMessage ());
188+ }
189+
157190 // ----------------------------------------------------------------------------------------------------
158191
159192 private static SignatureRequest buildSignatureRequest () {
@@ -167,4 +200,16 @@ private static SignatureRequest buildSignatureRequest() {
167200 request .addAdditionalService (new GeofencingAdditionalService ());
168201 return request ;
169202 }
203+
204+ private static SignatureRequest buildSignatureReqWithDTBDTXNApproval (String dtbs ) {
205+ SignatureRequest request = new SignatureRequest ();
206+ request .setUserLanguage (UserLanguage .ENGLISH );
207+ request .getDataToBeSigned ().setData (dtbs );
208+ request .getDataToBeSigned ().setEncodingToUtf8 ();
209+ request .getDataToBeSigned ().setMimeType ("application/vnd.mobileid.txn-approval" );
210+ request .getMobileUser ().setMsisdn (TrialNumbers .ONE_THAT_GIVES_MISSING_PARAM );
211+ request .setSignatureProfile (SignatureProfiles .DEFAULT_PROFILE );
212+ request .addAdditionalService (new GeofencingAdditionalService ());
213+ return request ;
214+ }
170215}
0 commit comments