package io.github.azagniotov.stubby4j.handlers.strategy; import io.github.azagniotov.stubby4j.handlers.strategy.stubs.DefaultResponseHandlingStrategy; import io.github.azagniotov.stubby4j.handlers.strategy.stubs.NotFoundResponseHandlingStrategy; import io.github.azagniotov.stubby4j.handlers.strategy.stubs.RedirectResponseHandlingStrategy; import io.github.azagniotov.stubby4j.handlers.strategy.stubs.StubResponseHandlingStrategy; import io.github.azagniotov.stubby4j.handlers.strategy.stubs.StubsResponseHandlingStrategyFactory; import io.github.azagniotov.stubby4j.handlers.strategy.stubs.UnauthorizedResponseHandlingStrategy; import io.github.azagniotov.stubby4j.stubs.StubResponse; import org.eclipse.jetty.http.HttpStatus.Code; import org.junit.Test; import java.util.Optional; import static com.google.common.truth.Truth.assertThat; public class HandlingStrategyFactoryTest { @Test public void shouldIdentifyResponseStrategyForDefaultResponse() throws Exception { final StubResponse stubResponse = StubResponse.okResponse(); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(DefaultResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForNotFoundResponse() throws Exception { final StubResponse stubResponse = StubResponse.notFoundResponse(); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(NotFoundResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForUnauthorizedResponse() throws Exception { final StubResponse stubResponse = StubResponse.unauthorizedResponse(); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(UnauthorizedResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForRedirectResponseWhenFoundStubResponseNull() throws Exception { final StubResponse stubResponse = StubResponse.redirectResponse(Optional.empty()); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(RedirectResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForRedirectResponseWithStubResponseCode301() throws Exception { Optional<StubResponse> stubResponseOptional = Optional.of( new StubResponse.Builder() .withHttpStatusCode(Code.MOVED_PERMANENTLY) .build()); final StubResponse stubResponse = StubResponse.redirectResponse(stubResponseOptional); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(RedirectResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForRedirectResponseWithStubResponseCode302() throws Exception { Optional<StubResponse> stubResponseOptional = Optional.of( new StubResponse.Builder() .withHttpStatusCode(Code.MOVED_TEMPORARILY) .build()); final StubResponse stubResponse = StubResponse.redirectResponse(stubResponseOptional); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(RedirectResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForRedirectResponseWithStubResponseCode302_Found() throws Exception { Optional<StubResponse> stubResponseOptional = Optional.of( new StubResponse.Builder() .withHttpStatusCode(Code.FOUND) .build()); final StubResponse stubResponse = StubResponse.redirectResponse(stubResponseOptional); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(RedirectResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForRedirectResponseWithStubResponseCode303() throws Exception { Optional<StubResponse> stubResponseOptional = Optional.of( new StubResponse.Builder() .withHttpStatusCode(Code.SEE_OTHER) .build()); final StubResponse stubResponse = StubResponse.redirectResponse(stubResponseOptional); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(RedirectResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForRedirectResponseWithStubResponseCode307() throws Exception { Optional<StubResponse> stubResponseOptional = Optional.of( new StubResponse.Builder() .withHttpStatusCode(Code.TEMPORARY_REDIRECT) .build()); final StubResponse stubResponse = StubResponse.redirectResponse(stubResponseOptional); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(RedirectResponseHandlingStrategy.class); } @Test public void shouldIdentifyResponseStrategyForRedirectResponseWithStubResponseCode308() throws Exception { Optional<StubResponse> stubResponseOptional = Optional.of( new StubResponse.Builder() .withHttpStatusCode(Code.PERMANET_REDIRECT) .build()); final StubResponse stubResponse = StubResponse.redirectResponse(stubResponseOptional); final StubResponseHandlingStrategy stubResponseHandlingStrategy = StubsResponseHandlingStrategyFactory.getStrategy(stubResponse); assertThat(stubResponseHandlingStrategy).isInstanceOf(RedirectResponseHandlingStrategy.class); } }