Commit 8fb85f26 by Spencer Gibb

add a test to make sure that proxy paths with /another/level/** works

parent 3d91dae0
...@@ -33,7 +33,7 @@ public class ProxyRouteLocator implements RouteLocator { ...@@ -33,7 +33,7 @@ public class ProxyRouteLocator implements RouteLocator {
private AtomicReference<Map<String, ZuulRoute>> routes = new AtomicReference<>(); private AtomicReference<Map<String, ZuulRoute>> routes = new AtomicReference<>();
private Map<String, ZuulRoute> staticRoutes = new LinkedHashMap<String, ZuulRoute>(); private Map<String, ZuulRoute> staticRoutes = new LinkedHashMap<>();
public ProxyRouteLocator(DiscoveryClient discovery, ZuulProperties properties) { public ProxyRouteLocator(DiscoveryClient discovery, ZuulProperties properties) {
this.discovery = discovery; this.discovery = discovery;
...@@ -61,7 +61,7 @@ public class ProxyRouteLocator implements RouteLocator { ...@@ -61,7 +61,7 @@ public class ProxyRouteLocator implements RouteLocator {
routes.set(locateRoutes()); routes.set(locateRoutes());
} }
Map<String, String> values = new LinkedHashMap<String, String>(); Map<String, String> values = new LinkedHashMap<>();
for (String key : routes.get().keySet()) { for (String key : routes.get().keySet()) {
String url = key; String url = key;
......
...@@ -14,6 +14,7 @@ import org.springframework.boot.test.IntegrationTest; ...@@ -14,6 +14,7 @@ import org.springframework.boot.test.IntegrationTest;
import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.boot.test.TestRestTemplate; import org.springframework.boot.test.TestRestTemplate;
import org.springframework.cloud.netflix.ribbon.RibbonClient; import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.netflix.ribbon.RibbonClients;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
...@@ -38,6 +39,7 @@ import com.netflix.zuul.ZuulFilter; ...@@ -38,6 +39,7 @@ import com.netflix.zuul.ZuulFilter;
@WebAppConfiguration @WebAppConfiguration
@IntegrationTest({ "server.port: 0", @IntegrationTest({ "server.port: 0",
"zuul.routes.other: /test/**=http://localhost:7777/local", "zuul.routes.other: /test/**=http://localhost:7777/local",
"zuul.routes.another: /another/twolevel/**",
"zuul.routes.simple: /simple/**" }) "zuul.routes.simple: /simple/**" })
@DirtiesContext @DirtiesContext
public class SampleZuulProxyApplicationTests { public class SampleZuulProxyApplicationTests {
...@@ -65,7 +67,7 @@ public class SampleZuulProxyApplicationTests { ...@@ -65,7 +67,7 @@ public class SampleZuulProxyApplicationTests {
public void getOnSelfViaRibbonRoutingFilter() { public void getOnSelfViaRibbonRoutingFilter() {
ResponseEntity<String> result = new TestRestTemplate().exchange( ResponseEntity<String> result = new TestRestTemplate().exchange(
"http://localhost:" + port + "/simple/local/1", HttpMethod.GET, "http://localhost:" + port + "/simple/local/1", HttpMethod.GET,
new HttpEntity<Void>((Void) null), String.class); new HttpEntity<>((Void) null), String.class);
assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals("Gotten!", result.getBody()); assertEquals("Gotten!", result.getBody());
} }
...@@ -76,7 +78,7 @@ public class SampleZuulProxyApplicationTests { ...@@ -76,7 +78,7 @@ public class SampleZuulProxyApplicationTests {
endpoint.reset(); endpoint.reset();
ResponseEntity<String> result = new TestRestTemplate().exchange( ResponseEntity<String> result = new TestRestTemplate().exchange(
"http://localhost:" + port + "/self/1", HttpMethod.DELETE, "http://localhost:" + port + "/self/1", HttpMethod.DELETE,
new HttpEntity<Void>((Void) null), String.class); new HttpEntity<>((Void) null), String.class);
assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals("Deleted!", result.getBody()); assertEquals("Deleted!", result.getBody());
} }
...@@ -85,10 +87,18 @@ public class SampleZuulProxyApplicationTests { ...@@ -85,10 +87,18 @@ public class SampleZuulProxyApplicationTests {
public void testNotFound() { public void testNotFound() {
ResponseEntity<String> result = new TestRestTemplate().exchange( ResponseEntity<String> result = new TestRestTemplate().exchange(
"http://localhost:" + port + "/myinvalidpath", HttpMethod.GET, "http://localhost:" + port + "/myinvalidpath", HttpMethod.GET,
new HttpEntity<Void>((Void) null), String.class); new HttpEntity<>((Void) null), String.class);
assertEquals(HttpStatus.NOT_FOUND, result.getStatusCode()); assertEquals(HttpStatus.NOT_FOUND, result.getStatusCode());
} }
@Test
public void getSecondLevel() {
ResponseEntity<String> result = new TestRestTemplate().exchange(
"http://localhost:" + port + "/another/twolevel/local/1", HttpMethod.GET,
new HttpEntity<>((Void) null), String.class);
assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals("Gotten!", result.getBody());
}
} }
//Don't use @SpringBootApplication because we don't want to component scan //Don't use @SpringBootApplication because we don't want to component scan
...@@ -96,7 +106,10 @@ public class SampleZuulProxyApplicationTests { ...@@ -96,7 +106,10 @@ public class SampleZuulProxyApplicationTests {
@EnableAutoConfiguration @EnableAutoConfiguration
@RestController @RestController
@EnableZuulProxy @EnableZuulProxy
@RibbonClient(name = "simple", configuration = SimpleRibbonClientConfiguration.class) @RibbonClients({
@RibbonClient(name = "simple", configuration = SimpleRibbonClientConfiguration.class),
@RibbonClient(name = "another", configuration = AnotherRibbonClientConfiguration.class)
})
class SampleZuulProxyApplication { class SampleZuulProxyApplication {
@RequestMapping("/testing123") @RequestMapping("/testing123")
...@@ -166,3 +179,13 @@ class SimpleRibbonClientConfiguration { ...@@ -166,3 +179,13 @@ class SimpleRibbonClientConfiguration {
return balancer; return balancer;
} }
} }
@Configuration
class AnotherRibbonClientConfiguration {
@Bean
public ILoadBalancer ribbonLoadBalancer(EurekaInstanceConfig instance) {
BaseLoadBalancer balancer = new BaseLoadBalancer();
balancer.setServersList(Arrays.asList(new Server("localhost", instance
.getNonSecurePort())));
return balancer;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment