From ac59016b35bbb13337e626cbeb60ed01e13494c1 Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Fri, 23 Jan 2026 18:36:37 +0100 Subject: [PATCH] Mock resproxy API responses in tests --- pom.xml | 6 ++ src/test/java/io/ipinfo/IPinfoTest.java | 77 +++++++++++++++++++++---- 2 files changed, 73 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 20f9ee9..303caee 100644 --- a/pom.xml +++ b/pom.xml @@ -83,6 +83,12 @@ 5.2.0 test + + com.squareup.okhttp3 + mockwebserver + 4.10.0 + test + diff --git a/src/test/java/io/ipinfo/IPinfoTest.java b/src/test/java/io/ipinfo/IPinfoTest.java index d546f46..ac3cbd2 100644 --- a/src/test/java/io/ipinfo/IPinfoTest.java +++ b/src/test/java/io/ipinfo/IPinfoTest.java @@ -5,9 +5,13 @@ import io.ipinfo.api.model.ASNResponse; import io.ipinfo.api.model.IPResponse; import io.ipinfo.api.model.ResproxyResponse; +import okhttp3.OkHttpClient; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -267,9 +271,32 @@ public void testGetBatchAsns() { } @Test - public void testLookupResproxy() { + public void testLookupResproxy() throws IOException { + MockWebServer server = new MockWebServer(); + String mockResponseBody = "{\"ip\":\"175.107.211.204\",\"last_seen\":\"2025-01-20\",\"percent_days_seen\":0.85,\"service\":\"example_service\"}"; + server.enqueue(new MockResponse() + .setBody(mockResponseBody) + .addHeader("Content-Type", "application/json")); + server.start(); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(chain -> { + okhttp3.Request originalRequest = chain.request(); + okhttp3.HttpUrl newUrl = originalRequest.url().newBuilder() + .scheme("http") + .host(server.getHostName()) + .port(server.getPort()) + .build(); + okhttp3.Request newRequest = originalRequest.newBuilder() + .url(newUrl) + .build(); + return chain.proceed(newRequest); + }) + .build(); + IPinfo ii = new IPinfo.Builder() - .setToken(System.getenv("IPINFO_TOKEN")) + .setToken("test_token") + .setClient(client) .build(); try { @@ -283,30 +310,58 @@ public void testLookupResproxy() { "IP mismatch" ), () -> - assertNotNull( + assertEquals( + "2025-01-20", response.getLastSeen(), - "lastSeen should be set" + "lastSeen mismatch" ), () -> - assertNotNull( + assertEquals( + Double.valueOf(0.85), response.getPercentDaysSeen(), - "percentDaysSeen should be set" + "percentDaysSeen mismatch" ), () -> - assertNotNull( + assertEquals( + "example_service", response.getService(), - "service should be set" + "service mismatch" ) ); } catch (RateLimitedException e) { fail(e); + } finally { + server.shutdown(); } } @Test - public void testLookupResproxyEmpty() { + public void testLookupResproxyEmpty() throws IOException { + MockWebServer server = new MockWebServer(); + String mockResponseBody = "{}"; + server.enqueue(new MockResponse() + .setBody(mockResponseBody) + .addHeader("Content-Type", "application/json")); + server.start(); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(chain -> { + okhttp3.Request originalRequest = chain.request(); + okhttp3.HttpUrl newUrl = originalRequest.url().newBuilder() + .scheme("http") + .host(server.getHostName()) + .port(server.getPort()) + .build(); + okhttp3.Request newRequest = originalRequest.newBuilder() + .url(newUrl) + .build(); + return chain.proceed(newRequest); + }) + .build(); + IPinfo ii = new IPinfo.Builder() - .setToken(System.getenv("IPINFO_TOKEN")) + .setToken("test_token") + .setClient(client) .build(); try { @@ -329,6 +384,8 @@ public void testLookupResproxyEmpty() { ); } catch (RateLimitedException e) { fail(e); + } finally { + server.shutdown(); } } }