/******************************************************************************************************************* * * Resets all {@link Resettable}s. * ******************************************************************************************************************/ private void resetRequestResettables() { for (final RequestResettable requestResettable : requestResettables) { log.debug(">>>> resetting {} ...", requestResettable); requestResettable.requestReset(); } }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull public String postProcess (final @Nonnull String link) { try { final String parameterValue = parameterLanguageOverrideRequestProcessor.getParameterValue(); return postProcess(link, parameterValue); } catch (NotFoundException e) { return link; } }
@Override public ResponseBuilder response() { return new MockResponseBuilder(); } }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_output_NotModified_when_Etag_Matching() throws Exception { headers.put(HEADER_IF_NONE_MATCH, "\"1341242553456\""); final ResponseBuilder<?> builder = underTest.response().fromFile(resourceFile) .forRequest(request); assertContents(builder, "ResourceFileNotModifiedOutput.txt"); }
responseHolder = context.getBean(ResponseHolder.class); responseBuilder = context.getBean(ResponseBuilder.class); when(responseHolder.get()).thenReturn(response); when(responseHolder.response()).thenReturn(responseBuilder); when(responseBuilder.forException(any(NotFoundException.class))).thenReturn(responseBuilder); when(responseBuilder.forException(any(HttpStatusException.class))).thenReturn(responseBuilder); when(responseBuilder.forException(any(Throwable.class))).thenReturn(responseBuilder); when(responseBuilder.build()).thenReturn(response);
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_output_a_ResourceFile_with_ExpirationTime() throws Exception { final ResponseBuilder<?> builder = underTest.response().fromFile(resourceFile) .withExpirationTime(Duration.standardDays(7)); assertContents(builder, "ResourceFileOutputWithExpirationTime.txt"); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_output_an_internal_error() throws Exception { final IOException e = new IOException("foo bar"); final ResponseBuilder<?> builder = underTest.response().forException(e); assertContents(builder, "InternalErrorOutput.txt"); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_output_a_ResourceFile() throws Exception { final ResponseBuilder<?> builder = underTest.response().fromFile(resourceFile); assertContents(builder, "ResourceFileOutput.txt"); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_output_a_PermanentRedirect() throws Exception { final ResponseBuilder<?> builder = underTest.response().permanentRedirect("http://acme.com"); assertContents(builder, "PermanentRedirectOutput.txt"); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull public String createLink (final @Nonnull ResourcePath relativeUri) { final ResourcePath link = new ResourcePath(contextPath).appendedWith(relativeUri); String linkAsString = requestHolder.get().getBaseUrl() + link.asString(); for (final LinkPostProcessor linkPostProcessor : linkPostProcessors) { linkAsString = linkPostProcessor.postProcess(linkAsString); } return linkAsString; }
/******************************************************************************************************************* * ******************************************************************************************************************/ private void assertContents (final @Nonnull ResponseBuilder<?> builder, final String fileName) throws Exception { final File actualFile = new File("target/test-results/" + fileName); final File expectedFile = new File("src/test/resources/expected-results/" + fileName); actualFile.getParentFile().mkdirs(); Files.write((byte[])builder.build(), actualFile); FileComparisonUtils.assertSameContents(expectedFile, actualFile); }
@Test(dataProvider = "linkProvider") public void must_properly_postProcess (final @Nonnull String link, final @Nonnull String parameterValue, final @Nonnull String expectedResult) { final String result = underTest.postProcess(link, parameterValue); assertThat(result, is(expectedResult)); }
@BeforeMethod public void setupFixture() { context = new ClassPathXmlApplicationContext("ParameterLanguageOverrideLinkPostProcessorTestBeans.xml"); plorp = context.getBean(ParameterLanguageOverrideRequestProcessor.class); when(plorp.getParameterName()).thenReturn("lang"); underTest = context.getBean(ParameterLanguageOverrideLinkPostProcessor.class); }
@Test public void must_return_status_503_when_site_is_not_available() throws Exception { when(siteProvider.isSiteAvailable()).thenReturn(false); final Status result = underTest.process(request); final File actualFile = new File("target/test-artifacts/response.txt"); final File expectedFile = new File("src/test/resources/expected-results/response.txt"); actualFile.getParentFile().mkdirs(); Files.write(responseHolder.get(), actualFile); assertThat(result, is(Status.BREAK)); FileComparisonUtils.assertSameContents(expectedFile, actualFile); } }
@BeforeMethod public void setupFixture() { MockResponseBuilder.setCurrentTime(currentTime); underTest = context.getBean(AvailabilityEnforcerRequestProcessor.class); responseHolder = context.getBean(MockResponseHolder.class); request = mock(Request.class); when(request.getBaseUrl()).thenReturn("http://acme.com"); when(request.getOriginalRelativeUri()).thenReturn("/contextPath"); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Nonnull private static String toString (final @Nonnull DateTime dateTime) { return ResponseBuilderSupport.createFormatter(PATTERN_RFC1123).format(dateTime.toDate()); } }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_output_a_ResourceFile_when_Etag_not_Matching() throws Exception { headers.put(HEADER_IF_NONE_MATCH, "\"xxxx\""); final ResponseBuilder<?> builder = underTest.response().fromFile(resourceFile) .forRequest(request); assertContents(builder, "ResourceFileOutput.txt"); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_roperly_output_NotFound() throws Exception { final NotFoundException e = new NotFoundException("foo bar"); final ResponseBuilder<?> builder = underTest.response().forException(e); assertContents(builder, "NotFoundExceptionOutput.txt"); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_output_a_ResourceFile_when_IfModifiedSince_less_recent_than_ModifiedTime() throws Exception { for (int deltaSeconds = -10; deltaSeconds < 0; deltaSeconds++) { final DateTime ifModifiedSinceTime = resourceLatestModifiedTime.plusSeconds(deltaSeconds); headers.put(HEADER_IF_MODIFIED_SINCE, toString(ifModifiedSinceTime)); final ResponseBuilder<?> builder = underTest.response().fromFile(resourceFile) .forRequest(request); assertContents(builder, "ResourceFileOutput.txt"); } }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_output_NotModified_when_IfModifiedSince_more_recent_than_or_equal_to_ModifiedTime() throws Exception { // corner case: same time should return NotModified for (int deltaSeconds = 0; deltaSeconds < 10; deltaSeconds++) { final DateTime ifModifiedSinceTime = resourceLatestModifiedTime.plusSeconds(deltaSeconds); headers.put(HEADER_IF_MODIFIED_SINCE, toString(ifModifiedSinceTime)); final ResponseBuilder<?> builder = underTest.response().fromFile(resourceFile) .forRequest(request); assertContents(builder, "ResourceFileNotModifiedOutput.txt"); } }