aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core/src/test
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2013-05-13 16:15:43 +0200
committerSimon Brandhof <simon.brandhof@gmail.com>2013-05-13 17:17:36 +0200
commit23c6b6ea166d670dfeaba4d4840bbd046f959a0d (patch)
tree040672981dd6593f41536c9172e7cec2941f83ea /sonar-core/src/test
parente2ae8af9e2a4817fcd7358ac22ec36ee607dc26a (diff)
downloadsonarqube-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.java74
-rw-r--r--sonar-core/src/test/java/org/sonar/core/user/DefaultUserTest.java52
-rw-r--r--sonar-core/src/test/java/org/sonar/core/user/HibernateUserFinderTest.java78
-rw-r--r--sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java58
-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.xml6
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByLogins.xml6
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/user/UserDaoTest/selectUsersByQuery.xml24
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>