diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2013-05-13 16:15:43 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2013-05-13 17:17:36 +0200 |
commit | 23c6b6ea166d670dfeaba4d4840bbd046f959a0d (patch) | |
tree | 040672981dd6593f41536c9172e7cec2941f83ea /sonar-core/src/test | |
parent | e2ae8af9e2a4817fcd7358ac22ec36ee607dc26a (diff) | |
download | sonarqube-23c6b6ea166d670dfeaba4d4840bbd046f959a0d.tar.gz sonarqube-23c6b6ea166d670dfeaba4d4840bbd046f959a0d.zip |
SONAR-4323 new web service /api/users/search
Diffstat (limited to 'sonar-core/src/test')
-rw-r--r-- | sonar-core/src/test/java/org/sonar/core/user/DefaultUserFinderTest.java | 74 | ||||
-rw-r--r-- | sonar-core/src/test/java/org/sonar/core/user/DefaultUserTest.java | 52 | ||||
-rw-r--r-- | sonar-core/src/test/java/org/sonar/core/user/HibernateUserFinderTest.java | 78 | ||||
-rw-r--r-- | sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java | 58 | ||||
-rw-r--r-- | sonar-core/src/test/resources/org/sonar/core/user/HibernateUserFinderTest/fixture.xml (renamed from sonar-core/src/test/resources/org/sonar/core/user/DefaultUserFinderTest/fixture.xml) | 0 | ||||
-rw-r--r-- | sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUserByLogin.xml | 6 | ||||
-rw-r--r-- | sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByLogins.xml | 6 | ||||
-rw-r--r-- | sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByQuery.xml | 24 |
8 files changed, 246 insertions, 52 deletions
diff --git a/sonar-core/src/test/java/org/sonar/core/user/DefaultUserFinderTest.java b/sonar-core/src/test/java/org/sonar/core/user/DefaultUserFinderTest.java index 2282d45f1d7..5e59d83ad5b 100644 --- a/sonar-core/src/test/java/org/sonar/core/user/DefaultUserFinderTest.java +++ b/sonar-core/src/test/java/org/sonar/core/user/DefaultUserFinderTest.java @@ -19,61 +19,45 @@ */ package org.sonar.core.user; -import org.junit.Before; import org.junit.Test; -import org.sonar.api.database.model.User; -import org.sonar.api.security.UserFinder; -import org.sonar.core.user.DefaultUserFinder; -import org.sonar.jpa.test.AbstractDbUnitTestCase; +import org.sonar.api.user.User; +import org.sonar.api.user.UserQuery; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; -import static org.junit.Assert.assertThat; +import java.util.Arrays; +import java.util.Collection; -public class DefaultUserFinderTest extends AbstractDbUnitTestCase { +import static org.fest.assertions.Assertions.assertThat; +import static org.mockito.Mockito.*; - private UserFinder userFinder; - - @Before - public void setUp() { - setupData("fixture"); - userFinder = new DefaultUserFinder(getSessionFactory()); - } +public class DefaultUserFinderTest { + UserDao dao = mock(UserDao.class); + DefaultUserFinder finder = new DefaultUserFinder(dao); @Test - public void shouldFindUserByLogin() { - User user = userFinder.findByLogin("simon"); - assertThat(user.getId(), is(1)); - assertThat(user.getLogin(), is("simon")); - assertThat(user.getName(), is("Simon Brandhof")); - assertThat(user.getEmail(), is("simon.brandhof@sonarsource.com")); + public void findByLogin() throws Exception { + UserDto dto = new UserDto().setLogin("david").setName("David").setEmail("dav@id.com"); + when(dao.selectUserByLogin("david")).thenReturn(dto); - user = userFinder.findByLogin("godin"); - assertThat(user.getId(), is(2)); - assertThat(user.getLogin(), is("godin")); - assertThat(user.getName(), is("Evgeny Mandrikov")); - assertThat(user.getEmail(), is("evgeny.mandrikov@sonarsource.com")); - - user = userFinder.findByLogin("user"); - assertThat(user, nullValue()); + assertThat(finder.findByLogin("david").name()).isEqualTo("David"); } @Test - public void shouldFindUserById() { - User user = userFinder.findById(1); - assertThat(user.getId(), is(1)); - assertThat(user.getLogin(), is("simon")); - assertThat(user.getName(), is("Simon Brandhof")); - assertThat(user.getEmail(), is("simon.brandhof@sonarsource.com")); - - user = userFinder.findById(2); - assertThat(user.getId(), is(2)); - assertThat(user.getLogin(), is("godin")); - assertThat(user.getName(), is("Evgeny Mandrikov")); - assertThat(user.getEmail(), is("evgeny.mandrikov@sonarsource.com")); - - user = userFinder.findById(3); - assertThat(user, nullValue()); + public void findByLogins() throws Exception { + UserDto david = new UserDto().setLogin("david").setName("David").setEmail("dav@id.com"); + UserDto john = new UserDto().setLogin("john").setName("John").setEmail("jo@hn.com"); + when(dao.selectUsersByLogins(Arrays.asList("david", "john"))).thenReturn(Arrays.asList(david, john)); + + Collection<User> users = finder.findByLogins(Arrays.asList("david", "john")); + assertThat(users).hasSize(2); + for (User user : users) { + assertThat(user.login()).isIn("david", "john"); + } } + @Test + public void findByQuery() throws Exception { + UserQuery query = UserQuery.builder().logins("simon").build(); + finder.find(query); + verify(dao).selectUsers(query); + } } diff --git a/sonar-core/src/test/java/org/sonar/core/user/DefaultUserTest.java b/sonar-core/src/test/java/org/sonar/core/user/DefaultUserTest.java new file mode 100644 index 00000000000..40a0dc232fb --- /dev/null +++ b/sonar-core/src/test/java/org/sonar/core/user/DefaultUserTest.java @@ -0,0 +1,52 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2013 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.Test; + +import static org.fest.assertions.Assertions.assertThat; + +public class DefaultUserTest { + @Test + public void test_object_methods() throws Exception { + DefaultUser john = new DefaultUser().setLogin("john").setName("John"); + DefaultUser eric = new DefaultUser().setLogin("eric").setName("Eric"); + + assertThat(john).isEqualTo(john); + assertThat(john).isNotEqualTo(eric); + assertThat(john.hashCode()).isEqualTo(john.hashCode()); + assertThat(john.toString()).contains("login=john").contains("name=John"); + } + + @Test + public void test_email() { + DefaultUser user = new DefaultUser(); + assertThat(user.email()).isNull(); + + user.setEmail(""); + assertThat(user.email()).isNull(); + + user.setEmail(" "); + assertThat(user.email()).isNull(); + + user.setEmail("s@b.com"); + assertThat(user.email()).isEqualTo("s@b.com"); + } +} diff --git a/sonar-core/src/test/java/org/sonar/core/user/HibernateUserFinderTest.java b/sonar-core/src/test/java/org/sonar/core/user/HibernateUserFinderTest.java new file mode 100644 index 00000000000..7d047210869 --- /dev/null +++ b/sonar-core/src/test/java/org/sonar/core/user/HibernateUserFinderTest.java @@ -0,0 +1,78 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2013 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.Before; +import org.junit.Test; +import org.sonar.api.database.model.User; +import org.sonar.api.security.UserFinder; +import org.sonar.jpa.test.AbstractDbUnitTestCase; + +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; +import static org.junit.Assert.assertThat; + +public class HibernateUserFinderTest extends AbstractDbUnitTestCase { + + private UserFinder userFinder; + + @Before + public void setUp() { + setupData("fixture"); + userFinder = new HibernateUserFinder(getSessionFactory()); + } + + @Test + public void shouldFindUserByLogin() { + User user = userFinder.findByLogin("simon"); + assertThat(user.getId(), is(1)); + assertThat(user.getLogin(), is("simon")); + assertThat(user.getName(), is("Simon Brandhof")); + assertThat(user.getEmail(), is("simon.brandhof@sonarsource.com")); + + user = userFinder.findByLogin("godin"); + assertThat(user.getId(), is(2)); + assertThat(user.getLogin(), is("godin")); + assertThat(user.getName(), is("Evgeny Mandrikov")); + assertThat(user.getEmail(), is("evgeny.mandrikov@sonarsource.com")); + + user = userFinder.findByLogin("user"); + assertThat(user, nullValue()); + } + + @Test + public void shouldFindUserById() { + User user = userFinder.findById(1); + assertThat(user.getId(), is(1)); + assertThat(user.getLogin(), is("simon")); + assertThat(user.getName(), is("Simon Brandhof")); + assertThat(user.getEmail(), is("simon.brandhof@sonarsource.com")); + + user = userFinder.findById(2); + assertThat(user.getId(), is(2)); + assertThat(user.getLogin(), is("godin")); + assertThat(user.getName(), is("Evgeny Mandrikov")); + assertThat(user.getEmail(), is("evgeny.mandrikov@sonarsource.com")); + + user = userFinder.findById(3); + assertThat(user, nullValue()); + } + +} diff --git a/sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java b/sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java index 6950a4981d1..18ef87cd7f1 100644 --- a/sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java @@ -21,8 +21,13 @@ package org.sonar.core.user; import org.junit.Before; import org.junit.Test; +import org.sonar.api.user.UserQuery; import org.sonar.core.persistence.AbstractDaoTestCase; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import static org.fest.assertions.Assertions.assertThat; @@ -36,7 +41,7 @@ public class UserDaoTest extends AbstractDaoTestCase { } @Test - public void selectUserByLogin_ignore_same_disabled_login() { + public void selectUserByLogin_ignore_same_inactive_login() { setupData("selectUserByLogin"); UserDto user = dao.selectUserByLogin("marius"); @@ -47,14 +52,14 @@ public class UserDaoTest extends AbstractDaoTestCase { assertThat(user.getEmail()).isEqualTo("marius@lesbronzes.fr"); assertThat(user.getCreatedAt()).isNotNull(); assertThat(user.getUpdatedAt()).isNotNull(); - assertThat(user.isEnabled()).isTrue(); + assertThat(user.isActive()).isTrue(); } @Test - public void selectUserByLogin_ignore_disabled() { + public void selectUserByLogin_ignore_inactive() { setupData("selectUserByLogin"); - UserDto user = dao.selectUserByLogin("disabled"); + UserDto user = dao.selectUserByLogin("inactive_user"); assertThat(user).isNull(); } @@ -67,6 +72,51 @@ public class UserDaoTest extends AbstractDaoTestCase { } @Test + public void selectUsersByLogins() throws Exception { + setupData("selectUsersByLogins"); + + List<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 + List<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 selectGroupByName() { setupData("selectGroupByName"); diff --git a/sonar-core/src/test/resources/org/sonar/core/user/DefaultUserFinderTest/fixture.xml b/sonar-core/src/test/resources/org/sonar/core/user/HibernateUserFinderTest/fixture.xml index 456f9305802..456f9305802 100644 --- a/sonar-core/src/test/resources/org/sonar/core/user/DefaultUserFinderTest/fixture.xml +++ b/sonar-core/src/test/resources/org/sonar/core/user/HibernateUserFinderTest/fixture.xml diff --git a/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUserByLogin.xml b/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUserByLogin.xml index 1c7bbfb5d4b..9ed7caccd9d 100644 --- a/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUserByLogin.xml +++ b/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUserByLogin.xml @@ -1,9 +1,9 @@ <dataset> - <!-- disabled --> - <users id="50" login="disabled" name="Disabled" email="disabled@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[false]"/> + <!-- inactive --> + <users id="50" login="inactive_user" name="Disabled" email="inactive@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[false]"/> <users id="100" login="marius" name="Marius" email="marius@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[false]"/> - <!-- enabled --> + <!-- active --> <users id="101" login="marius" name="Marius" email="marius@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[true]"/> <users id="102" login="jcdus" name="Jean-Claude Dus" email="jcdus@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[true]"/> diff --git a/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByLogins.xml b/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByLogins.xml new file mode 100644 index 00000000000..c192749b43a --- /dev/null +++ b/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByLogins.xml @@ -0,0 +1,6 @@ +<dataset> + <users id="100" login="inactive_user" name="Disabled" email="inactive@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[false]"/> + <users id="101" login="marius" name="Marius" email="marius@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[true]"/> + <users id="102" login="jcdus" name="Jean-Claude Dus" email="jcdus@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[true]"/> + +</dataset> diff --git a/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByQuery.xml b/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByQuery.xml new file mode 100644 index 00000000000..c478a0cb066 --- /dev/null +++ b/sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByQuery.xml @@ -0,0 +1,24 @@ +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2013 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. + --> +<dataset> + <users id="100" login="inactive_user" name="Disabled" email="inactive@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[false]"/> + <users id="101" login="marius" name="Marius" email="marius@lesbronzes.fr" created_at="2011-05-18" updated_at="2012-07-21" active="[true]"/> + +</dataset> |