package com.offbytwo.jenkins.client.validator; import static junit.framework.TestCase.assertFalse; import static junit.framework.TestCase.assertTrue; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.HttpResponseException; import org.junit.Test; public class HttpRequestValidatorTest { private boolean httpResponseExceptionThrown = false; private HttpResponse httpResponse; @Test public void shouldThrowHttpResponseExceptionWhenStatusIsLowerThan200() { // given httpResponse = givenResponseWithCode(170); // when httpResponseExceptionThrown = validateResponse(httpResponse); // then assertTrue(httpResponseExceptionThrown); } private HttpResponseValidator validator = new HttpResponseValidator(); @Test public void shouldThrowHttpResponseExceptionWhenStatusIsHigherThan400() { // given httpResponse = givenResponseWithCode(403); // when httpResponseExceptionThrown = validateResponse(httpResponse); // then assertTrue(httpResponseExceptionThrown); } @Test public void shouldThrowHttpResponseExceptionWhenStatusIs400() { // given httpResponse = givenResponseWithCode(400); // when httpResponseExceptionThrown = validateResponse(httpResponse); // then assertTrue(httpResponseExceptionThrown); } @Test public void shouldNotThrowHttpResponseExceptionWhenStatusIsBetween200and400() { // given httpResponse = givenResponseWithCode(220); // when httpResponseExceptionThrown = validateResponse(httpResponse); // then assertFalse(httpResponseExceptionThrown); } private HttpResponse givenResponseWithCode(Integer statusCode) { HttpResponse httpResponse = mock(HttpResponse.class); StatusLine statusLine = mock(StatusLine.class); given(httpResponse.getStatusLine()).willReturn(statusLine); given(statusLine.getStatusCode()).willReturn(statusCode); return httpResponse; } private boolean validateResponse(HttpResponse httpResponse) { boolean httpResponseExceptionThrown = false; try { validator.validateResponse(httpResponse); } catch (HttpResponseException e) { httpResponseExceptionThrown = true; } return httpResponseExceptionThrown; } }