1 package com.atlassian.asap.core.keys.publickey;
2
3 import org.apache.http.HttpResponse;
4 import org.apache.http.StatusLine;
5 import org.apache.http.protocol.HttpContext;
6 import org.junit.Before;
7 import org.junit.Test;
8 import org.junit.runner.RunWith;
9 import org.mockito.Mock;
10 import org.mockito.runners.MockitoJUnitRunner;
11
12 import static org.hamcrest.Matchers.is;
13 import static org.junit.Assert.assertThat;
14 import static org.mockito.Mockito.when;
15
16 @RunWith(MockitoJUnitRunner.class)
17 public class S3ServiceUnavailableRetryStrategyTest {
18 @Mock
19 private HttpResponse httpResponse;
20
21 @Mock
22 private HttpContext httpContext;
23
24 @Mock
25 private StatusLine statusLine;
26
27 private S3ServiceUnavailableRetryStrategy retryStrategy;
28
29 @Before
30 public void createSut() {
31 retryStrategy = new S3ServiceUnavailableRetryStrategy(2, 100);
32 }
33
34 @Test
35 public void shouldRetryOn500() {
36 when(httpResponse.getStatusLine()).thenReturn(statusLine);
37 when(statusLine.getStatusCode()).thenReturn(500);
38
39 assertThat(retryStrategy.retryRequest(httpResponse, 1, httpContext), is(true));
40 }
41
42 @Test
43 public void shouldNotRetryOn400() {
44 when(httpResponse.getStatusLine()).thenReturn(statusLine);
45 when(statusLine.getStatusCode()).thenReturn(400);
46
47 assertThat(retryStrategy.retryRequest(httpResponse, 1, httpContext), is(false));
48 }
49
50 @Test
51 public void shouldStopRetrying() {
52 when(httpResponse.getStatusLine()).thenReturn(statusLine);
53 when(statusLine.getStatusCode()).thenReturn(500);
54
55 assertThat(retryStrategy.retryRequest(httpResponse, 5, httpContext), is(false));
56 }
57
58 }