44import static java .net .HttpURLConnection .HTTP_INTERNAL_ERROR ;
55import java .io .IOException ;
66
7+ import static org .junit .Assert .assertEquals ;
8+ import static org .junit .Assert .assertNotNull ;
9+ import static org .junit .Assert .fail ;
710import com .siftscience .exception .InvalidApiKeyException ;
811import com .siftscience .exception .InvalidFieldException ;
912import com .siftscience .exception .MissingFieldException ;
1013import com .siftscience .exception .RateLimitException ;
1114import com .siftscience .exception .ServerException ;
15+ import com .siftscience .model .ApplyDecisionFieldSet ;
16+ import com .siftscience .model .CreateMerchantFieldSet ;
1217import com .siftscience .model .CreateOrderFieldSet ;
18+ import com .siftscience .model .DecisionStatusFieldSet ;
19+ import com .siftscience .model .GetDecisionFieldSet ;
20+ import com .siftscience .model .GetMerchantsFieldSet ;
21+ import com .siftscience .model .UpdateMerchantFieldSet ;
22+ import com .siftscience .model .WorkflowStatusFieldSet ;
1323import okhttp3 .OkHttpClient ;
1424import okhttp3 .mockwebserver .MockResponse ;
1525import okhttp3 .mockwebserver .MockWebServer ;
1626import org .json .JSONException ;
1727import org .junit .After ;
18- import org .junit .Assert ;
1928import org .junit .Before ;
2029import org .junit .Test ;
2130import org .skyscreamer .jsonassert .JSONAssert ;
@@ -93,11 +102,11 @@ public void testInvalidAPIKeyException() throws Exception {
93102 }
94103
95104 // We should have gotten an exception.
96- Assert . assertNotNull (apiKeyException );
97- Assert . assertEquals ("Invalid API key message." , apiKeyException .getLocalizedMessage ());
105+ assertNotNull (apiKeyException );
106+ assertEquals ("Invalid API key message." , apiKeyException .getLocalizedMessage ());
98107
99108 // Check that we can access the API key from the exception object.
100- Assert . assertEquals ("INVALID_API_KEY" ,
109+ assertEquals ("INVALID_API_KEY" ,
101110 apiKeyException .getSiftResponse ().getRequestBody ().getApiKey ());
102111 }
103112
@@ -141,8 +150,8 @@ public void testServerSideMissingFieldException() throws IOException {
141150 }
142151
143152 // We should have gotten an exception.
144- Assert . assertNotNull (missingFieldException );
145- Assert . assertEquals ("Missing user email message from server." ,
153+ assertNotNull (missingFieldException );
154+ assertEquals ("Missing user email message from server." ,
146155 missingFieldException .getLocalizedMessage ());
147156 }
148157
@@ -164,8 +173,8 @@ public void testInvalidCustomFieldKeyException() throws IOException {
164173 }
165174
166175 // Should have thrown an exception.
167- Assert . assertNotNull (invalidFieldException );
168- Assert . assertEquals ("Custom field \" $not_allowed\" may not begin with a dollar sign." ,
176+ assertNotNull (invalidFieldException );
177+ assertEquals ("Custom field \" $not_allowed\" may not begin with a dollar sign." ,
169178 invalidFieldException .getLocalizedMessage ());
170179 }
171180
@@ -211,8 +220,8 @@ public void testRateLimitException() throws IOException {
211220 }
212221
213222 // We should have gotten an exception.
214- Assert . assertNotNull (rateLimitException );
215- Assert . assertEquals ("Rate limit error message." , rateLimitException .getLocalizedMessage ());
223+ assertNotNull (rateLimitException );
224+ assertEquals ("Rate limit error message." , rateLimitException .getLocalizedMessage ());
216225 }
217226
218227 /**
@@ -243,8 +252,9 @@ public void testGenericServerErrorException() throws IOException {
243252 }
244253
245254 // We should have gotten an exception.
246- Assert .assertNotNull (serverException );
247- Assert .assertEquals ("Unexpected API error." , serverException .getLocalizedMessage ());
255+ assertNotNull (serverException );
256+ assertEquals ("Unexpected API error " + HTTP_INTERNAL_ERROR + "." ,
257+ serverException .getLocalizedMessage ());
248258 }
249259
250260 /**
@@ -276,8 +286,9 @@ public void testGenericServerErrorExceptionNonJson() throws IOException {
276286 }
277287
278288 // We should have gotten an exception.
279- Assert .assertNotNull (serverException );
280- Assert .assertEquals ("Unexpected API error." , serverException .getLocalizedMessage ());
289+ assertNotNull (serverException );
290+ assertEquals ("Unexpected API error " + HTTP_INTERNAL_ERROR + "." ,
291+ serverException .getLocalizedMessage ());
281292 }
282293
283294 /**
@@ -303,4 +314,92 @@ public void testNullsAreNotSerialized() throws JSONException {
303314 "}" , fieldSet .toJson (), true );
304315 }
305316
317+ @ Test
318+ public void testFailsToCreateClientWhenApiKeyIsNull () {
319+ assertIllegalArgumentWithMessage (
320+ () -> new SiftClient (null , "YOUR_ACCOUNT_ID" ),
321+ "API key must not be null"
322+ );
323+ }
324+
325+ @ Test
326+ public void testFailsToCreateClientWhenHttpClientIsNull () {
327+ assertIllegalArgumentWithMessage (
328+ () -> new SiftClient ("YOUR_API_KEY" , "YOUR_ACCOUNT_ID" ,
329+ (OkHttpClient ) null ),
330+ "Http Client must not be null"
331+ );
332+ }
333+
334+ @ Test
335+ public void testFailsToBuildApplyDecisionRequest () {
336+ SiftClient siftClient = new SiftClient ("YOUR_API_KEY" , null );
337+ assertIllegalArgumentWithMessage (
338+ () -> siftClient .buildRequest (new ApplyDecisionFieldSet ()),
339+ "Account ID must not be null"
340+ );
341+ }
342+
343+ @ Test
344+ public void testFailsToBuildGetDecisionRequest () {
345+ SiftClient siftClient = new SiftClient ("YOUR_API_KEY" , null );
346+ assertIllegalArgumentWithMessage (
347+ () -> siftClient .buildRequest (new GetDecisionFieldSet ()),
348+ "Account ID must not be null"
349+ );
350+ }
351+
352+ @ Test
353+ public void testFailsToBuildDecisionStatusRequest () {
354+ SiftClient siftClient = new SiftClient ("YOUR_API_KEY" , null );
355+ assertIllegalArgumentWithMessage (
356+ () -> siftClient .buildRequest (new DecisionStatusFieldSet ()),
357+ "Account ID must not be null"
358+ );
359+ }
360+
361+ @ Test
362+ public void testFailsToBuildWorkflowStatusRequest () {
363+ SiftClient siftClient = new SiftClient ("YOUR_API_KEY" , null );
364+ assertIllegalArgumentWithMessage (
365+ () -> siftClient .buildRequest (new WorkflowStatusFieldSet ()),
366+ "Account ID must not be null"
367+ );
368+ }
369+
370+ @ Test
371+ public void testFailsToBuildGetMerchantsRequest () {
372+ SiftClient siftClient = new SiftClient ("YOUR_API_KEY" , null );
373+ assertIllegalArgumentWithMessage (
374+ () -> siftClient .buildRequest (new GetMerchantsFieldSet ()),
375+ "Account ID must not be null"
376+ );
377+ }
378+
379+ @ Test
380+ public void testFailsToBuildCreateMerchantRequest () {
381+ SiftClient siftClient = new SiftClient ("YOUR_API_KEY" , null );
382+ assertIllegalArgumentWithMessage (
383+ () -> siftClient .buildRequest (new CreateMerchantFieldSet ()),
384+ "Account ID must not be null"
385+ );
386+ }
387+
388+ @ Test
389+ public void testFailsToBuildUpdateMerchantRequest () {
390+ SiftClient siftClient = new SiftClient ("YOUR_API_KEY" , null );
391+ assertIllegalArgumentWithMessage (
392+ () -> siftClient .buildRequest (new UpdateMerchantFieldSet (), "merchantID" ),
393+ "Account ID must not be null"
394+ );
395+ }
396+
397+ private void assertIllegalArgumentWithMessage (Runnable runnable , String message ) {
398+ try {
399+ runnable .run ();
400+ fail ("Excepted to throw IllegalArgumentException" );
401+ } catch (IllegalArgumentException exception ) {
402+ assertEquals (message , exception .getMessage ());
403+ }
404+ }
306405}
0 commit comments