diff --git a/build.gradle.kts b/build.gradle.kts index d3fc8b758..d2c1c4556 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,6 +14,7 @@ recipeDependencies { parserClasspath("com.google.guava:guava:33.5.0-jre") parserClasspath("com.squareup.okhttp3:mockwebserver:3.14.9") parserClasspath("com.squareup.okhttp3:mockwebserver:4.10.0") + parserClasspath("com.squareup.okio:okio-jvm:3.0.0") parserClasspath("junit:junit:4.+") parserClasspath("org.apiguardian:apiguardian-api:1.1.2") parserClasspath("org.assertj:assertj-core:3.+") diff --git a/src/main/resources/META-INF/rewrite/classpath.tsv.gz b/src/main/resources/META-INF/rewrite/classpath.tsv.gz index 343e015d3..e4314acc1 100644 Binary files a/src/main/resources/META-INF/rewrite/classpath.tsv.gz and b/src/main/resources/META-INF/rewrite/classpath.tsv.gz differ diff --git a/src/test/java/org/openrewrite/java/testing/junit5/UpdateMockWebServerTest.java b/src/test/java/org/openrewrite/java/testing/junit5/UpdateMockWebServerTest.java index 385f2bad7..3b344da7d 100644 --- a/src/test/java/org/openrewrite/java/testing/junit5/UpdateMockWebServerTest.java +++ b/src/test/java/org/openrewrite/java/testing/junit5/UpdateMockWebServerTest.java @@ -32,7 +32,7 @@ public void defaults(RecipeSpec spec) { spec .parser(JavaParser.fromJavaVersion() .logCompilationWarningsAndErrors(true) - .classpathFromResources(new InMemoryExecutionContext(), "junit-4", "junit-jupiter-api-5", "mockwebserver-3.14")) + .classpathFromResources(new InMemoryExecutionContext(), "junit-4", "junit-jupiter-api-5", "mockwebserver-4.10", "okio-jvm-3")) .recipe(new UpdateMockWebServer()); } @@ -105,4 +105,71 @@ void afterEachTest() throws IOException { ) ); } + + @Test + void mockWebServerMigratesCode() { + //language=java + rewriteRun( + java( + """ + import okhttp3.mockwebserver.MockResponse; + import okhttp3.mockwebserver.MockWebServer; + import okhttp3.mockwebserver.RecordedRequest; + + import java.util.concurrent.TimeUnit; + + public class MyTest { + public void test() throws Exception { + MockWebServer server = new MockWebServer(); + server.enqueue(new MockResponse() + .setBody("hello, world!") + .setResponseCode(100) + .addHeader("My-Header", "value") + .setBodyDelay(100, TimeUnit.MILLISECONDS) + .setStatus("Something") + ); + server.start(); + + RecordedRequest request1 = server.takeRequest(); + String path = request1.getPath(); + String header = request1.getHeader("Authorization"); + String body = request1.getBody().readUtf8(); + + server.shutdown(); + } + } + """, + """ + import mockwebserver3.MockResponse; + import mockwebserver3.MockWebServer; + import mockwebserver3.RecordedRequest; + + import java.nio.charset.StandardCharsets; + import java.util.concurrent.TimeUnit; + + public class MyTest { + public void test() throws Exception { + MockWebServer server = new MockWebServer(); + server.enqueue(new MockResponse.Builder() + .body("hello, world!") + .code(100) + .addHeader("My-Header", "value") + .bodyDelay(100, TimeUnit.MILLISECONDS) + .status("Something") + .build() + ); + server.start(); + + RecordedRequest request1 = server.takeRequest(); + String path = request1.getUrl().encodedPath(); + String header = request1.getHeaders().get("Authorization"); + String body = request1.getBody().string(StandardCharsets.UTF_8); + + server.close(); + } + } + """ + ) + ); + } } diff --git a/src/test/resources/META-INF/rewrite/classpath.tsv.gz b/src/test/resources/META-INF/rewrite/classpath.tsv.gz index e3d118cf4..eb97abcd8 100644 Binary files a/src/test/resources/META-INF/rewrite/classpath.tsv.gz and b/src/test/resources/META-INF/rewrite/classpath.tsv.gz differ