Skip to content

Instantly share code, notes, and snippets.

@davidmc24
Forked from devmop/Junit test
Last active December 27, 2015 17:48
Show Gist options
  • Save davidmc24/7364413 to your computer and use it in GitHub Desktop.
Save davidmc24/7364413 to your computer and use it in GitHub Desktop.
diff --git a/build.gradle b/build.gradle
index 3da4379..699c56d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -70,6 +70,7 @@ project(':feign-gson') {
compile project(':feign-core')
compile 'com.google.code.gson:gson:2.2.4'
testCompile 'org.testng:testng:6.8.5'
+ testCompile 'com.google.mockwebserver:mockwebserver:20130706'
}
}
diff --git a/core/src/test/java/feign/BrokenTest.java b/core/src/test/java/feign/BrokenTest.java
new file mode 100644
index 0000000..840d54b
--- /dev/null
+++ b/core/src/test/java/feign/BrokenTest.java
@@ -0,0 +1,33 @@
+package feign;
+
+import com.google.mockwebserver.MockResponse;
+import com.google.mockwebserver.MockWebServer;
+import com.google.mockwebserver.RecordedRequest;
+import org.junit.Test;
+
+import javax.inject.Named;
+
+import static org.junit.Assert.assertEquals;
+
+public class BrokenTest {
+
+ private interface TestInterface {
+
+ @RequestLine("GET /broken?name={broken}")
+ @Headers("Custom-Header: {Custom-Header}")
+ String get(@Named("broken") String broken, @Named("Custom-Header") String header);
+ }
+
+ @Test
+ public void showBreakageWithDefaultEncoder() throws Exception {
+ MockWebServer server = new MockWebServer();
+ server.enqueue(new MockResponse().setBody("response"));
+ server.play();
+
+ TestInterface testInterface = Feign.builder().target(TestInterface.class, "http://localhost:8080");
+ testInterface.get("broken", "header");
+ RecordedRequest request = server.takeRequest();
+ assertEquals("header", request.getHeader("Custom-Header"));
+ assertEquals("GET /broken?name=broken", request.getRequestLine());
+ }
+}
diff --git a/gson/src/test/java/feign/gson/examples/BrokenTest.java b/gson/src/test/java/feign/gson/examples/BrokenTest.java
new file mode 100644
index 0000000..4d5d07a
--- /dev/null
+++ b/gson/src/test/java/feign/gson/examples/BrokenTest.java
@@ -0,0 +1,40 @@
+package feign.gson.examples;
+
+import com.google.mockwebserver.MockResponse;
+import com.google.mockwebserver.MockWebServer;
+import com.google.mockwebserver.RecordedRequest;
+import feign.Feign;
+import feign.Headers;
+import feign.RequestLine;
+import feign.gson.GsonDecoder;
+import feign.gson.GsonEncoder;
+import org.junit.Test;
+
+import javax.inject.Named;
+
+import static org.junit.Assert.assertEquals;
+
+public class BrokenTest {
+
+ private interface TestInterface {
+
+ @RequestLine("GET /broken?name={broken}")
+ @Headers("Custom-Header: {Custom-Header}")
+ String get(@Named("broken") String broken, @Named("Custom-Header") String header);
+ }
+
+ @Test
+ public void showBreakageWithGson() throws Exception {
+ MockWebServer server = new MockWebServer();
+ server.enqueue(new MockResponse().setBody("response"));
+ server.play();
+
+ TestInterface testInterface = Feign.builder().decoder(new GsonDecoder())
+ .encoder(new GsonEncoder()).target(TestInterface.class, "http://localhost:" + server.getPort());
+ testInterface.get("broken", "header");
+
+ RecordedRequest request = server.takeRequest();
+ assertEquals("header", request.getHeader("Custom-Header"));
+ assertEquals("GET /broken?name=broken", request.getRequestLine());
+ }
+}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment