Предложение @RunAs
, о котором упоминает bkail, определенно является хорошим вариантом.Второй подход, который не включает внутренние классы, - это вход в тестовый набор.
Подход входа в систему
Когда вы загружаете OpenEJB, укажите user / pass в свойствах InitialContext
следующим образом:
public void testAsManager() throws Exception {
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
p.put(Context.SECURITY_PRINCIPAL, "jane");
p.put(Context.SECURITY_CREDENTIALS, "waterfall");
InitialContext context = new InitialContext(p);
try {
movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
List<Movie> list = movies.getMovies();
assertEquals("List.size()", 3, list.size());
for (Movie movie : list) {
movies.deleteMovie(movie);
}
assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
} finally {
context.close();
}
}
Затем, возможно, протестируйте снова как другого пользователя:
public void testAsEmployee() throws Exception {
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
p.put(Context.SECURITY_PRINCIPAL, "joe");
p.put(Context.SECURITY_CREDENTIALS, "cool");
InitialContext context = new InitialContext(p);
try {
movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
List<Movie> list = movies.getMovies();
assertEquals("List.size()", 3, list.size());
for (Movie movie : list) {
try {
movies.deleteMovie(movie);
fail("Employees should not be allowed to delete");
} catch (EJBAccessException e) {
// Good, Employees cannot delete things
}
}
// The list should still be three movies long
assertEquals("Movies.getMovies()", 3, movies.getMovies().size());
} finally {
context.close();
}
}
Тестирование пользователей и групп
Вы можете настроить тестовых пользователей и группы, поставив users.properties
и groups.properties
файл в пути к классам тестового набора.В maven это будет в следующих местах:
- src / test / resources / users.properties
- src / test / resources / groups.properties
Файл users.properties
может выглядеть следующим образом
joe=cool
jane=waterfall
И groups.properties
примерно так
Manager=jane
Employee=jane,joe