@Override public List<String> getHeaders(String headerName) { return getHeadersMap().get(headerName); }
@Test public void getHeaderMapReturnsEmptyMapIfNettyHeaderNamesReturnsNull() { HttpHeaders headersMock = mock(HttpHeaders.class); doReturn(null).when(headersMock).names(); setFieldOnRequestInfo("headers", headersMock); Map<String, List<String>> actualHeaderMap = adapter.getHeadersMap(); assertThat(actualHeaderMap, notNullValue()); assertThat(actualHeaderMap.isEmpty(), is(true)); }
@Test public void getHeaderMapIgnoresHeadersWhereNettyGetHeadersMethodReturnsNull() { Map<String, List<String>> expectedHeaderMap = new TreeMap<>(MapBuilder.<String, List<String>>builder() .put("header1", Arrays.asList("h1val1")) .build()); HttpHeaders headersMock = mock(HttpHeaders.class); doReturn(new HashSet<>(Arrays.asList("header1", "header2"))).when(headersMock).names(); doReturn(expectedHeaderMap.get("header1")).when(headersMock).getAll("header1"); doReturn(null).when(headersMock).getAll("header2"); setFieldOnRequestInfo("headers", headersMock); assertThat(adapter.getHeadersMap(), is(expectedHeaderMap)); }
@Test public void getHeaderMapDelegatesToRequestInfoAndCachesResult() { Map<String, List<String>> expectedHeaderMap = new TreeMap<>(MapBuilder.<String, List<String>>builder() .put("header1", Arrays.asList("h1val1")) .put("header2", Arrays.asList("h2val1", "h2val2")) .build()); HttpHeaders nettyHeaders = new DefaultHttpHeaders(); for (Map.Entry<String, List<String>> headerEntry : expectedHeaderMap.entrySet()) { nettyHeaders.add(headerEntry.getKey(), headerEntry.getValue()); } setFieldOnRequestInfo("headers", nettyHeaders); Map<String, List<String>> actualHeaderMap = adapter.getHeadersMap(); assertThat(actualHeaderMap, is(expectedHeaderMap)); assertThat(adapter.getHeadersMap(), sameInstance(actualHeaderMap)); }