package com.processpuzzle.application.configuration.control; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import org.junit.Test; import com.processpuzzle.application.control.control.CommandControllerErrorHelper; import com.processpuzzle.application.domain.ApplicationException; import com.processpuzzle.litest.template.FilterTestTemplate; import com.processpuzzle.sharedfixtures.webtier.WebTierTestConfiguration; public class ApplicationErrorFilterTest extends FilterTestTemplate<ApplicationErrorFilter, ApplicationErrorFilterTestFixture>{ public ApplicationErrorFilterTest() { super( WebTierTestConfiguration.FIXTURE_CONTAINER_DEFINITION_PATH ); } @Test public void doFilter_ShouldForwardOnApplicationStartupFailure() { //SETUP: ApplicationException applicationException = new ApplicationException( "Install", null ); setServletContextAttribute( ApplicationLifecycleListener.STARTUP_FAILURE_ATTRIBUTE, applicationException ); //EXCERCISE: doFilter(); //VERIFY: CommandControllerErrorHelper errorHelper = ((CommandControllerErrorHelper) getRequestAttribute( ApplicationErrorFilter.EXCEPTION_ATTRIBUTE )); assertThat( errorHelper, instanceOf( CommandControllerErrorHelper.class ) ); assertThat( errorHelper.getCause(), equalTo( (Throwable) applicationException )); //TEARDOWN: } @Test public void doFilter_ShouldRedirectIfUnhandledExceptionOccured() { } }