@Test(groups = "online") public void asyncOptionsTest() throws Throwable { withClient().run(client -> withServer(server).run(server -> { final AtomicReference<HttpHeaders> responseHeaders = new AtomicReference<>(); final String[] expected = {"GET", "HEAD", "OPTIONS", "POST"}; Future<String> f = client.prepareOptions("http://www.apache.org/").execute(new AsyncHandlerAdapter() { @Override public State onHeadersReceived(HttpHeaders headers) { responseHeaders.set(headers); return State.ABORT; } @Override public String onCompleted() { return "OK"; } }); f.get(20, TimeUnit.SECONDS); HttpHeaders h = responseHeaders.get(); assertNotNull(h); String[] values = h.get(ALLOW).split(",|, "); assertNotNull(values); assertEquals(values.length, expected.length); Arrays.sort(values); assertEquals(values, expected); })); }
@Test public void optionsIsSupported() throws Throwable { withClient().run(client -> withServer(server).run(server -> { server.enqueueEcho(); Response response = client.prepareOptions(getTargetUrl()).execute().get(); assertEquals(response.getStatusCode(), 200); assertEquals(response.getHeader("Allow"), "GET,HEAD,POST,OPTIONS,TRACE"); })); }