@Test
  public void testCheckHeaders() throws IOException {
    @SuppressWarnings("unchecked")
    Map<String, String> originalHeaders =
        JsonUtils.readObjectFromJsonString(
            IOUtils.toString(getClass().getResource("shibboleth_headers_original.json")),
            Map.class);
    Map<String, String> currentHeaders = new HashMap<>(originalHeaders);

    // When all headers are the same
    HeaderCheckResult result =
        institutionalSignInManager.checkHeaders(originalHeaders, currentHeaders);
    assertTrue(result.isSuccess());
    assertEquals(0, result.getMismatches().size());

    // When eppn is different
    currentHeaders.put("eppn", "*****@*****.**");
    result = institutionalSignInManager.checkHeaders(originalHeaders, currentHeaders);
    assertFalse(result.isSuccess());
    assertEquals(1, result.getMismatches().size());
    HeaderMismatch mismatch = result.getMismatches().get(0);
    assertEquals("eppn", mismatch.getHeaderName());
    assertEquals("*****@*****.**", mismatch.getOriginalValue());
    assertEquals("*****@*****.**", mismatch.getCurrentValue());

    // When eppn was originally there, but is not now
    currentHeaders.remove("eppn");
    result = institutionalSignInManager.checkHeaders(originalHeaders, currentHeaders);
    assertTrue(result.isSuccess());
    assertEquals(0, result.getMismatches().size());
  }