@Test
public void ignoreCaseHeaders_shouldReturnMapWithLowerCaseKeys_whenHeadersContainUpperCaseKeys()
        throws Exception {

    final Map<String, List<String>> headers = new HashMap<>();
    headers.put("Content-Length", Collections.singletonList("238"));
    headers.put("Content-Type", Collections.singletonList(MediaType.APPLICATION_JSON));
    headers.put("OPC-REQUEST-ID", Collections.singletonList("RequestID"));
    final Map<String, List<String>> actual = RequestSignerImpl.ignoreCaseHeaders(headers);
    assertNotNull("Map should not be null", actual);
    assertEquals("Map should contain 3 entries", 3, actual.size());
    for (Map.Entry<String, List<String>> expectedEntry : headers.entrySet()) {
        final String expectedKey = expectedEntry.getKey();
        final List<String> expectedValue = expectedEntry.getValue();
        assertTrue(
                "Actual map should contain matching key for lower case value",
                actual.containsKey(expectedKey.toLowerCase()));
        final List<String> actualValue = actual.get(expectedKey.toLowerCase());
        assertEquals(
                "Values should be equal for key: " + expectedKey, expectedValue, actualValue);
    }
}