55import io .ipinfo .api .model .ASNResponse ;
66import io .ipinfo .api .model .IPResponse ;
77import io .ipinfo .api .model .ResproxyResponse ;
8+ import okhttp3 .OkHttpClient ;
9+ import okhttp3 .mockwebserver .MockResponse ;
10+ import okhttp3 .mockwebserver .MockWebServer ;
811import org .junit .jupiter .api .Disabled ;
912import org .junit .jupiter .api .Test ;
1013
14+ import java .io .IOException ;
1115import java .util .ArrayList ;
1216import java .util .Arrays ;
1317import java .util .List ;
@@ -267,9 +271,32 @@ public void testGetBatchAsns() {
267271 }
268272
269273 @ Test
270- public void testLookupResproxy () {
274+ public void testLookupResproxy () throws IOException {
275+ MockWebServer server = new MockWebServer ();
276+ String mockResponseBody = "{\" ip\" :\" 175.107.211.204\" ,\" last_seen\" :\" 2025-01-20\" ,\" percent_days_seen\" :0.85,\" service\" :\" example_service\" }" ;
277+ server .enqueue (new MockResponse ()
278+ .setBody (mockResponseBody )
279+ .addHeader ("Content-Type" , "application/json" ));
280+ server .start ();
281+
282+ OkHttpClient client = new OkHttpClient .Builder ()
283+ .addInterceptor (chain -> {
284+ okhttp3 .Request originalRequest = chain .request ();
285+ okhttp3 .HttpUrl newUrl = originalRequest .url ().newBuilder ()
286+ .scheme ("http" )
287+ .host (server .getHostName ())
288+ .port (server .getPort ())
289+ .build ();
290+ okhttp3 .Request newRequest = originalRequest .newBuilder ()
291+ .url (newUrl )
292+ .build ();
293+ return chain .proceed (newRequest );
294+ })
295+ .build ();
296+
271297 IPinfo ii = new IPinfo .Builder ()
272- .setToken (System .getenv ("IPINFO_TOKEN" ))
298+ .setToken ("test_token" )
299+ .setClient (client )
273300 .build ();
274301
275302 try {
@@ -283,30 +310,58 @@ public void testLookupResproxy() {
283310 "IP mismatch"
284311 ),
285312 () ->
286- assertNotNull (
313+ assertEquals (
314+ "2025-01-20" ,
287315 response .getLastSeen (),
288- "lastSeen should be set "
316+ "lastSeen mismatch "
289317 ),
290318 () ->
291- assertNotNull (
319+ assertEquals (
320+ Double .valueOf (0.85 ),
292321 response .getPercentDaysSeen (),
293- "percentDaysSeen should be set "
322+ "percentDaysSeen mismatch "
294323 ),
295324 () ->
296- assertNotNull (
325+ assertEquals (
326+ "example_service" ,
297327 response .getService (),
298- "service should be set "
328+ "service mismatch "
299329 )
300330 );
301331 } catch (RateLimitedException e ) {
302332 fail (e );
333+ } finally {
334+ server .shutdown ();
303335 }
304336 }
305337
306338 @ Test
307- public void testLookupResproxyEmpty () {
339+ public void testLookupResproxyEmpty () throws IOException {
340+ MockWebServer server = new MockWebServer ();
341+ String mockResponseBody = "{}" ;
342+ server .enqueue (new MockResponse ()
343+ .setBody (mockResponseBody )
344+ .addHeader ("Content-Type" , "application/json" ));
345+ server .start ();
346+
347+ OkHttpClient client = new OkHttpClient .Builder ()
348+ .addInterceptor (chain -> {
349+ okhttp3 .Request originalRequest = chain .request ();
350+ okhttp3 .HttpUrl newUrl = originalRequest .url ().newBuilder ()
351+ .scheme ("http" )
352+ .host (server .getHostName ())
353+ .port (server .getPort ())
354+ .build ();
355+ okhttp3 .Request newRequest = originalRequest .newBuilder ()
356+ .url (newUrl )
357+ .build ();
358+ return chain .proceed (newRequest );
359+ })
360+ .build ();
361+
308362 IPinfo ii = new IPinfo .Builder ()
309- .setToken (System .getenv ("IPINFO_TOKEN" ))
363+ .setToken ("test_token" )
364+ .setClient (client )
310365 .build ();
311366
312367 try {
@@ -329,6 +384,8 @@ public void testLookupResproxyEmpty() {
329384 );
330385 } catch (RateLimitedException e ) {
331386 fail (e );
387+ } finally {
388+ server .shutdown ();
332389 }
333390 }
334391}
0 commit comments