@Test
  public void testNoSeparator() {

    provider.setHeaderName("Groups");

    final Set<Principal> principals = provider.getPrincipals(credentials);

    assertTrue("Empty set expected when no separator name configured", principals.isEmpty());
  }
  @Test
  public void testInvalidCredentials() {

    provider.setHeaderName("Groups");
    provider.setSeparator(",");

    final Set<Principal> principals = provider.getPrincipals(mock(Credentials.class));

    assertTrue(
        "Empty set expected when incorrect type of credentials supplied", principals.isEmpty());
  }
  @Test
  public void testNoRequest() {

    provider.setHeaderName("Groups");
    provider.setSeparator(",");

    when(credentials.getRequest()).thenReturn(null);

    final Set<Principal> principals = provider.getPrincipals(credentials);

    assertTrue("Empty set expected when no request supplied", principals.isEmpty());
  }
  @Test
  public void testPrincipalEqualsDifferentClass() {

    when(request.getHeader("Groups")).thenReturn("a");

    provider.setHeaderName("Groups");
    provider.setSeparator(",");

    final Set<Principal> principals = provider.getPrincipals(credentials);

    final Principal principal = principals.iterator().next();

    assertNotEquals(
        "Principals should not be equal if not the same class", principal, mock(Principal.class));
  }
  @Test
  public void testNoHeaderName() {

    final Set<Principal> principals = provider.getPrincipals(credentials);

    assertTrue("Empty set expected when no header name configured", principals.isEmpty());
  }
  @Test
  public void testShouldTrimPrincipalNames() {

    when(request.getHeader("Groups")).thenReturn(" a ,b");

    provider.setHeaderName("Groups");
    provider.setSeparator(",");

    final Set<Principal> principals = provider.getPrincipals(credentials);

    assertEquals(2, principals.size());
    assertTrue(
        "The principals should contain 'a'", principals.contains(new HttpHeaderPrincipal("a")));
    assertTrue(
        "The principals should contain 'b'", principals.contains(new HttpHeaderPrincipal("b")));
  }