@Test public void handle_multipart_post() throws Exception { final String data = "person: Ed Shryane\n" + "address: Ripe NCC Singel 258\n" + "phone: +31-61238-2827\n" + "nic-hdl: ES222-RIPE\n" + "mnt-by: TEST-DBM-MNT\n" + "changed: [email protected] 20120829\n" + "source: test\n" + "remarks: something\n" + "override: password"; final String help = null; final String nnew = null; final String diff = null; final String redirect = null; final String source = "test"; subject.doMultipartPost(request, source, data, help, nnew, diff, redirect); verify(messageHandler) .handle( argThat( new ArgumentMatcher<UpdateRequest>() { @Override public boolean matches(final Object argument) { UpdateRequest updateRequest = (UpdateRequest) argument; assertThat(updateRequest.getKeyword(), is(Keyword.NONE)); assertThat(updateRequest.getUpdateMessage(), is(data)); return true; } }), any(UpdateContext.class)); }
@Test public void handle_only_diff_parameter() throws Exception { final String data = null; final String help = null; final String nnew = null; final String diff = "YES"; final String redirect = null; final String source = "test"; final String contentType = "UTF-8"; final Response response = subject.doGet(request, source, data, help, nnew, diff, redirect, contentType); assertThat(response.getStatus(), is(HttpURLConnection.HTTP_BAD_REQUEST)); assertThat(response.getEntity().toString(), is("Invalid request")); }
@Test public void handle_invalid_encoding() throws Exception { final String data = "person"; final String help = null; final String nnew = null; final String diff = null; final String redirect = null; final String source = "test"; final String contentType = "text/plain; charset=RGRFE"; final Response response = subject.doGet(request, source, data, help, nnew, diff, redirect, contentType); assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); assertThat(response.getEntity().toString(), is("OK")); }
@Test public void handle_redirect_not_allowed() throws Exception { final String data = "person"; final String help = null; final String nnew = null; final String diff = null; final String redirect = "YES"; final String source = "test"; final String contentType = "UTF-8"; final Response response = subject.doGet(request, source, data, help, nnew, diff, redirect, contentType); assertThat(response.getStatus(), is(HttpURLConnection.HTTP_FORBIDDEN)); assertThat( response.getEntity().toString(), is("Not allowed to disable notifications: 127.0.0.1")); }
@Test public void handle_redirect_allowed() throws Exception { final String data = "person"; final String help = null; final String nnew = null; final String diff = null; final String redirect = "YES"; final String source = "test"; final String contentType = "UTF-8"; when(ipRanges.isTrusted(any(Interval.class))).thenReturn(true); final Response response = subject.doGet(request, source, data, help, nnew, diff, redirect, contentType); assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); assertThat(response.getEntity().toString(), is("OK")); }
@Test public void handle_unauthorised() throws Exception { final String data = "person"; final String help = null; final String nnew = null; final String diff = null; final String redirect = null; final String source = "test"; final String contentType = "UTF-8"; when(messageHandler.handle(any(UpdateRequest.class), any(UpdateContext.class))) .thenReturn(new UpdateResponse(UpdateStatus.FAILED_AUTHENTICATION, "FAILED")); final Response response = subject.doGet(request, source, data, help, nnew, diff, redirect, contentType); assertThat(response.getStatus(), is(HttpURLConnection.HTTP_UNAUTHORIZED)); assertThat(response.getEntity().toString(), is("FAILED")); }
@Test public void handle_invalid_content_type() throws Exception { final String data = "person"; final String help = null; final String nnew = null; final String diff = null; final String redirect = null; final String source = "test"; final String contentType = "invalid"; final Response response = subject.doGet(request, source, data, help, nnew, diff, redirect, contentType); assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); assertThat(response.getEntity().toString(), is("OK")); List<Object> contentLengthResponse = response.getMetadata().get(HttpHeaders.CONTENT_TYPE); assertThat(contentLengthResponse.size(), is(1)); assertThat(contentLengthResponse.get(0).toString(), is("text/plain")); }
@Test public void content_type_and_content_length_in_response() throws Exception { final String data = "person"; final String help = null; final String nnew = null; final String diff = null; final String redirect = null; final String source = "test"; final String contentType = "text/plain; charset=US-ASCII"; final Response response = subject.doGet(request, source, data, help, nnew, diff, redirect, contentType); List<Object> contentLengthResponse = response.getMetadata().get(HttpHeaders.CONTENT_TYPE); assertThat(contentLengthResponse.size(), is(1)); assertThat(contentLengthResponse.get(0).toString(), is("text/plain")); List<Object> contentTypeResponse = response.getMetadata().get(HttpHeaders.CONTENT_LENGTH); assertThat(contentTypeResponse.size(), is(1)); assertThat(contentTypeResponse.get(0).toString(), is("2")); }
@Test public void throw_runtime_exception() throws Exception { try { final String data = "person"; final String help = null; final String nnew = null; final String diff = null; final String redirect = null; final String source = "test"; final String contentType = "UTF-8"; doThrow(new RuntimeException("some message", new IllegalStateException("some message"))) .when(messageHandler) .handle(any(UpdateRequest.class), any(UpdateContext.class)); subject.doGet(request, source, data, help, nnew, diff, redirect, contentType); fail(); } catch (RuntimeException e) { assertThat(e.getMessage(), is("some message")); } }