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.io.ByteArrayInputStream; 8 import java.io.IOException; 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 RequestTest { 17 18 @Test 19 public void testTrim() { 20 assertEquals("abc", Request.trimAndRemoveLeadingAndTrailingSlashes("abc")); 21 assertEquals("abc", Request.trimAndRemoveLeadingAndTrailingSlashes("/abc")); 22 assertEquals("abc", Request.trimAndRemoveLeadingAndTrailingSlashes(" /abc")); 23 assertEquals("abc", Request.trimAndRemoveLeadingAndTrailingSlashes("abc/")); 24 assertEquals("abc", Request.trimAndRemoveLeadingAndTrailingSlashes("abc/ ")); 25 assertEquals("abc", Request.trimAndRemoveLeadingAndTrailingSlashes("/abc/")); 26 } 27 28 @Test 29 public void testHasBodyWhenContentLengthPresent() throws IOException { 30 Map<String, List<String>> headers = new HashMap<>(); 31 headers.put("content-length", Collections.singletonList("3")); 32 try (ResponseInputStream r = new ResponseInputStream(() ->{}, 200, headers, 33 new ByteArrayInputStream(new byte[] { 1, 2, 3 }))) { 34 assertTrue(Request.hasBody(r)); 35 } 36 } 37 38 @Test 39 public void testHasBodyWhenChunked() throws IOException { 40 Map<String, List<String>> headers = new HashMap<>(); 41 headers.put("transfer-encoding", Collections.singletonList("chunkeD")); 42 try (ResponseInputStream r = new ResponseInputStream(() ->{}, 200, headers, 43 new ByteArrayInputStream(new byte[] { 1, 2, 3 }))) { 44 assertTrue(Request.hasBody(r)); 45 } 46 } 47 48 @Test 49 public void testHasBodyButNoHeader() throws IOException { 50 Map<String, List<String>> headers = new HashMap<>(); 51 try (ResponseInputStream r = new ResponseInputStream(() ->{}, 200, headers, 52 new ByteArrayInputStream(new byte[] { 1, 2, 3 }))) { 53 assertFalse(Request.hasBody(r)); 54 } 55 } 56 57 @Test 58 public void testTrimAndEnsureHasTrailingSlash() { 59 assertEquals("/",Request.trimAndEnsureHasTrailingSlash("")); 60 assertEquals("/",Request.trimAndEnsureHasTrailingSlash("/")); 61 assertEquals("abc/",Request.trimAndEnsureHasTrailingSlash("abc")); 62 assertEquals("abc/",Request.trimAndEnsureHasTrailingSlash("abc/")); 63 } 64 65 }