Package org.sonar.core.user

Source Code of org.sonar.core.user.UserDaoTest

/*
* SonarQube, open source software quality management tool.
* Copyright (C) 2008-2014 SonarSource
* mailto:contact AT sonarsource DOT com
*
* SonarQube is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* SonarQube is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/
package org.sonar.core.user;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.sonar.api.user.UserQuery;
import org.sonar.api.utils.DateUtils;
import org.sonar.core.persistence.AbstractDaoTestCase;
import org.sonar.core.persistence.DbSession;

import java.util.*;

import static org.fest.assertions.Assertions.assertThat;

public class UserDaoTest extends AbstractDaoTestCase {

  UserDao dao;

  DbSession session;

  @Before
  public void setUp() {
    session = getMyBatis().openSession(false);
    dao = new UserDao(getMyBatis());
  }

  @After
  public void tearDown() throws Exception {
    session.close();
  }

  @Test
  public void selectUserByLogin_ignore_inactive() {
    setupData("selectActiveUserByLogin");

    UserDto user = dao.getUser(50);
    assertThat(user.getLogin()).isEqualTo("inactive_user");

    user = dao.selectActiveUserByLogin("inactive_user");
    assertThat(user).isNull();
  }

  @Test
  public void selectUserByLogin_not_found() {
    setupData("selectActiveUserByLogin");

    UserDto user = dao.selectActiveUserByLogin("not_found");
    assertThat(user).isNull();
  }

  @Test
  public void selectUsersByLogins() throws Exception {
    setupData("selectUsersByLogins");

    Collection<UserDto> users = dao.selectUsersByLogins(Arrays.asList("marius", "inactive_user", "other"));
    assertThat(users).hasSize(2);
    assertThat(users).onProperty("login").containsOnly("marius", "inactive_user");
  }

  @Test
  public void selectUsersByLogins_empty_logins() throws Exception {
    // no need to access db
    Collection<UserDto> users = dao.selectUsersByLogins(Collections.<String> emptyList());
    assertThat(users).isEmpty();
  }

  @Test
  public void selectUsersByQuery_all() throws Exception {
    setupData("selectUsersByQuery");

    UserQuery query = UserQuery.builder().includeDeactivated().build();
    List<UserDto> users = dao.selectUsers(query);
    assertThat(users).hasSize(2);
  }

  @Test
  public void selectUsersByQuery_only_actives() throws Exception {
    setupData("selectUsersByQuery");

    UserQuery query = UserQuery.ALL_ACTIVES;
    List<UserDto> users = dao.selectUsers(query);
    assertThat(users).hasSize(1);
    assertThat(users.get(0).getName()).isEqualTo("Marius");
  }

  @Test
  public void selectUsersByQuery_filter_by_login() throws Exception {
    setupData("selectUsersByQuery");

    UserQuery query = UserQuery.builder().logins("marius", "john").build();
    List<UserDto> users = dao.selectUsers(query);
    assertThat(users).hasSize(1);
    assertThat(users.get(0).getName()).isEqualTo("Marius");
  }

  @Test
  public void selectUsersByQuery_search_by_login_text() throws Exception {
    setupData("selectUsersByText");

    UserQuery query = UserQuery.builder().searchText("sbr").build();
    List<UserDto> users = dao.selectUsers(query);
    assertThat(users).hasSize(1);
    assertThat(users.get(0).getLogin()).isEqualTo("sbrandhof");
  }

  @Test
  public void selectUsersByQuery_search_by_name_text() throws Exception {
    setupData("selectUsersByText");

    UserQuery query = UserQuery.builder().searchText("Simon").build();
    List<UserDto> users = dao.selectUsers(query);
    assertThat(users).hasSize(1);
    assertThat(users.get(0).getLogin()).isEqualTo("sbrandhof");
  }

  @Test
  public void selectUsersByQuery_escape_special_characters_in_like() throws Exception {
    setupData("selectUsersByText");

    UserQuery query = UserQuery.builder().searchText("%s%").build();
    // we expect really a login or name containing the 3 characters "%s%"

    List<UserDto> users = dao.selectUsers(query);
    assertThat(users).isEmpty();
  }

  @Test
  public void selectGroupByName() {
    setupData("selectGroupByName");

    GroupDto group = dao.selectGroupByName("sonar-users");
    assertThat(group).isNotNull();
    assertThat(group.getId()).isEqualTo(1L);
    assertThat(group.getName()).isEqualTo("sonar-users");
    assertThat(group.getDescription()).isEqualTo("Sonar Users");
    assertThat(group.getCreatedAt()).isNotNull();
    assertThat(group.getUpdatedAt()).isNotNull();
  }

  @Test
  public void selectGroupByName_not_found() {
    setupData("selectGroupByName");

    GroupDto group = dao.selectGroupByName("not-found");
    assertThat(group).isNull();
  }

  @Test
  public void insert_user() {
    Date date = DateUtils.parseDate("2014-06-20");

    UserDto userDto = new UserDto().setId(1L).setLogin("john").setName("John").setEmail("jo@hn.com").setCreatedAt(date).setUpdatedAt(date);
    dao.insert(session, userDto);

    checkTables("insert");
  }

  @Test
  public void deactivate_user() {
    setupData("deactivate_user");

    String login = "marius";
    boolean deactivated = dao.deactivateUserByLogin(login);
    assertThat(deactivated).isTrue();
    assertThat(dao.selectActiveUserByLogin(login)).isNull();
    checkTables("deactivate_user",
      "dashboards", "active_dashboards", "groups_users", "issue_filters",
      "issue_filter_favourites", "measure_filters", "measure_filter_favourites",
      "properties", "user_roles");
  }

  @Test
  public void deactivate_missing_user() {
    setupData("deactivate_user");

    String login = "does_not_exist";
    boolean deactivated = dao.deactivateUserByLogin(login);
    assertThat(deactivated).isFalse();
    assertThat(dao.selectActiveUserByLogin(login)).isNull();
  }
}
TOP

Related Classes of org.sonar.core.user.UserDaoTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.