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 }