package de.otto.hmac.repository;
import org.testng.annotations.Test;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.hasItems;
@Test
public class FileSystemUserRepositoryTest {
@Test
public void shouldKnowUsersPasswords() throws Exception {
FileSystemUserRepository userRepository = userRepository();
assertThat(userRepository.getKey("maxmustermann"), is("someSecretKey"));
}
@Test
public void shouldGiveNullPasswordForUnknownUser() throws Exception {
FileSystemUserRepository userRepository = userRepository();
assertThat(userRepository.getKey("whoeverThisMayBe"), is(nullValue()));
}
@Test
public void shouldKnowUserRoles() throws Exception {
FileSystemUserRepository userRepository = userRepository();
assertThat(userRepository.getRolesForUser("maxmustermann"), hasItems("admin", "backoffice"));
}
@Test
public void unknownUserShouldHaveRoleEverybody() throws Exception {
FileSystemUserRepository userRepository = userRepository();
assertThat(userRepository.getRolesForUser("foo"), hasItem("everybody"));
}
@Test
public void nullUserShouldHaveRoleEverybody() throws Exception {
FileSystemUserRepository userRepository = userRepository();
assertThat(userRepository.getRolesForUser(null), hasItem("everybody"));
}
private FileSystemUserRepository userRepository() throws IOException, SAXException, ParserConfigurationException {
final FileSystemUserRepository repository = new FileSystemUserRepository("/hmac/auth.xml");
return repository;
}
}