@Test
public void addOrDeleteAuthorityDoesNotAffectUser() {
final String authorityName = "guest";
Authority authority = new JpaAuthority();
authority.setAuthority(authorityName);
User user = userRepository.get("1");
Assert.assertNotNull("User is null", user);
Assert.assertTrue("User has no authorities", user.getAuthorities().isEmpty());
assertNull("No authority guest", repository.getByAuthority(authorityName));
user.addAuthority(authority);
user = userRepository.save(user);
assertNull("Persisting a user does not persist an unknown Authority", repository.getByAuthority(authorityName));
repository.save(authority);
Assert.assertEquals("Found authority", authorityName, user.getAuthorities().iterator().next().getAuthority());
Assert.assertNotNull("New authority: guest", authority);
repository.delete(authority);
assertNull("No authority guest", repository.getByAuthority(authorityName));
user = userRepository.get("1");
Assert.assertNotNull("User should not be deleted after removing an authority", user);
Assert.assertTrue("User should have no authorities", user.getAuthorities().isEmpty());
}