From 0704f177bfd4e9641f25180c4873c31d3e6d1786 Mon Sep 17 00:00:00 2001 From: eson <474420502@qq.com> Date: Mon, 3 Jun 2019 02:24:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E6=B2=A1=E6=89=BE=E5=88=B0httpserver?= =?UTF-8?q?=20=E5=90=AF=E5=8A=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 + .../gateway/filters/TokenFilterTests.java | 19 +++- .../ocean/gateway/routes/BusinessTests.java | 91 ++++++++++++++++++- 3 files changed, 108 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index a428a6f..04002c8 100644 --- a/pom.xml +++ b/pom.xml @@ -206,6 +206,10 @@ + + + + \ No newline at end of file diff --git a/src/test/java/ocean/gateway/filters/TokenFilterTests.java b/src/test/java/ocean/gateway/filters/TokenFilterTests.java index 0c40b8f..c13cb70 100644 --- a/src/test/java/ocean/gateway/filters/TokenFilterTests.java +++ b/src/test/java/ocean/gateway/filters/TokenFilterTests.java @@ -1,7 +1,9 @@ package ocean.gateway.filters; import java.lang.reflect.Field; +import java.time.Duration; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +17,7 @@ import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.util.Assert; import ocean.gateway.service.ServiceApplication; @@ -32,17 +35,25 @@ public class TokenFilterTests { @Autowired private TestRestTemplate restTemplate ; + private WebTestClient requests; + + String baseUri; + + @Before + public void setup() { + baseUri = "http://localhost:" + randomServerPort; + } + @Test public void GetHelloWithoutToken() { - ResponseEntity response = restTemplate.getForEntity("http://127.0.0.1:" + randomServerPort +"/hello", String.class); + + ResponseEntity response = restTemplate.getForEntity(baseUri +"/hello", String.class); Assert.notNull(response, "The class must not be null"); Assert.state(response.getStatusCode() == HttpStatus.UNAUTHORIZED, "response.getStatusCode() must be HttpStatus.UNAUTHORIZED"); } @Test public void GetHelloWithToken() { - String uri = "http://127.0.0.1:" + randomServerPort +"/hello"; - HttpHeaders headers = new HttpHeaders(); String key = TokenFilter.TEST_TOKEN; @@ -50,7 +61,7 @@ public class TokenFilterTests { HttpEntity entity = new HttpEntity<>("", headers); - ResponseEntity response = restTemplate.exchange(uri, HttpMethod.GET, entity, String.class); + ResponseEntity response = restTemplate.exchange(baseUri + "/hello", HttpMethod.GET, entity, String.class); Assert.notNull(response, "The class must not be null"); Assert.state(response.getStatusCode() != HttpStatus.UNAUTHORIZED, "response.getStatusCode() must not be HttpStatus.UNAUTHORIZED"); } diff --git a/src/test/java/ocean/gateway/routes/BusinessTests.java b/src/test/java/ocean/gateway/routes/BusinessTests.java index 75b488a..cc03bcb 100644 --- a/src/test/java/ocean/gateway/routes/BusinessTests.java +++ b/src/test/java/ocean/gateway/routes/BusinessTests.java @@ -1,27 +1,114 @@ package ocean.gateway.routes; +import static org.junit.Assert.assertThat; + +import java.net.URI; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.cloud.gateway.route.Route; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.server.reactive.HttpHandler; +import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.util.Assert; +import org.springframework.web.reactive.function.server.RouterFunction; +import org.springframework.web.reactive.function.server.RouterFunctions; import lombok.extern.slf4j.Slf4j; import ocean.gateway.service.ServiceApplication; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.netty.DisposableServer; +import reactor.netty.http.server.HttpServer; +import reactor.netty.http.server.HttpServerRequest; @RunWith(SpringRunner.class) -@SpringBootTest(classes = {ServiceApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@SpringBootTest(classes = { ServiceApplication.class }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class BusinessTests { - + + // @RestController + // @RequestMapping(value = "/my") + // public class MyController { + // @RequestMapping(value = "/integration/{name}", method = RequestMethod.GET) + // public String integrationTest(@PathVariable String name) { + // return "name:" + name; + // } + // } + + public HttpServer server; + private String serverPort; + DisposableServer ds; + + // @BeforeClass + // public void setup(){ + // serverPort = "3023"; + // server = HttpServer.create().host("http://localhost").port(3023); + // server.route(routes -> routes.get("/test123", (req, res) -> res.sendString(Flux.just("test123")))); + // ds = server.bind().block(); + + // System.out.println("123"); + // } + + // @AfterClass + // public void stop() { + // if(server != null) { + // ds.dispose(); + // } + // } + + @Autowired + private TestRestTemplate restTemplate ; + @Test public void TestRouteLocator() { + serverPort = "3023"; + server = HttpServer.create().host("http://localhost").port(3023); + server.route(routes -> routes.get("/test123", (req, res) -> res.sendString(Flux.just("test123")))); + server.bind().block(); + + String baseUri = "http://127.0.0.1:3023"; + + + ResponseEntity response = restTemplate.getForEntity(baseUri +"/test123", String.class); + Assert.notNull(response, "The class must not be null"); + Assert.state(response.getStatusCode() == HttpStatus.UNAUTHORIZED, "response.getStatusCode() must be HttpStatus.UNAUTHORIZED"); } + + + // @Configuration + // public class HttpServerConfig { + // @Autowired + // private Environment environment; + // private String serverPort; + // @Bean + // public HttpServer httpServer() { + // HttpServer server = HttpServer.create().host("http://localhost:" + serverPort); + // server.handle((req, res) -> res.sendString(Flux.just("HelloTest"))); + // return server; + // } + // } + + + + }