@Test public void uriBuilder() { this.builder.build().get() .uri(builder -> builder.path("/path").queryParam("q", "12").build()) .exchange(); ClientRequest request = verifyAndGetRequest(); assertEquals("/base/path?q=12", request.url().toString()); verifyNoMoreInteractions(this.exchangeFunction); }
@Test public void baseUriWithPathOverride() { DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory("http://foo.com/v1"); URI uri = factory.builder().replacePath("/baz").build(); assertEquals("http://foo.com/baz", uri.toString()); }
public URI expand(String uriTemplate, Map<String, ?> uriVars) { return uriString(uriTemplate).build(uriVars); }
protected ReactiveHttpRequest buildRequest(Object[] argv) { Map<String, ?> substitutionsMap = methodMetadata.indexToName().entrySet().stream() .flatMap(e -> e.getValue().stream() .map(v -> new AbstractMap.SimpleImmutableEntry<>(e.getKey(), v))) .collect(Collectors.toMap(Map.Entry::getValue, entry -> argv[entry.getKey()])); HttpMethod method = HttpMethod.resolve(methodMetadata.template().method()); URI uri = defaultUriBuilderFactory.uriString(methodMetadata.template().url()) .queryParams(parameters(argv)).build(substitutionsMap); return new ReactiveHttpRequest(method, uri, headers(argv, substitutionsMap), body(argv)); }
public URI expand(String uriTemplate, Object... uriVars) { return uriString(uriTemplate).build(uriVars); }
@Bean RouterFunction<ServerResponse> routes() { return route(POST("/api/v1/register-guest"), request -> { final String uuid = UUID.randomUUID().toString(); final URI uri = request.uriBuilder() .path(uuid) .build(); return created(uri).body(request.bodyToMono(Map.class) .map(map -> map.get("name")) .map(name -> { log.info("create user {}", name); return ""; }).subscribeOn(Schedulers.elastic()), String.class); }) ; } }
@Test public void changeUriWorkWithCustomLogic() { testClient.get() .uri(b -> b.path("/") .queryParam("url", "http://localhost:" + port + "/actuator/health") .build()) .header("Host", "www.changeuri.org").exchange().expectBody(JsonNode.class) .consumeWith(r -> assertThat(r.getResponseBody().has("status")).isTrue()); }
public URI expand(String uriTemplate, Map<String, ?> uriVars) { return uriString(uriTemplate).build(uriVars); }
@Test public void uriBuilderWithPathOverride() { this.builder.build().get() .uri(builder -> builder.replacePath("/path").build()) .exchange(); ClientRequest request = verifyAndGetRequest(); assertEquals("/path", request.url().toString()); verifyNoMoreInteractions(this.exchangeFunction); }
builder = builder.path(request.getEndpoint()); builder = builder.queryParam(entry.getKey(), entry.getValue()); return builder.build();
public URI expand(String uriTemplate, Object... uriVars) { return uriString(uriTemplate).build(uriVars); }
requestDefinition.getRequestPath().ifPresent(path -> ub.path(path)); requestDefinition.getQueryParameters().forEach((n, v) -> ub.queryParam(n, v)); return ub.build(requestDefinition.getTemplateParameters()); }).headers(headers -> {
@Test public void encodeTemplateAndValues() { DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(); factory.setEncodingMode(EncodingMode.TEMPLATE_AND_VALUES); UriBuilder uriBuilder = factory.uriString("/hotel list/{city} specials?q={value}"); String expected = "/hotel%20list/Z%C3%BCrich%20specials?q=a%2Bb"; Map<String, Object> vars = new HashMap<>(); vars.put("city", "Z\u00fcrich"); vars.put("value", "a+b"); assertEquals(expected, uriBuilder.build("Z\u00fcrich", "a+b").toString()); assertEquals(expected, uriBuilder.build(vars).toString()); }
@Test public void testGetRequest() throws Exception { String variablesJson = "{\"variable\":\"variableValue\"}"; String variablesValue = URLEncoder.encode(variablesJson, "UTF-8"); String query = "query myQuery {foo}"; String queryString = URLEncoder.encode(query, "UTF-8"); String operationName = "myQuery"; ExecutionResultImpl executionResult = ExecutionResultImpl.newExecutionResult() .data("bar") .build(); CompletableFuture cf = CompletableFuture.completedFuture(executionResult); ArgumentCaptor<ExecutionInput> captor = ArgumentCaptor.forClass(ExecutionInput.class); Mockito.when(graphql.executeAsync(captor.capture())).thenReturn(cf); client.get().uri(uriBuilder -> uriBuilder.path("/graphql") .queryParam("variables", variablesValue) .queryParam("query", queryString) .queryParam("operationName", operationName) .build(variablesJson, queryString)) .accept(MediaType.APPLICATION_JSON_UTF8) .exchange() .expectStatus().isOk() .expectBody() .jsonPath("data").isEqualTo("bar"); assertThat(captor.getAllValues().size(), is(1)); Map<String, Object> variables = new LinkedHashMap<>(); variables.put("variable", "variableValue"); assertThat(captor.getValue().getQuery(), is(query)); assertThat(captor.getValue().getVariables(), is(variables)); assertThat(captor.getValue().getOperationName(), is(operationName)); }
@Test public void encodingValuesOnly() { DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(); factory.setEncodingMode(EncodingMode.VALUES_ONLY); UriBuilder uriBuilder = factory.uriString("/foo/a%2Fb/{id}"); String id = "c/d"; String expected = "/foo/a%2Fb/c%2Fd"; assertEquals(expected, uriBuilder.build(id).toString()); assertEquals(expected, uriBuilder.build(singletonMap("id", id)).toString()); }
@Test public void testSimpleGetRequest() throws Exception { String query = "{foo}"; String queryString = URLEncoder.encode(query, "UTF-8"); ExecutionResultImpl executionResult = ExecutionResultImpl.newExecutionResult() .data("bar") .build(); CompletableFuture cf = CompletableFuture.completedFuture(executionResult); ArgumentCaptor<ExecutionInput> captor = ArgumentCaptor.forClass(ExecutionInput.class); Mockito.when(graphql.executeAsync(captor.capture())).thenReturn(cf); client.get().uri(uriBuilder -> uriBuilder.path("/graphql") .queryParam("query", queryString) .build()) .accept(MediaType.APPLICATION_JSON_UTF8) .exchange() .expectStatus().isOk() .expectBody() .jsonPath("data").isEqualTo("bar"); assertThat(captor.getAllValues().size(), is(1)); assertThat(captor.getValue().getQuery(), is(query)); }
@Test public void encodingNone() { DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(); factory.setEncodingMode(EncodingMode.NONE); UriBuilder uriBuilder = factory.uriString("/foo/a%2Fb/{id}"); String id = "c%2Fd"; String expected = "/foo/a%2Fb/c%2Fd"; assertEquals(expected, uriBuilder.build(id).toString()); assertEquals(expected, uriBuilder.build(singletonMap("id", id)).toString()); }
@Test public void defaultSettings() { DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(); URI uri = factory.uriString("/foo/{id}").build("a/b"); assertEquals("/foo/a%2Fb", uri.toString()); }