View Javadoc
1   package com.github.davidmoten.aws.lw.client;
2   
3   import static org.junit.Assert.assertEquals;
4   import static org.junit.Assert.assertFalse;
5   import static org.junit.Assert.assertTrue;
6   
7   import java.nio.charset.StandardCharsets;
8   import java.util.Arrays;
9   import java.util.Collections;
10  import java.util.HashMap;
11  import java.util.List;
12  import java.util.Map;
13  
14  import org.junit.Test;
15  
16  public class ResponseTest {
17  
18      @Test
19      public void test() {
20          byte[] content = "hi there".getBytes(StandardCharsets.UTF_8);
21          Map<String, List<String>> headers = new HashMap<>();
22          headers.put("x-amz-meta-color", Collections.singletonList("red"));
23          headers.put("x-amz-meta-thing", Collections.singletonList("under"));
24          headers.put("blah", Collections.singletonList("stuff"));
25          Response r = new Response(headers, content, 200);
26          assertEquals("hi there", r.contentUtf8());
27          assertTrue(r.isOk());
28          assertEquals("red", r.metadata("color").get());
29          assertEquals("under", r.metadata("thing").get());
30          assertEquals(2, r.metadata().entrySet().size());
31          assertEquals(3, r.headers().size());
32          assertEquals(200, r.statusCode());
33      }
34  
35      @Test
36      public void testFilterNullKeys() {
37          byte[] content = "hi there".getBytes(StandardCharsets.UTF_8);
38          Map<String, List<String>> headers = new HashMap<>();
39          headers.put("x-amz-meta-color", Collections.singletonList("red"));
40          headers.put((String) null, Collections.singletonList("thing"));
41          Response r = new Response(headers, content, 200);
42          assertEquals(1, r.metadata().entrySet().size());
43          assertEquals(2, r.headers().size());
44      }
45  
46      @Test
47      public void testResponseCodeOk() {
48          Response r = new Response(Collections.emptyMap(), new byte[0], 210);
49          assertTrue(r.isOk());
50      }
51  
52      @Test
53      public void testResponseCode199() {
54          Response r = new Response(Collections.emptyMap(), new byte[0], 199);
55          assertTrue(!r.isOk());
56      }
57  
58      @Test
59      public void testResponseCode300() {
60          Response r = new Response(Collections.emptyMap(), new byte[0], 300);
61          assertTrue(!r.isOk());
62      }
63  
64      @Test
65      public void testExists200() {
66          Response r = new Response(Collections.emptyMap(), new byte[0], 200);
67          assertTrue(r.exists());
68      }
69  
70      @Test
71      public void testExists299() {
72          Response r = new Response(Collections.emptyMap(), new byte[0], 299);
73          assertTrue(r.exists());
74      }
75  
76      @Test
77      public void testExists404() {
78          Response r = new Response(Collections.emptyMap(), new byte[0], 404);
79          assertFalse(r.exists());
80      }
81  
82      @Test(expected = ServiceException.class)
83      public void testExists500() {
84          Response r = new Response(Collections.emptyMap(), new byte[0], 500);
85          r.exists();
86      }
87  
88      @Test(expected = ServiceException.class)
89      public void testExists100() {
90          Response r = new Response(Collections.emptyMap(), new byte[0], 100);
91          r.exists();
92      }
93      
94      @Test
95      public void testFirstHeader() {
96          Map<String, List<String>> map = new HashMap<>();
97          map.put("thing", Arrays.asList("a", "b"));
98          Response r = new Response(map, new byte[0], 100);
99          assertEquals("a", r.firstHeader("thing").get());
100     }
101     
102     @Test
103     public void testFirstHeaderIsCaseInsensitive() {
104         Map<String, List<String>> map = new HashMap<>();
105         List<String> v = Arrays.asList("a", "b");
106         map.put("Thing", v);
107         Response r = new Response(map, new byte[0], 100);
108         assertEquals("a", r.firstHeader("THING").get());
109         assertEquals(v, r.headers().get("Thing"));
110         assertEquals(v, r.headersLowerCaseKey().get("thing"));
111     }
112 
113     @Test
114     public void testFirstHeaderFullDateNoHeaders() {
115         Map<String, List<String>> map = new HashMap<>();
116         Response r = new Response(map, new byte[0], 100);
117         assertFalse(r.firstHeaderFullDate("date").isPresent());
118     }
119 
120     @Test
121     public void testFirstHeaderFullDateBlank() {
122         Map<String, List<String>> map = new HashMap<>();
123         map.put("date", Collections.emptyList());
124         Response r = new Response(map, new byte[0], 100);
125         assertFalse(r.firstHeaderFullDate("date").isPresent());
126     }
127 
128     @Test
129     public void testFirstHeaderFullDate() {
130         Map<String, List<String>> map = new HashMap<>();
131         map.put("date",
132                 Arrays.asList("Wed, 25 Aug 2021 21:55:47 GMT", "Thu, 26 Aug 2021 21:55:47 GMT"));
133         Response r = new Response(map, new byte[0], 100);
134         assertEquals(1629928547000L, r.firstHeaderFullDate("date").get().toEpochMilli());
135     }
136 }