@Override public void handle(Request request, Response response) throws Exception { userSession.checkIsRoot(); try (DbSession dbSession = dbClient.openSession(false)) { List<UserDto> userDtos = dbClient.userDao().selectUsers( dbSession, UserQuery.builder() .mustBeRoot() .build()); writeResponse(request, response, userDtos); } }
@Test public void selectUsersByQuery_escape_special_characters_in_like() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("sbrandhof").setName("Simon Brandhof")); UserQuery query = UserQuery.builder().searchText("%s%").build(); // we expect really a login or name containing the 3 characters "%s%" List<UserDto> users = underTest.selectUsers(session, query); assertThat(users).isEmpty(); }
@Test public void selectUsersByQuery_all() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("inactive_user").setName("Disabled").setActive(false)); List<UserDto> users = underTest.selectUsers(session, UserQuery.builder().includeDeactivated().build()); assertThat(users).hasSize(2); }
@Test public void selectUsersByQuery_only_actives() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("inactive_user").setName("Disabled").setActive(false)); List<UserDto> users = underTest.selectUsers(session, UserQuery.ALL_ACTIVES); assertThat(users).extracting(UserDto::getName).containsExactlyInAnyOrder("User"); }
@Test public void selectUsers_returns_both_only_root_or_only_non_root_depending_on_mustBeRoot_and_mustNotBeRoot_calls_on_query() { UserDto user1 = insertUser(true); UserDto root1 = insertRootUser(newUserDto()); UserDto user2 = insertUser(true); UserDto root2 = insertRootUser(newUserDto()); assertThat(underTest.selectUsers(session, UserQuery.builder().build())) .extracting(UserDto::getLogin) .containsOnly(user1.getLogin(), user2.getLogin(), root1.getLogin(), root2.getLogin()); assertThat(underTest.selectUsers(session, UserQuery.builder().mustBeRoot().build())) .extracting(UserDto::getLogin) .containsOnly(root1.getLogin(), root2.getLogin()); assertThat(underTest.selectUsers(session, UserQuery.builder().mustNotBeRoot().build())) .extracting(UserDto::getLogin) .containsOnly(user1.getLogin(), user2.getLogin()); }
@Test public void selectUsersByQuery_search_by_name_text() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("sbrandhof").setName("Simon Brandhof")); List<UserDto> users = underTest.selectUsers(session, UserQuery.builder().searchText("Simon").build()); assertThat(users).extracting(UserDto::getLogin).containsExactlyInAnyOrder("sbrandhof"); }
@Test public void selectUsersByQuery_search_by_login_text() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("sbrandhof").setName("Simon Brandhof")); List<UserDto> users = underTest.selectUsers(session, UserQuery.builder().searchText("sbr").build()); assertThat(users).extracting(UserDto::getLogin).containsExactlyInAnyOrder("sbrandhof"); }
@Test public void selectUsersByQuery_filter_by_login() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("inactive_user").setName("Disabled").setActive(false)); List<UserDto> users = underTest.selectUsers(session, UserQuery.builder().logins("user", "john").build()); assertThat(users).extracting(UserDto::getName).containsExactlyInAnyOrder("User"); }
public List<UserDto> selectUsers(UserQuery query) { try (DbSession session = mybatis.openSession(false)) { return selectUsers(session, query); } }
@Override public List<User> find(UserQuery query) { try (DbSession dbSession = dbClient.openSession(false)) { List<UserDto> dtos = dbClient.userDao().selectUsers(dbSession, query); return toUsers(dtos); } }
@Override public void handle(Request request, Response response) throws Exception { userSession.checkIsRoot(); try (DbSession dbSession = dbClient.openSession(false)) { List<UserDto> userDtos = dbClient.userDao().selectUsers( dbSession, UserQuery.builder() .mustBeRoot() .build()); writeResponse(request, response, userDtos); } }