From e73ee5f690b94014ea0df17acd6f0f21f31a222c Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 16 Feb 2017 18:48:48 +0100 Subject: [PATCH] Refactors zuul tests for better readability. (#1686) * Refactors tests for better readability. Polishes imports. Removes hostname and port from TestRestTemplate-calls. Introduces @LocalServerPort --- .../ContextPathZuulProxyApplicationTests.java | 19 ++++-- .../zuul/FormZuulProxyApplicationTests.java | 25 +++---- .../FormZuulServletProxyApplicationTests.java | 38 ++++++----- .../RetryableZuulProxyApplicationTests.java | 27 ++++---- .../ServletPathZuulProxyApplicationTests.java | 66 ++++++++++++------- .../zuul/SimpleZuulProxyApplicationTests.java | 31 +++++---- .../SimpleZuulServerApplicationTests.java | 25 ++++--- .../zuul/ZuulProxyConfigurationTests.java | 12 ++-- 8 files changed, 144 insertions(+), 99 deletions(-) diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ContextPathZuulProxyApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ContextPathZuulProxyApplicationTests.java index 7a98c454..ba6ce79d 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ContextPathZuulProxyApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ContextPathZuulProxyApplicationTests.java @@ -22,8 +22,8 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -44,14 +44,19 @@ import org.springframework.web.bind.annotation.RestController; import com.netflix.zuul.context.RequestContext; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = ContextPathZuulProxyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, value = { - "server.contextPath: /app" }) +@SpringBootTest( + classes = ContextPathZuulProxyApplication.class, + webEnvironment = WebEnvironment.RANDOM_PORT, + value = {"server.contextPath: /app"}) @DirtiesContext public class ContextPathZuulProxyApplicationTests { - @Value("${local.server.port}") + @LocalServerPort private int port; + @Autowired + private TestRestTemplate testRestTemplate; + @Autowired private DiscoveryClientRouteLocator routes; @@ -59,7 +64,7 @@ public class ContextPathZuulProxyApplicationTests { private RoutesEndpoint endpoint; @Before - public void setTestRequestcontext() { + public void setTestRequestContext() { RequestContext context = new RequestContext(); RequestContext.testSetCurrentContext(context); } @@ -68,7 +73,7 @@ public class ContextPathZuulProxyApplicationTests { public void getOnSelfViaSimpleHostRoutingFilter() { this.routes.addRoute("/self/**", "http://localhost:" + this.port + "/app/local"); this.endpoint.reset(); - ResponseEntity result = new TestRestTemplate().exchange( + ResponseEntity result = testRestTemplate.exchange( "http://localhost:" + this.port + "/app/self/1", HttpMethod.GET, new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); @@ -80,7 +85,7 @@ public class ContextPathZuulProxyApplicationTests { this.routes.addRoute(new ZuulRoute("strip", "/strip/**", "strip", "http://localhost:" + this.port + "/app/local", false, false, null)); this.endpoint.reset(); - ResponseEntity result = new TestRestTemplate().exchange( + ResponseEntity result = testRestTemplate.exchange( "http://localhost:" + this.port + "/app/strip", HttpMethod.GET, new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulProxyApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulProxyApplicationTests.java index 3d513415..1fbfde84 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulProxyApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulProxyApplicationTests.java @@ -16,9 +16,16 @@ package org.springframework.cloud.netflix.zuul; +import static java.nio.charset.Charset.defaultCharset; +import static org.junit.Assert.assertEquals; +import static org.springframework.util.StreamUtils.copyToString; + import java.io.IOException; import java.util.Map; +import javax.inject.Inject; +import javax.servlet.http.Part; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -56,18 +63,13 @@ import com.netflix.loadbalancer.ServerList; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; -import static java.nio.charset.Charset.defaultCharset; -import static org.junit.Assert.assertEquals; -import static org.springframework.util.StreamUtils.copyToString; - import lombok.extern.slf4j.Slf4j; -import javax.inject.Inject; -import javax.servlet.http.Part; - @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = FormZuulProxyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, value = { - "zuul.routes.simple:/simple/**" }) +@SpringBootTest( + classes = FormZuulProxyApplication.class, + webEnvironment = WebEnvironment.RANDOM_PORT, + value = {"zuul.routes.simple:/simple/**"}) @DirtiesContext public class FormZuulProxyApplicationTests { @@ -215,7 +217,7 @@ public class FormZuulProxyApplicationTests { @EnableZuulProxy @RibbonClients({ @RibbonClient(name = "simple", configuration = FormRibbonClientConfiguration.class), - @RibbonClient(name = "psimple", configuration = FormRibbonClientConfiguration.class) }) + @RibbonClient(name = "psimple", configuration = FormRibbonClientConfiguration.class)}) @Slf4j class FormZuulProxyApplication { @@ -297,7 +299,8 @@ class FormZuulProxyApplication { new SpringApplicationBuilder(FormZuulProxyApplication.class) .properties("zuul.routes.simple:/simple/**", "zuul.routes.direct.url:http://localhost:9999", - "multipart.maxFileSize:4096MB", "multipart.maxRequestSize:4096MB") + "multipart.maxFileSize:4096MB", + "multipart.maxRequestSize:4096MB") .run(args); } diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulServletProxyApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulServletProxyApplicationTests.java index 7f6dfb1c..9261d1aa 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulServletProxyApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulServletProxyApplicationTests.java @@ -25,11 +25,12 @@ import java.util.Map; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.trace.InMemoryTraceRepository; import org.springframework.boot.actuate.trace.TraceRepository; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -62,15 +63,18 @@ import com.netflix.zuul.context.RequestContext; import lombok.extern.slf4j.Slf4j; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = FormZuulServletProxyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, value = "zuul.routes.simple:/simple/**") +@SpringBootTest( + classes = FormZuulServletProxyApplication.class, + webEnvironment = WebEnvironment.RANDOM_PORT, + value = "zuul.routes.simple:/simple/**") @DirtiesContext public class FormZuulServletProxyApplicationTests { - @Value("${local.server.port}") - private int port; + @Autowired + private TestRestTemplate testRestTemplate; @Before - public void setTestRequestcontext() { + public void setTestRequestContext() { RequestContext context = new RequestContext(); RequestContext.testSetCurrentContext(context); } @@ -81,8 +85,8 @@ public class FormZuulServletProxyApplicationTests { form.set("foo", "bar"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - ResponseEntity result = new TestRestTemplate().exchange( - "http://localhost:" + this.port + "/zuul/simple/form", HttpMethod.POST, + ResponseEntity result = testRestTemplate.exchange( + "/zuul/simple/form", HttpMethod.POST, new HttpEntity<>(form, headers), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Posted! {foo=[bar]}", result.getBody()); @@ -94,8 +98,8 @@ public class FormZuulServletProxyApplicationTests { form.set("foo", "bar"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); - ResponseEntity result = new TestRestTemplate().exchange( - "http://localhost:" + this.port + "/zuul/simple/form", HttpMethod.POST, + ResponseEntity result = testRestTemplate.exchange( + "/zuul/simple/form", HttpMethod.POST, new HttpEntity<>(form, headers), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Posted! {foo=[bar]}", result.getBody()); @@ -112,8 +116,8 @@ public class FormZuulServletProxyApplicationTests { headers.setContentType(MediaType.MULTIPART_FORM_DATA); headers.set("Transfer-Encoding", "chunked"); headers.setContentLength(-1); - ResponseEntity result = new TestRestTemplate().exchange( - "http://localhost:" + this.port + "/zuul/simple/file", HttpMethod.POST, + ResponseEntity result = testRestTemplate.exchange( + "/zuul/simple/file", HttpMethod.POST, new HttpEntity<>(form, headers), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Posted! bar", result.getBody()); @@ -126,8 +130,8 @@ public class FormZuulServletProxyApplicationTests { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.valueOf( MediaType.APPLICATION_FORM_URLENCODED_VALUE + "; charset=UTF-8")); - ResponseEntity result = new TestRestTemplate().exchange( - "http://localhost:" + this.port + "/zuul/simple/form", HttpMethod.POST, + ResponseEntity result = testRestTemplate.exchange( + "/zuul/simple/form", HttpMethod.POST, new HttpEntity<>(form, headers), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Posted! {foo=[bar]}", result.getBody()); @@ -163,8 +167,7 @@ class FormZuulServletProxyApplication { while (inputStream.read(buffer) >= 0) { log.info("Read more bytes"); } - } - else { + } else { bytes = file.getBytes(); } } @@ -216,7 +219,8 @@ class FormZuulServletProxyApplication { .properties("zuul.routes.simple:/zuul/simple/**", "zuul.routes.direct.url:http://localhost:9999", "zuul.routes.direct.path:/zuul/direct/**", - "multipart.maxFileSize:4096MB", "multipart.maxRequestSize:4096MB") + "multipart.maxFileSize:4096MB", + "multipart.maxRequestSize:4096MB") .run(args); } @@ -226,7 +230,7 @@ class FormZuulServletProxyApplication { @Configuration class ServletFormRibbonClientConfiguration { - @Value("${local.server.port}") + @LocalServerPort private int port; @Bean diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/RetryableZuulProxyApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/RetryableZuulProxyApplicationTests.java index 91d80bdb..ff1bdc8f 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/RetryableZuulProxyApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/RetryableZuulProxyApplicationTests.java @@ -6,8 +6,8 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -37,14 +37,18 @@ import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = RetryableZuulProxyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, value = { - "zuul.routes.simple.path: /simple/**", "zuul.routes.simple.retryable: true", - "ribbon.OkToRetryOnAllOperations: true" }) +@SpringBootTest( + classes = RetryableZuulProxyApplication.class, + webEnvironment = WebEnvironment.RANDOM_PORT, + value = { + "zuul.routes.simple.path: /simple/**", + "zuul.routes.simple.retryable: true", + "ribbon.OkToRetryOnAllOperations: true"}) @DirtiesContext public class RetryableZuulProxyApplicationTests { - @Value("${local.server.port}") - private int port; + @Autowired + private TestRestTemplate testRestTemplate; @Autowired @SuppressWarnings("unused") @@ -55,7 +59,7 @@ public class RetryableZuulProxyApplicationTests { private RoutesEndpoint endpoint; @Before - public void setTestRequestcontext() { + public void setTestRequestContext() { RequestContext context = new RequestContext(); RequestContext.testSetCurrentContext(context); } @@ -66,10 +70,9 @@ public class RetryableZuulProxyApplicationTests { form.set("foo", "bar"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - ResponseEntity result = new TestRestTemplate().exchange( - "http://localhost:" + this.port + "/simple", HttpMethod.POST, - new HttpEntity>(form, headers), - String.class); + ResponseEntity result = testRestTemplate.exchange( + "/simple", HttpMethod.POST, + new HttpEntity<>(form, headers), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Posted! {foo=[bar]}", result.getBody()); } @@ -120,7 +123,7 @@ class RetryableZuulProxyApplication { @Configuration class RetryableRibbonClientConfiguration { - @Value("${local.server.port}") + @LocalServerPort private int port; @Bean diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ServletPathZuulProxyApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ServletPathZuulProxyApplicationTests.java index eb14d911..e9666ad8 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ServletPathZuulProxyApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ServletPathZuulProxyApplicationTests.java @@ -19,14 +19,13 @@ package org.springframework.cloud.netflix.zuul; import static org.junit.Assert.assertEquals; import java.net.URI; -import java.net.URISyntaxException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -34,6 +33,7 @@ import org.springframework.cloud.netflix.zuul.filters.ZuulProperties.ZuulRoute; import org.springframework.cloud.netflix.zuul.filters.discovery.DiscoveryClientRouteLocator; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.RequestEntity; @@ -45,19 +45,23 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestClientException; import com.netflix.zuul.context.RequestContext; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = ServletPathZuulProxyApplicationTests.ServletPathZuulProxyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, value = { - "server.port: 0", "server.servletPath: /app" }) +@SpringBootTest( + classes = ServletPathZuulProxyApplicationTests.ServletPathZuulProxyApplication.class, + webEnvironment = WebEnvironment.RANDOM_PORT, + value = {"server.servletPath: /app"}) @DirtiesContext public class ServletPathZuulProxyApplicationTests { - @Value("${local.server.port}") + @LocalServerPort private int port; + @Autowired + private TestRestTemplate testRestTemplate; + @Autowired private DiscoveryClientRouteLocator routes; @@ -65,47 +69,62 @@ public class ServletPathZuulProxyApplicationTests { private RoutesEndpoint endpoint; @Before - public void setTestRequestcontext() { + public void setTestRequestContext() { RequestContext context = new RequestContext(); RequestContext.testSetCurrentContext(context); } @Test public void getOnSelfViaSimpleHostRoutingFilter() { - this.routes.addRoute("/self/**", "http://localhost:" + this.port + "/app/local"); + this.routes.addRoute("/self/**", + "http://localhost:" + this.port + "/app/local"); this.endpoint.reset(); - ResponseEntity result = new TestRestTemplate().exchange("http://localhost:" + this.port + "/app/self/1", - HttpMethod.GET, new HttpEntity<>((Void) null), String.class); + ResponseEntity result = testRestTemplate.exchange( + "/app/self/1", HttpMethod.GET, + new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Gotten 1!", result.getBody()); } @Test public void optionsOnRawEndpoint() throws Exception { - ResponseEntity result = new TestRestTemplate().exchange(RequestEntity - .options(new URI("http://localhost:" + this.port + "/app/local/1")) - .header("Origin", "http://localhost:9000").header("Access-Control-Request-Method", "GET").build(), + ResponseEntity result = testRestTemplate.exchange( + RequestEntity + .options(new URI("/app/local/1")) + .header("Origin", "http://localhost:9000") + .header("Access-Control-Request-Method", "GET") + .build(), String.class); + HttpHeaders httpHeaders = result.getHeaders(); + assertEquals(HttpStatus.OK, result.getStatusCode()); - assertEquals("http://localhost:9000", result.getHeaders().getFirst("Access-Control-Allow-Origin")); + assertEquals("http://localhost:9000", httpHeaders.getFirst("Access-Control-Allow-Origin")); } @Test public void optionsOnSelf() throws Exception { - this.routes.addRoute("/self/**", "http://localhost:" + this.port + "/app/local"); + this.routes.addRoute("/self/**", + "http://localhost:" + this.port + "/app/local"); this.endpoint.reset(); - ResponseEntity result = new TestRestTemplate().exchange(RequestEntity - .options(new URI("http://localhost:" + this.port + "/app/self/1")) - .header("Origin", "http://localhost:9000").header("Access-Control-Request-Method", "GET").build(), + ResponseEntity result = testRestTemplate.exchange( + RequestEntity + .options(new URI("/app/self/1")) + .header("Origin", "http://localhost:9000") + .header("Access-Control-Request-Method", "GET") + .build(), String.class); + HttpHeaders httpHeaders = result.getHeaders(); + assertEquals(HttpStatus.OK, result.getStatusCode()); - assertEquals("http://localhost:9000", result.getHeaders().getFirst("Access-Control-Allow-Origin")); + assertEquals("http://localhost:9000", httpHeaders.getFirst("Access-Control-Allow-Origin")); } @Test public void contentOnRawEndpoint() throws Exception { - ResponseEntity result = new TestRestTemplate().exchange( - RequestEntity.get(new URI("http://localhost:" + this.port + "/app/local/1")).build(), String.class); + ResponseEntity result = testRestTemplate.exchange( + RequestEntity + .get(new URI("/app/local/1")) + .build(), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Gotten 1!", result.getBody()); } @@ -115,8 +134,9 @@ public class ServletPathZuulProxyApplicationTests { this.routes.addRoute(new ZuulRoute("strip", "/strip/**", "strip", "http://localhost:" + this.port + "/app/local", false, false, null)); this.endpoint.reset(); - ResponseEntity result = new TestRestTemplate().exchange("http://localhost:" + this.port + "/app/strip", - HttpMethod.GET, new HttpEntity<>((Void) null), String.class); + ResponseEntity result = testRestTemplate.exchange( + "/app/strip", HttpMethod.GET, + new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); // Prefix not stripped to it goes to /local/strip assertEquals("Gotten strip!", result.getBody()); diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java index 591b5d03..e5e735f6 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulProxyApplicationTests.java @@ -16,7 +16,7 @@ package org.springframework.cloud.netflix.zuul; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import java.net.URI; import java.net.URISyntaxException; @@ -28,8 +28,8 @@ import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -49,14 +49,19 @@ import org.springframework.web.bind.annotation.RestController; import com.netflix.zuul.context.RequestContext; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = SimpleZuulProxyApplicationTests.SimpleZuulProxyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, value = { - "server.port: 0", "zuul.forceOriginalQueryStringEncoding: true" }) +@SpringBootTest( + classes = SimpleZuulProxyApplicationTests.SimpleZuulProxyApplication.class, + webEnvironment = WebEnvironment.RANDOM_PORT, + value = {"zuul.forceOriginalQueryStringEncoding: true"}) @DirtiesContext public class SimpleZuulProxyApplicationTests { - @Value("${local.server.port}") + @LocalServerPort private int port; + @Autowired + private TestRestTemplate testRestTemplate; + @Autowired private DiscoveryClientRouteLocator routes; @@ -64,7 +69,7 @@ public class SimpleZuulProxyApplicationTests { private RoutesEndpoint endpoint; @Before - public void setTestRequestcontext() { + public void setTestRequestContext() { RequestContext context = new RequestContext(); RequestContext.testSetCurrentContext(context); @@ -111,23 +116,23 @@ public class SimpleZuulProxyApplicationTests { @Ignore public void getOnSelfWithComplexQueryParam() throws URISyntaxException { String encodedQueryString = "foo=%7B%22project%22%3A%22stream%22%2C%22logger%22%3A%22javascript%22%2C%22platform%22%3A%22javascript%22%2C%22request%22%3A%7B%22url%22%3A%22https%3A%2F%2Ffoo%2Fadmin"; - ResponseEntity result = new TestRestTemplate().exchange( - new URI("http://localhost:" + this.port + "/foo?" + encodedQueryString), - HttpMethod.GET, new HttpEntity<>((Void) null), String.class); + ResponseEntity result = testRestTemplate.exchange( + new URI("/foo?" + encodedQueryString), HttpMethod.GET, + new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(encodedQueryString, result.getBody()); } private void assertResponseCodeAndBody(ResponseEntity result, - String expectedBody) { + String expectedBody) { assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(expectedBody, result.getBody()); } private ResponseEntity executeSimpleRequest(HttpMethod httpMethod) { - ResponseEntity result = new TestRestTemplate().exchange( - "http://localhost:" + this.port + "/foo?id=bar", httpMethod, + ResponseEntity result = testRestTemplate.exchange( + "/foo?id=bar", httpMethod, new HttpEntity<>((Void) null), String.class); return result; } @@ -144,7 +149,7 @@ public class SimpleZuulProxyApplicationTests { return "get " + id; } - @RequestMapping(value = "/bar", method = RequestMethod.GET, params = { "foo" }) + @RequestMapping(value = "/bar", method = RequestMethod.GET, params = {"foo"}) public String complexGet(@RequestParam String foo, HttpServletRequest request) { return request.getQueryString(); } diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulServerApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulServerApplicationTests.java index 3ad939f0..0a5d865e 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulServerApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulServerApplicationTests.java @@ -23,9 +23,9 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -45,13 +45,18 @@ import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = SimpleZuulServerApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT) +@SpringBootTest( + classes = SimpleZuulServerApplication.class, + webEnvironment = WebEnvironment.RANDOM_PORT) @DirtiesContext public class SimpleZuulServerApplicationTests { - @Value("${local.server.port}") + @LocalServerPort private int port; + @Autowired + private TestRestTemplate testRestTemplate; + @Autowired private RouteLocator routes; @@ -60,7 +65,7 @@ public class SimpleZuulServerApplicationTests { } @Before - public void setTestRequestcontext() { + public void setTestRequestContext() { RequestContext context = new RequestContext(); RequestContext.testSetCurrentContext(context); } @@ -72,18 +77,18 @@ public class SimpleZuulServerApplicationTests { @Test public void getOnSelf() { - ResponseEntity result = new TestRestTemplate().exchange( - "http://localhost:" + this.port + "/", HttpMethod.GET, - new HttpEntity((Void) null), String.class); + ResponseEntity result = testRestTemplate.exchange( + "/", HttpMethod.GET, + new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Hello world", result.getBody()); } @Test public void getOnSelfViaFilter() { - ResponseEntity result = new TestRestTemplate().exchange( - "http://localhost:" + this.port + "/testing123/1", HttpMethod.GET, - new HttpEntity((Void) null), String.class); + ResponseEntity result = testRestTemplate.exchange( + "/testing123/1", HttpMethod.GET, + new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); } diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ZuulProxyConfigurationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ZuulProxyConfigurationTests.java index 88745b59..3779da11 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ZuulProxyConfigurationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/ZuulProxyConfigurationTests.java @@ -17,6 +17,11 @@ package org.springframework.cloud.netflix.zuul; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; + import org.junit.Test; import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.boot.test.util.EnvironmentTestUtils; @@ -29,11 +34,6 @@ import org.springframework.cloud.netflix.zuul.filters.route.okhttp.OkHttpRibbonC import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; -import static org.mockito.Mockito.mock; - /** * @author Spencer Gibb */ @@ -66,7 +66,7 @@ public class ZuulProxyConfigurationTests { } context.refresh(); RibbonCommandFactory factory = context.getBean(RibbonCommandFactory.class); - assertThat("RibbonCommandFactory is wrong type for property: "+property, factory, is(instanceOf(clientType))); + assertThat("RibbonCommandFactory is wrong type for property: " + property, factory, is(instanceOf(clientType))); context.close(); }