@Override public QueryParameter queryParameter(String key) { return styxRequest.queryParam(key) .map(value -> new QueryParameter(key, ImmutableList.of(value))) .orElseGet(() -> QueryParameter.absent(key)); }
@Test public void returnsEmptyListWhenThereIsNoSuchParameter() { HttpRequest req = get("http://host.com:8080/path?poisson=cabillaud").build(); assertThat(req.queryParams("fish"), is(emptyIterable())); assertThat(req.queryParam("fish"), isAbsent()); }
@Test public void alwaysReturnsEmptyListWhenThereIsNoQueryString() { HttpRequest req = get("http://host.com:8080/path").build(); assertThat(req.queryParams("fish"), is(emptyIterable())); assertThat(req.queryParam("fish"), isAbsent()); }
@Test public void extractsSingleQueryParameter() { HttpRequest req = get("http://host.com:8080/path?fish=cod&fruit=orange") .build(); assertThat(req.queryParam("fish"), isValue("cod")); }
@Test public void createsARequestWithDefaultValues() { HttpRequest request = get("/index").build(); assertThat(request.version(), is(HTTP_1_1)); assertThat(request.url().toString(), is("/index")); assertThat(request.path(), is("/index")); assertThat(request.id(), is(notNullValue())); assertThat(request.cookies(), is(emptyIterable())); assertThat(request.headers(), is(emptyIterable())); assertThat(request.headers("any"), is(emptyIterable())); assertThat(request.body().length, is(0)); assertThat(request.cookie("any"), isAbsent()); assertThat(request.header("any"), isAbsent()); assertThat(request.keepAlive(), is(true)); assertThat(request.method(), is(GET)); assertThat(request.queryParam("any"), isAbsent()); assertThat(request.queryParams("any"), is(emptyIterable())); }
@Test public void decodesQueryParams() { HttpRequest request = get("http://example.com/?foo=bar").build(); assertThat(request.queryParam("foo"), isValue("bar")); }
@Test public void decodesQueryParamsContainingEncodedEquals() { HttpRequest request = get("http://example.com/?foo=a%2Bb%3Dc") .build(); assertThat(request.queryParam("foo"), isValue("a+b=c")); }