@@ -35,6 +35,9 @@ import static com.google.common.collect.Maps.newHashMap; | |||
public class PermissionDao implements ServerComponent { | |||
private static final String QUERY_PARAMETER = "query"; | |||
private static final String COMPONENT_ID_PARAMETER = "componentId"; | |||
private final MyBatis myBatis; | |||
public PermissionDao(MyBatis myBatis) { | |||
@@ -44,12 +47,12 @@ public class PermissionDao implements ServerComponent { | |||
/** | |||
* @return a paginated list of users. | |||
*/ | |||
public List<UserWithPermissionDto> selectUsers(WithPermissionQuery query, @Nullable Long componentId, int offset, int limit) { | |||
public List<UserWithPermissionDto> selectUsers(PermissionQuery query, @Nullable Long componentId, int offset, int limit) { | |||
SqlSession session = myBatis.openSession(); | |||
try { | |||
Map<String, Object> params = newHashMap(); | |||
params.put("query", query); | |||
params.put("componentId", componentId); | |||
params.put(QUERY_PARAMETER, query); | |||
params.put(COMPONENT_ID_PARAMETER, componentId); | |||
return session.selectList("org.sonar.core.permission.PermissionMapper.selectUsers", params, new RowBounds(offset, limit)); | |||
} finally { | |||
MyBatis.closeQuietly(session); | |||
@@ -57,7 +60,7 @@ public class PermissionDao implements ServerComponent { | |||
} | |||
@VisibleForTesting | |||
List<UserWithPermissionDto> selectUsers(WithPermissionQuery query, @Nullable Long componentId) { | |||
List<UserWithPermissionDto> selectUsers(PermissionQuery query, @Nullable Long componentId) { | |||
return selectUsers(query, componentId, 0, Integer.MAX_VALUE); | |||
} | |||
@@ -66,12 +69,12 @@ public class PermissionDao implements ServerComponent { | |||
* Membership parameter from query is not taking into account in order to deal more easily with the 'Anyone' group | |||
* @return a non paginated list of groups. | |||
*/ | |||
public List<GroupWithPermissionDto> selectGroups(WithPermissionQuery query, @Nullable Long componentId) { | |||
public List<GroupWithPermissionDto> selectGroups(PermissionQuery query, @Nullable Long componentId) { | |||
SqlSession session = myBatis.openSession(); | |||
try { | |||
Map<String, Object> params = newHashMap(); | |||
params.put("query", query); | |||
params.put("componentId", componentId); | |||
params.put(QUERY_PARAMETER, query); | |||
params.put(COMPONENT_ID_PARAMETER, componentId); | |||
params.put("anyoneGroup", DefaultGroups.ANYONE); | |||
return session.selectList("org.sonar.core.permission.PermissionMapper.selectGroups", params); | |||
} finally { |
@@ -32,7 +32,7 @@ import java.util.Set; | |||
/** | |||
* Query used to get users and groups from a permission | |||
*/ | |||
public class WithPermissionQuery { | |||
public class PermissionQuery { | |||
public static final int DEFAULT_PAGE_INDEX = 1; | |||
public static final int DEFAULT_PAGE_SIZE = 100; | |||
@@ -58,7 +58,7 @@ public class WithPermissionQuery { | |||
private final int pageIndex; | |||
private WithPermissionQuery(Builder builder) { | |||
private PermissionQuery(Builder builder) { | |||
this.permission = builder.permission; | |||
this.component = builder.component; | |||
this.template = builder.template; | |||
@@ -171,9 +171,10 @@ public class WithPermissionQuery { | |||
private void initMembership() { | |||
if (membership == null) { | |||
membership = WithPermissionQuery.ANY; | |||
membership = PermissionQuery.ANY; | |||
} else { | |||
// TODO check | |||
Preconditions.checkArgument(AVAILABLE_MEMBERSHIP.contains(membership), | |||
"Membership is not valid (got " + membership + "). Availables values are " + AVAILABLE_MEMBERSHIP); | |||
} | |||
} | |||
@@ -190,12 +191,12 @@ public class WithPermissionQuery { | |||
Preconditions.checkArgument(pageIndex > 0, "Page index must be greater than 0 (got " + pageIndex + ")"); | |||
} | |||
public WithPermissionQuery build() { | |||
public PermissionQuery build() { | |||
Preconditions.checkNotNull(permission, "Permission cant be null."); | |||
initMembership(); | |||
initPageIndex(); | |||
initPageSize(); | |||
return new WithPermissionQuery(this); | |||
return new PermissionQuery(this); | |||
} | |||
} | |||
} |
@@ -42,6 +42,8 @@ import static com.google.common.collect.Maps.newHashMap; | |||
public class PermissionTemplateDao implements TaskComponent, ServerComponent { | |||
public static final String QUERY_PARAMETER = "query"; | |||
public static final String TEMPLATE_ID_PARAMETER = "templateId"; | |||
private final MyBatis myBatis; | |||
private final DateProvider dateProvider; | |||
@@ -57,12 +59,12 @@ public class PermissionTemplateDao implements TaskComponent, ServerComponent { | |||
/** | |||
* @return a paginated list of users. | |||
*/ | |||
public List<UserWithPermissionDto> selectUsers(WithPermissionQuery query, Long templateId, int offset, int limit) { | |||
public List<UserWithPermissionDto> selectUsers(PermissionQuery query, Long templateId, int offset, int limit) { | |||
SqlSession session = myBatis.openSession(); | |||
try { | |||
Map<String, Object> params = newHashMap(); | |||
params.put("query", query); | |||
params.put("templateId", templateId); | |||
params.put(QUERY_PARAMETER, query); | |||
params.put(TEMPLATE_ID_PARAMETER, templateId); | |||
return session.selectList("org.sonar.core.permission.PermissionTemplateMapper.selectUsers", params, new RowBounds(offset, limit)); | |||
} finally { | |||
MyBatis.closeQuietly(session); | |||
@@ -70,7 +72,7 @@ public class PermissionTemplateDao implements TaskComponent, ServerComponent { | |||
} | |||
@VisibleForTesting | |||
List<UserWithPermissionDto> selectUsers(WithPermissionQuery query, Long templateId) { | |||
List<UserWithPermissionDto> selectUsers(PermissionQuery query, Long templateId) { | |||
return selectUsers(query, templateId, 0, Integer.MAX_VALUE); | |||
} | |||
@@ -79,12 +81,12 @@ public class PermissionTemplateDao implements TaskComponent, ServerComponent { | |||
* Membership parameter from query is not taking into account in order to deal more easily with the 'Anyone' group. | |||
* @return a non paginated list of groups. | |||
*/ | |||
public List<GroupWithPermissionDto> selectGroups(WithPermissionQuery query, Long templateId) { | |||
public List<GroupWithPermissionDto> selectGroups(PermissionQuery query, Long templateId) { | |||
SqlSession session = myBatis.openSession(); | |||
try { | |||
Map<String, Object> params = newHashMap(); | |||
params.put("query", query); | |||
params.put("templateId", templateId); | |||
params.put(QUERY_PARAMETER, query); | |||
params.put(TEMPLATE_ID_PARAMETER, templateId); | |||
params.put("anyoneGroup", DefaultGroups.ANYONE); | |||
return session.selectList("org.sonar.core.permission.PermissionTemplateMapper.selectGroups", params); | |||
} finally { |
@@ -31,16 +31,16 @@ import java.util.Map; | |||
public class GroupMembershipDao { | |||
private final MyBatis mybatis; | |||
public GroupMembershipDao(MyBatis mybatis) { | |||
this.mybatis = mybatis; | |||
} | |||
private final MyBatis mybatis; | |||
public List<GroupMembershipDto> selectGroups(GroupMembershipQuery query, Long userId, int offset, int limit) { | |||
SqlSession session = mybatis.openSession(); | |||
try { | |||
Map<String, Object> params = ImmutableMap.of("query", query, "userId", userId); | |||
Map<String, Object> params = ImmutableMap.of("query", query, "userId", userId); | |||
return session.selectList("org.sonar.core.user.GroupMembershipMapper.selectGroups", params, new RowBounds(offset, limit)); | |||
} finally { | |||
MyBatis.closeQuietly(session); |
@@ -28,9 +28,6 @@ import javax.annotation.Nullable; | |||
import java.util.Set; | |||
/** | |||
* @since 4.1 | |||
*/ | |||
public class GroupMembershipQuery { | |||
public static final int DEFAULT_PAGE_INDEX = 1; | |||
@@ -145,7 +142,8 @@ public class GroupMembershipQuery { | |||
if (membership == null) { | |||
membership = GroupMembershipQuery.ANY; | |||
} else { | |||
// TODO check | |||
Preconditions.checkArgument(AVAILABLE_MEMBERSHIP.contains(membership), | |||
"Membership is not valid (got " + membership + "). Availables values are " + AVAILABLE_MEMBERSHIP); | |||
} | |||
} | |||
@@ -163,7 +161,7 @@ public class GroupMembershipQuery { | |||
} | |||
public GroupMembershipQuery build() { | |||
Preconditions.checkNotNull(login, "User cant be null."); | |||
Preconditions.checkNotNull(login, "User login cant be null."); | |||
initMembership(); | |||
initPageIndex(); | |||
initPageSize(); |
@@ -43,7 +43,7 @@ public class GroupWithPermissionDaoTest extends AbstractDaoTestCase { | |||
public void select_groups_for_project_permission() throws Exception { | |||
setupData("groups_with_permissions"); | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("user").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("user").build(); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(query, COMPONENT_ID); | |||
assertThat(result).hasSize(4); | |||
@@ -69,7 +69,7 @@ public class GroupWithPermissionDaoTest extends AbstractDaoTestCase { | |||
setupData("groups_with_permissions"); | |||
// Anyone group has not the permission 'admin', so it's not returned | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("admin").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("admin").build(); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(query, COMPONENT_ID); | |||
assertThat(result).hasSize(3); | |||
@@ -90,7 +90,7 @@ public class GroupWithPermissionDaoTest extends AbstractDaoTestCase { | |||
public void select_groups_for_global_permission() throws Exception { | |||
setupData("groups_with_permissions"); | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("admin").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("admin").build(); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(query, null); | |||
assertThat(result).hasSize(3); | |||
@@ -111,11 +111,11 @@ public class GroupWithPermissionDaoTest extends AbstractDaoTestCase { | |||
public void search_by_groups_name() throws Exception { | |||
setupData("groups_with_permissions"); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(WithPermissionQuery.builder().permission("user").search("aDMini").build(), COMPONENT_ID); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(PermissionQuery.builder().permission("user").search("aDMini").build(), COMPONENT_ID); | |||
assertThat(result).hasSize(1); | |||
assertThat(result.get(0).getName()).isEqualTo("sonar-administrators"); | |||
result = dao.selectGroups(WithPermissionQuery.builder().permission("user").search("sonar").build(), COMPONENT_ID); | |||
result = dao.selectGroups(PermissionQuery.builder().permission("user").search("sonar").build(), COMPONENT_ID); | |||
assertThat(result).hasSize(3); | |||
} | |||
@@ -123,7 +123,7 @@ public class GroupWithPermissionDaoTest extends AbstractDaoTestCase { | |||
public void search_groups_should_be_sorted_by_group_name() throws Exception { | |||
setupData("groups_with_permissions_should_be_sorted_by_group_name"); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(WithPermissionQuery.builder().permission("user").build(), COMPONENT_ID); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(PermissionQuery.builder().permission("user").build(), COMPONENT_ID); | |||
assertThat(result).hasSize(4); | |||
assertThat(result.get(0).getName()).isEqualTo("Anyone"); | |||
assertThat(result.get(1).getName()).isEqualTo("sonar-administrators"); |
@@ -43,7 +43,7 @@ public class GroupWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
public void select_groups() throws Exception { | |||
setupData("groups_with_permissions"); | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("user").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("user").build(); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(query, TEMPLATE_ID); | |||
assertThat(result).hasSize(4); | |||
@@ -70,7 +70,7 @@ public class GroupWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
setupData("groups_with_permissions"); | |||
// Anyone group has not the permission 'admin', so it's not returned | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("admin").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("admin").build(); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(query, TEMPLATE_ID); | |||
assertThat(result).hasSize(3); | |||
@@ -91,11 +91,11 @@ public class GroupWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
public void search_by_groups_name() throws Exception { | |||
setupData("groups_with_permissions"); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(WithPermissionQuery.builder().permission("user").search("aDMini").build(), TEMPLATE_ID); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(PermissionQuery.builder().permission("user").search("aDMini").build(), TEMPLATE_ID); | |||
assertThat(result).hasSize(1); | |||
assertThat(result.get(0).getName()).isEqualTo("sonar-administrators"); | |||
result = dao.selectGroups(WithPermissionQuery.builder().permission("user").search("sonar").build(), TEMPLATE_ID); | |||
result = dao.selectGroups(PermissionQuery.builder().permission("user").search("sonar").build(), TEMPLATE_ID); | |||
assertThat(result).hasSize(3); | |||
} | |||
@@ -103,7 +103,7 @@ public class GroupWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
public void search_groups_should_be_sorted_by_group_name() throws Exception { | |||
setupData("groups_with_permissions_should_be_sorted_by_group_name"); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(WithPermissionQuery.builder().permission("user").build(), TEMPLATE_ID); | |||
List<GroupWithPermissionDto> result = dao.selectGroups(PermissionQuery.builder().permission("user").build(), TEMPLATE_ID); | |||
assertThat(result).hasSize(4); | |||
assertThat(result.get(0).getName()).isEqualTo("Anyone"); | |||
assertThat(result.get(1).getName()).isEqualTo("sonar-administrators"); |
@@ -43,7 +43,7 @@ public class UserWithPermissionDaoTest extends AbstractDaoTestCase { | |||
public void select_all_users_for_project_permission() throws Exception { | |||
setupData("users_with_permissions"); | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("user").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("user").build(); | |||
List<UserWithPermissionDto> result = dao.selectUsers(query, COMPONENT_ID); | |||
assertThat(result).hasSize(3); | |||
@@ -67,7 +67,7 @@ public class UserWithPermissionDaoTest extends AbstractDaoTestCase { | |||
public void select_all_users_for_global_permission() throws Exception { | |||
setupData("users_with_permissions"); | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("admin").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("admin").build(); | |||
List<UserWithPermissionDto> result = dao.selectUsers(query, null); | |||
assertThat(result).hasSize(3); | |||
@@ -89,7 +89,7 @@ public class UserWithPermissionDaoTest extends AbstractDaoTestCase { | |||
setupData("users_with_permissions"); | |||
// user1 and user2 have permission user | |||
assertThat(dao.selectUsers(WithPermissionQuery.builder().permission("user").membership(WithPermissionQuery.IN).build(), COMPONENT_ID)).hasSize(2); | |||
assertThat(dao.selectUsers(PermissionQuery.builder().permission("user").membership(PermissionQuery.IN).build(), COMPONENT_ID)).hasSize(2); | |||
} | |||
@Test | |||
@@ -97,18 +97,18 @@ public class UserWithPermissionDaoTest extends AbstractDaoTestCase { | |||
setupData("users_with_permissions"); | |||
// Only user3 has not the user permission | |||
assertThat(dao.selectUsers(WithPermissionQuery.builder().permission("user").membership(WithPermissionQuery.OUT).build(), COMPONENT_ID)).hasSize(1); | |||
assertThat(dao.selectUsers(PermissionQuery.builder().permission("user").membership(PermissionQuery.OUT).build(), COMPONENT_ID)).hasSize(1); | |||
} | |||
@Test | |||
public void search_by_user_name() throws Exception { | |||
setupData("users_with_permissions"); | |||
List<UserWithPermissionDto> result = dao.selectUsers(WithPermissionQuery.builder().permission("user").search("SEr1").build(), COMPONENT_ID); | |||
List<UserWithPermissionDto> result = dao.selectUsers(PermissionQuery.builder().permission("user").search("SEr1").build(), COMPONENT_ID); | |||
assertThat(result).hasSize(1); | |||
assertThat(result.get(0).getName()).isEqualTo("User1"); | |||
result = dao.selectUsers(WithPermissionQuery.builder().permission("user").search("user").build(), COMPONENT_ID); | |||
result = dao.selectUsers(PermissionQuery.builder().permission("user").search("user").build(), COMPONENT_ID); | |||
assertThat(result).hasSize(3); | |||
} | |||
@@ -116,7 +116,7 @@ public class UserWithPermissionDaoTest extends AbstractDaoTestCase { | |||
public void should_be_sorted_by_user_name() throws Exception { | |||
setupData("users_with_permissions_should_be_sorted_by_user_name"); | |||
List<UserWithPermissionDto> result = dao.selectUsers(WithPermissionQuery.builder().permission("user").build(), COMPONENT_ID); | |||
List<UserWithPermissionDto> result = dao.selectUsers(PermissionQuery.builder().permission("user").build(), COMPONENT_ID); | |||
assertThat(result).hasSize(3); | |||
assertThat(result.get(0).getName()).isEqualTo("User1"); | |||
assertThat(result.get(1).getName()).isEqualTo("User2"); | |||
@@ -127,17 +127,17 @@ public class UserWithPermissionDaoTest extends AbstractDaoTestCase { | |||
public void should_be_paginated() throws Exception { | |||
setupData("users_with_permissions"); | |||
List<UserWithPermissionDto> result = dao.selectUsers(WithPermissionQuery.builder().permission("user").build(), COMPONENT_ID, 0, 2); | |||
List<UserWithPermissionDto> result = dao.selectUsers(PermissionQuery.builder().permission("user").build(), COMPONENT_ID, 0, 2); | |||
assertThat(result).hasSize(2); | |||
assertThat(result.get(0).getName()).isEqualTo("User1"); | |||
assertThat(result.get(1).getName()).isEqualTo("User2"); | |||
result = dao.selectUsers(WithPermissionQuery.builder().permission("user").build(), COMPONENT_ID, 1, 2); | |||
result = dao.selectUsers(PermissionQuery.builder().permission("user").build(), COMPONENT_ID, 1, 2); | |||
assertThat(result).hasSize(2); | |||
assertThat(result.get(0).getName()).isEqualTo("User2"); | |||
assertThat(result.get(1).getName()).isEqualTo("User3"); | |||
result = dao.selectUsers(WithPermissionQuery.builder().permission("user").build(), COMPONENT_ID, 2, 1); | |||
result = dao.selectUsers(PermissionQuery.builder().permission("user").build(), COMPONENT_ID, 2, 1); | |||
assertThat(result).hasSize(1); | |||
assertThat(result.get(0).getName()).isEqualTo("User3"); | |||
} |
@@ -43,7 +43,7 @@ public class UserWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
public void select_all_users() throws Exception { | |||
setupData("users_with_permissions"); | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("user").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("user").build(); | |||
List<UserWithPermissionDto> result = dao.selectUsers(query, TEMPLATE_ID); | |||
assertThat(result).hasSize(3); | |||
@@ -67,7 +67,7 @@ public class UserWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
public void return_nothing_on_unknown_template_key() throws Exception { | |||
setupData("users_with_permissions"); | |||
WithPermissionQuery query = WithPermissionQuery.builder().permission("user").build(); | |||
PermissionQuery query = PermissionQuery.builder().permission("user").build(); | |||
List<UserWithPermissionDto> result = dao.selectUsers(query, 999L); | |||
assertThat(result).hasSize(3); | |||
@@ -86,7 +86,7 @@ public class UserWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
setupData("users_with_permissions"); | |||
// user1 and user2 have permission user | |||
assertThat(dao.selectUsers(WithPermissionQuery.builder().permission("user").membership(WithPermissionQuery.IN).build(), TEMPLATE_ID)).hasSize(2); | |||
assertThat(dao.selectUsers(PermissionQuery.builder().permission("user").membership(PermissionQuery.IN).build(), TEMPLATE_ID)).hasSize(2); | |||
} | |||
@Test | |||
@@ -94,18 +94,18 @@ public class UserWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
setupData("users_with_permissions"); | |||
// Only user3 has not the user permission | |||
assertThat(dao.selectUsers(WithPermissionQuery.builder().permission("user").membership(WithPermissionQuery.OUT).build(), TEMPLATE_ID)).hasSize(1); | |||
assertThat(dao.selectUsers(PermissionQuery.builder().permission("user").membership(PermissionQuery.OUT).build(), TEMPLATE_ID)).hasSize(1); | |||
} | |||
@Test | |||
public void search_by_user_name() throws Exception { | |||
setupData("users_with_permissions"); | |||
List<UserWithPermissionDto> result = dao.selectUsers(WithPermissionQuery.builder().permission("user").search("SEr1").build(), TEMPLATE_ID); | |||
List<UserWithPermissionDto> result = dao.selectUsers(PermissionQuery.builder().permission("user").search("SEr1").build(), TEMPLATE_ID); | |||
assertThat(result).hasSize(1); | |||
assertThat(result.get(0).getName()).isEqualTo("User1"); | |||
result = dao.selectUsers(WithPermissionQuery.builder().permission("user").search("user").build(), TEMPLATE_ID); | |||
result = dao.selectUsers(PermissionQuery.builder().permission("user").search("user").build(), TEMPLATE_ID); | |||
assertThat(result).hasSize(3); | |||
} | |||
@@ -113,7 +113,7 @@ public class UserWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
public void should_be_sorted_by_user_name() throws Exception { | |||
setupData("users_with_permissions_should_be_sorted_by_user_name"); | |||
List<UserWithPermissionDto> result = dao.selectUsers(WithPermissionQuery.builder().permission("user").build(), TEMPLATE_ID); | |||
List<UserWithPermissionDto> result = dao.selectUsers(PermissionQuery.builder().permission("user").build(), TEMPLATE_ID); | |||
assertThat(result).hasSize(3); | |||
assertThat(result.get(0).getName()).isEqualTo("User1"); | |||
assertThat(result.get(1).getName()).isEqualTo("User2"); | |||
@@ -124,17 +124,17 @@ public class UserWithPermissionTemplateDaoTest extends AbstractDaoTestCase { | |||
public void should_be_paginated() throws Exception { | |||
setupData("users_with_permissions"); | |||
List<UserWithPermissionDto> result = dao.selectUsers(WithPermissionQuery.builder().permission("user").build(), TEMPLATE_ID, 0, 2); | |||
List<UserWithPermissionDto> result = dao.selectUsers(PermissionQuery.builder().permission("user").build(), TEMPLATE_ID, 0, 2); | |||
assertThat(result).hasSize(2); | |||
assertThat(result.get(0).getName()).isEqualTo("User1"); | |||
assertThat(result.get(1).getName()).isEqualTo("User2"); | |||
result = dao.selectUsers(WithPermissionQuery.builder().permission("user").build(), TEMPLATE_ID, 1, 2); | |||
result = dao.selectUsers(PermissionQuery.builder().permission("user").build(), TEMPLATE_ID, 1, 2); | |||
assertThat(result).hasSize(2); | |||
assertThat(result.get(0).getName()).isEqualTo("User2"); | |||
assertThat(result.get(1).getName()).isEqualTo("User3"); | |||
result = dao.selectUsers(WithPermissionQuery.builder().permission("user").build(), TEMPLATE_ID, 2, 1); | |||
result = dao.selectUsers(PermissionQuery.builder().permission("user").build(), TEMPLATE_ID, 2, 1); | |||
assertThat(result).hasSize(1); | |||
assertThat(result.get(0).getName()).isEqualTo("User3"); | |||
} |
@@ -0,0 +1,57 @@ | |||
/* | |||
* 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; | |||
import static org.fest.assertions.Fail.fail; | |||
public class GroupMembershipQueryTest { | |||
@Test | |||
public void fail_on_null_login() throws Exception { | |||
GroupMembershipQuery.Builder builder = GroupMembershipQuery.builder(); | |||
builder.login(null); | |||
try { | |||
builder.build(); | |||
fail(); | |||
} catch (Exception e) { | |||
assertThat(e).isInstanceOf(NullPointerException.class).hasMessage("User login cant be null."); | |||
} | |||
} | |||
@Test | |||
public void fail_on_invalid_membership() throws Exception { | |||
GroupMembershipQuery.Builder builder = GroupMembershipQuery.builder(); | |||
builder.login("nelson"); | |||
builder.membership("unknwown"); | |||
try { | |||
builder.build(); | |||
fail(); | |||
} catch (Exception e) { | |||
assertThat(e).isInstanceOf(IllegalArgumentException.class).hasMessage("Membership is not valid (got unknwown). Availables values are [ANY, IN, OUT]"); | |||
} | |||
} | |||
} |
@@ -54,11 +54,11 @@ public class DefaultCharacteristic implements Characteristic { | |||
return this; | |||
} | |||
@CheckForNull | |||
public String key() { | |||
return key; | |||
} | |||
@CheckForNull | |||
public DefaultCharacteristic setKey(@Nullable String key) { | |||
this.key = key; | |||
return this; |
@@ -31,6 +31,9 @@ import java.util.Map; | |||
*/ | |||
public class InternalGroupMembershipService implements ServerComponent { | |||
private static final String SELECTED_MEMBERSHIP = "selected"; | |||
private static final String DESELECTED_MEMBERSHIP = "deselected"; | |||
private final GroupMembershipFinder finder; | |||
public InternalGroupMembershipService(GroupMembershipFinder finder) { | |||
@@ -53,9 +56,9 @@ public class InternalGroupMembershipService implements ServerComponent { | |||
private String membership(Map<String, Object> params) { | |||
String selected = (String) params.get("selected"); | |||
if ("selected".equals(selected)) { | |||
if (SELECTED_MEMBERSHIP.equals(selected)) { | |||
return GroupMembershipQuery.IN; | |||
} else if ("deselected".equals(selected)) { | |||
} else if (DESELECTED_MEMBERSHIP.equals(selected)) { | |||
return GroupMembershipQuery.OUT; | |||
} else { | |||
return GroupMembershipQuery.ANY; |
@@ -75,15 +75,15 @@ public class InternalPermissionService implements ServerComponent { | |||
} | |||
public UserWithPermissionQueryResult findUsersWithPermission(Map<String, Object> params) { | |||
return finder.findUsersWithPermission(WithPermissionQueryParser.toQuery(params)); | |||
return finder.findUsersWithPermission(PermissionQueryParser.toQuery(params)); | |||
} | |||
public UserWithPermissionQueryResult findUsersWithPermissionTemplate(Map<String, Object> params) { | |||
return finder.findUsersWithPermissionTemplate(WithPermissionQueryParser.toQuery(params)); | |||
return finder.findUsersWithPermissionTemplate(PermissionQueryParser.toQuery(params)); | |||
} | |||
public GroupWithPermissionQueryResult findGroupsWithPermission(Map<String, Object> params) { | |||
return finder.findGroupsWithPermission(WithPermissionQueryParser.toQuery(params)); | |||
return finder.findGroupsWithPermission(PermissionQueryParser.toQuery(params)); | |||
} | |||
public void addPermission(final Map<String, Object> params) { |
@@ -56,11 +56,11 @@ public class InternalPermissionTemplateService implements ServerComponent { | |||
} | |||
public UserWithPermissionQueryResult findUsersWithPermissionTemplate(Map<String, Object> params) { | |||
return finder.findUsersWithPermissionTemplate(WithPermissionQueryParser.toQuery(params)); | |||
return finder.findUsersWithPermissionTemplate(PermissionQueryParser.toQuery(params)); | |||
} | |||
public GroupWithPermissionQueryResult findGroupsWithPermissionTemplate(Map<String, Object> params) { | |||
return finder.findGroupsWithPermissionTemplate(WithPermissionQueryParser.toQuery(params)); | |||
return finder.findGroupsWithPermissionTemplate(PermissionQueryParser.toQuery(params)); | |||
} | |||
@CheckForNull |
@@ -50,13 +50,13 @@ public class PermissionFinder implements ServerComponent { | |||
this.permissionTemplateDao = permissionTemplateDao; | |||
} | |||
public UserWithPermissionQueryResult findUsersWithPermission(WithPermissionQuery query) { | |||
public UserWithPermissionQueryResult findUsersWithPermission(PermissionQuery query) { | |||
Long componentId = componentId(query.component()); | |||
int limit = limit(query); | |||
return toUserQueryResult(permissionDao.selectUsers(query, componentId, offset(query), limit), limit); | |||
} | |||
public UserWithPermissionQueryResult findUsersWithPermissionTemplate(WithPermissionQuery query) { | |||
public UserWithPermissionQueryResult findUsersWithPermissionTemplate(PermissionQuery query) { | |||
Long permissionTemplateId = templateId(query.template()); | |||
int limit = limit(query); | |||
return toUserQueryResult(permissionTemplateDao.selectUsers(query, permissionTemplateId, offset(query), limit), limit); | |||
@@ -65,7 +65,7 @@ public class PermissionFinder implements ServerComponent { | |||
/** | |||
* Paging for groups search is done in Java in order to correctly handle the 'Anyone' group | |||
*/ | |||
public GroupWithPermissionQueryResult findGroupsWithPermission(WithPermissionQuery query) { | |||
public GroupWithPermissionQueryResult findGroupsWithPermission(PermissionQuery query) { | |||
Long componentId = componentId(query.component()); | |||
return toGroupQueryResult(permissionDao.selectGroups(query, componentId), query); | |||
} | |||
@@ -73,7 +73,7 @@ public class PermissionFinder implements ServerComponent { | |||
/** | |||
* Paging for groups search is done in Java in order to correctly handle the 'Anyone' group | |||
*/ | |||
public GroupWithPermissionQueryResult findGroupsWithPermissionTemplate(WithPermissionQuery query) { | |||
public GroupWithPermissionQueryResult findGroupsWithPermissionTemplate(PermissionQuery query) { | |||
Long permissionTemplateId = templateId(query.template()); | |||
return toGroupQueryResult(permissionTemplateDao.selectGroups(query, permissionTemplateId), query); | |||
} | |||
@@ -109,7 +109,7 @@ public class PermissionFinder implements ServerComponent { | |||
} | |||
} | |||
private GroupWithPermissionQueryResult toGroupQueryResult(List<GroupWithPermissionDto> dtos, WithPermissionQuery query) { | |||
private GroupWithPermissionQueryResult toGroupQueryResult(List<GroupWithPermissionDto> dtos, PermissionQuery query) { | |||
addAnyoneGroup(dtos, query); | |||
List<GroupWithPermissionDto> filteredDtos = filterMembership(dtos, query); | |||
@@ -126,24 +126,24 @@ public class PermissionFinder implements ServerComponent { | |||
return dto.getId(); | |||
} | |||
private int offset(WithPermissionQuery query) { | |||
private int offset(PermissionQuery query) { | |||
int pageSize = query.pageSize(); | |||
int pageIndex = query.pageIndex(); | |||
return (pageIndex - 1) * pageSize; | |||
} | |||
private int limit(WithPermissionQuery query) { | |||
private int limit(PermissionQuery query) { | |||
// Add one to page size in order to be able to know if there's more results or not | |||
return query.pageSize() + 1; | |||
} | |||
private List<GroupWithPermissionDto> filterMembership(List<GroupWithPermissionDto> dtos, final WithPermissionQuery query) { | |||
private List<GroupWithPermissionDto> filterMembership(List<GroupWithPermissionDto> dtos, final PermissionQuery query) { | |||
return newArrayList(Iterables.filter(dtos, new Predicate<GroupWithPermissionDto>() { | |||
@Override | |||
public boolean apply(GroupWithPermissionDto dto) { | |||
if (query.membership().equals(WithPermissionQuery.IN)) { | |||
if (PermissionQuery.IN.equals(query.membership())) { | |||
return dto.getPermission() != null; | |||
} else if (query.membership().equals(WithPermissionQuery.OUT)) { | |||
} else if (PermissionQuery.OUT.equals(query.membership())) { | |||
return dto.getPermission() == null; | |||
} | |||
return true; | |||
@@ -155,7 +155,7 @@ public class PermissionFinder implements ServerComponent { | |||
* As the anyone group does not exists in db, it's not returned when it has not the permission. | |||
* We have to manually add it at the begin of the list, if it matched the search text | |||
*/ | |||
private void addAnyoneGroup(List<GroupWithPermissionDto> groups, WithPermissionQuery query) { | |||
private void addAnyoneGroup(List<GroupWithPermissionDto> groups, PermissionQuery query) { | |||
boolean hasAnyoneGroup = Iterables.any(groups, new Predicate<GroupWithPermissionDto>() { | |||
@Override | |||
public boolean apply(GroupWithPermissionDto group) { |
@@ -20,16 +20,23 @@ | |||
package org.sonar.server.permission; | |||
import org.sonar.core.permission.WithPermissionQuery; | |||
import org.sonar.core.permission.PermissionQuery; | |||
import org.sonar.core.user.GroupMembershipQuery; | |||
import org.sonar.server.util.RubyUtils; | |||
import java.util.Map; | |||
public class WithPermissionQueryParser { | |||
public class PermissionQueryParser { | |||
static WithPermissionQuery toQuery(Map<String, Object> params) { | |||
WithPermissionQuery.Builder builder = WithPermissionQuery.builder(); | |||
private static final String SELECTED_MEMBERSHIP = "selected"; | |||
private static final String DESELECTED_MEMBERSHIP = "deselected"; | |||
private PermissionQueryParser(){ | |||
// Utility class | |||
} | |||
static PermissionQuery toQuery(Map<String, Object> params) { | |||
PermissionQuery.Builder builder = PermissionQuery.builder(); | |||
builder.permission((String) params.get("permission")); | |||
builder.component((String) params.get("component")); | |||
builder.template((String) params.get("template")); | |||
@@ -42,9 +49,9 @@ public class WithPermissionQueryParser { | |||
private static String membership(Map<String, Object> params) { | |||
String selected = (String) params.get("selected"); | |||
if ("selected".equals(selected)) { | |||
if (SELECTED_MEMBERSHIP.equals(selected)) { | |||
return GroupMembershipQuery.IN; | |||
} else if ("deselected".equals(selected)) { | |||
} else if (DESELECTED_MEMBERSHIP.equals(selected)) { | |||
return GroupMembershipQuery.OUT; | |||
} else { | |||
return GroupMembershipQuery.ANY; |
@@ -37,7 +37,7 @@ import org.sonar.api.web.UserRole; | |||
import org.sonar.core.component.ComponentDto; | |||
import org.sonar.core.permission.GlobalPermissions; | |||
import org.sonar.core.permission.PermissionFacade; | |||
import org.sonar.core.permission.WithPermissionQuery; | |||
import org.sonar.core.permission.PermissionQuery; | |||
import org.sonar.core.resource.ResourceDao; | |||
import org.sonar.core.resource.ResourceDto; | |||
import org.sonar.core.resource.ResourceQuery; | |||
@@ -103,13 +103,13 @@ public class InternalPermissionServiceTest { | |||
"component", "org.sample.Sample", | |||
"selected", "all")); | |||
ArgumentCaptor<WithPermissionQuery> argumentCaptor = ArgumentCaptor.forClass(WithPermissionQuery.class); | |||
ArgumentCaptor<PermissionQuery> argumentCaptor = ArgumentCaptor.forClass(PermissionQuery.class); | |||
verify(finder).findUsersWithPermission(argumentCaptor.capture()); | |||
WithPermissionQuery query = argumentCaptor.getValue(); | |||
PermissionQuery query = argumentCaptor.getValue(); | |||
assertThat(query.component()).isEqualTo("org.sample.Sample"); | |||
assertThat(query.permission()).isEqualTo("user"); | |||
assertThat(query.membership()).isEqualTo(WithPermissionQuery.ANY); | |||
assertThat(query.membership()).isEqualTo(PermissionQuery.ANY); | |||
} | |||
@Test | |||
@@ -119,13 +119,13 @@ public class InternalPermissionServiceTest { | |||
"component", "org.sample.Sample", | |||
"selected", "all")); | |||
ArgumentCaptor<WithPermissionQuery> argumentCaptor = ArgumentCaptor.forClass(WithPermissionQuery.class); | |||
ArgumentCaptor<PermissionQuery> argumentCaptor = ArgumentCaptor.forClass(PermissionQuery.class); | |||
verify(finder).findGroupsWithPermission(argumentCaptor.capture()); | |||
WithPermissionQuery query = argumentCaptor.getValue(); | |||
PermissionQuery query = argumentCaptor.getValue(); | |||
assertThat(query.component()).isEqualTo("org.sample.Sample"); | |||
assertThat(query.permission()).isEqualTo("admin"); | |||
assertThat(query.membership()).isEqualTo(WithPermissionQuery.ANY); | |||
assertThat(query.membership()).isEqualTo(PermissionQuery.ANY); | |||
} | |||
@Test |
@@ -78,7 +78,7 @@ public class InternalPermissionTemplateServiceTest { | |||
"permission", "user", | |||
"template", "my_template", | |||
"selected", "all")); | |||
verify(finder).findUsersWithPermissionTemplate(any(WithPermissionQuery.class)); | |||
verify(finder).findUsersWithPermissionTemplate(any(PermissionQuery.class)); | |||
} | |||
@Test | |||
@@ -88,7 +88,7 @@ public class InternalPermissionTemplateServiceTest { | |||
"template", "my_template", | |||
"selected", "all")); | |||
verify(finder).findGroupsWithPermissionTemplate(any(WithPermissionQuery.class)); | |||
verify(finder).findGroupsWithPermissionTemplate(any(PermissionQuery.class)); | |||
} | |||
@Test |
@@ -62,11 +62,11 @@ public class PermissionFinderTest { | |||
@Test | |||
public void find_users() throws Exception { | |||
when(permissionDao.selectUsers(any(WithPermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn( | |||
when(permissionDao.selectUsers(any(PermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn( | |||
newArrayList(new UserWithPermissionDto().setName("user1").setPermission("user")) | |||
); | |||
UserWithPermissionQueryResult result = finder.findUsersWithPermission(WithPermissionQuery.builder().permission("user").build()); | |||
UserWithPermissionQueryResult result = finder.findUsersWithPermission(PermissionQuery.builder().permission("user").build()); | |||
assertThat(result.users()).hasSize(1); | |||
assertThat(result.hasMoreResults()).isFalse(); | |||
} | |||
@@ -76,7 +76,7 @@ public class PermissionFinderTest { | |||
when(resourceDao.getResource(any(ResourceQuery.class))).thenReturn(null); | |||
try { | |||
finder.findUsersWithPermission(WithPermissionQuery.builder().permission("user").component("Unknown").build()); | |||
finder.findUsersWithPermission(PermissionQuery.builder().permission("user").component("Unknown").build()); | |||
fail(); | |||
} catch (Exception e) { | |||
assertThat(e).isInstanceOf(NotFoundException.class).hasMessage("Component 'Unknown' does not exist"); | |||
@@ -85,11 +85,11 @@ public class PermissionFinderTest { | |||
@Test | |||
public void find_users_with_paging() throws Exception { | |||
finder.findUsersWithPermission(WithPermissionQuery.builder().permission("user").pageIndex(3).pageSize(10).build()); | |||
finder.findUsersWithPermission(PermissionQuery.builder().permission("user").pageIndex(3).pageSize(10).build()); | |||
ArgumentCaptor<Integer> argumentOffset = ArgumentCaptor.forClass(Integer.class); | |||
ArgumentCaptor<Integer> argumentLimit = ArgumentCaptor.forClass(Integer.class); | |||
verify(permissionDao).selectUsers(any(WithPermissionQuery.class), anyLong(), argumentOffset.capture(), argumentLimit.capture()); | |||
verify(permissionDao).selectUsers(any(PermissionQuery.class), anyLong(), argumentOffset.capture(), argumentLimit.capture()); | |||
assertThat(argumentOffset.getValue()).isEqualTo(20); | |||
assertThat(argumentLimit.getValue()).isEqualTo(11); | |||
@@ -97,16 +97,16 @@ public class PermissionFinderTest { | |||
@Test | |||
public void find_users_with_paging_having_more_results() throws Exception { | |||
when(permissionDao.selectUsers(any(WithPermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn(newArrayList( | |||
when(permissionDao.selectUsers(any(PermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn(newArrayList( | |||
new UserWithPermissionDto().setName("user1").setPermission("user"), | |||
new UserWithPermissionDto().setName("user2").setPermission("user"), | |||
new UserWithPermissionDto().setName("user3").setPermission("user")) | |||
); | |||
UserWithPermissionQueryResult result = finder.findUsersWithPermission(WithPermissionQuery.builder().permission("user").pageIndex(1).pageSize(2).build()); | |||
UserWithPermissionQueryResult result = finder.findUsersWithPermission(PermissionQuery.builder().permission("user").pageIndex(1).pageSize(2).build()); | |||
ArgumentCaptor<Integer> argumentOffset = ArgumentCaptor.forClass(Integer.class); | |||
ArgumentCaptor<Integer> argumentLimit = ArgumentCaptor.forClass(Integer.class); | |||
verify(permissionDao).selectUsers(any(WithPermissionQuery.class), anyLong(), argumentOffset.capture(), argumentLimit.capture()); | |||
verify(permissionDao).selectUsers(any(PermissionQuery.class), anyLong(), argumentOffset.capture(), argumentLimit.capture()); | |||
assertThat(argumentOffset.getValue()).isEqualTo(0); | |||
assertThat(argumentLimit.getValue()).isEqualTo(3); | |||
@@ -115,17 +115,17 @@ public class PermissionFinderTest { | |||
@Test | |||
public void find_users_with_paging_having_no_more_results() throws Exception { | |||
when(permissionDao.selectUsers(any(WithPermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn(newArrayList( | |||
when(permissionDao.selectUsers(any(PermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn(newArrayList( | |||
new UserWithPermissionDto().setName("user1").setPermission("user"), | |||
new UserWithPermissionDto().setName("user2").setPermission("user"), | |||
new UserWithPermissionDto().setName("user4").setPermission("user"), | |||
new UserWithPermissionDto().setName("user3").setPermission("user")) | |||
); | |||
UserWithPermissionQueryResult result = finder.findUsersWithPermission(WithPermissionQuery.builder().permission("user").pageIndex(1).pageSize(10).build()); | |||
UserWithPermissionQueryResult result = finder.findUsersWithPermission(PermissionQuery.builder().permission("user").pageIndex(1).pageSize(10).build()); | |||
ArgumentCaptor<Integer> argumentOffset = ArgumentCaptor.forClass(Integer.class); | |||
ArgumentCaptor<Integer> argumentLimit = ArgumentCaptor.forClass(Integer.class); | |||
verify(permissionDao).selectUsers(any(WithPermissionQuery.class), anyLong(), argumentOffset.capture(), argumentLimit.capture()); | |||
verify(permissionDao).selectUsers(any(PermissionQuery.class), anyLong(), argumentOffset.capture(), argumentLimit.capture()); | |||
assertThat(argumentOffset.getValue()).isEqualTo(0); | |||
assertThat(argumentLimit.getValue()).isEqualTo(11); | |||
@@ -134,19 +134,19 @@ public class PermissionFinderTest { | |||
@Test | |||
public void find_groups() throws Exception { | |||
when(permissionDao.selectGroups(any(WithPermissionQuery.class), anyLong())).thenReturn( | |||
when(permissionDao.selectGroups(any(PermissionQuery.class), anyLong())).thenReturn( | |||
newArrayList(new GroupWithPermissionDto().setName("users").setPermission("user")) | |||
); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission( | |||
WithPermissionQuery.builder().permission("user").membership(WithPermissionQuery.IN).build()); | |||
PermissionQuery.builder().permission("user").membership(PermissionQuery.IN).build()); | |||
assertThat(result.groups()).hasSize(1); | |||
assertThat(result.hasMoreResults()).isFalse(); | |||
} | |||
@Test | |||
public void find_groups_should_be_paginated() throws Exception { | |||
when(permissionDao.selectGroups(any(WithPermissionQuery.class), anyLong())).thenReturn(newArrayList( | |||
when(permissionDao.selectGroups(any(PermissionQuery.class), anyLong())).thenReturn(newArrayList( | |||
new GroupWithPermissionDto().setName("Anyone").setPermission("user"), | |||
new GroupWithPermissionDto().setName("Admin").setPermission("user"), | |||
new GroupWithPermissionDto().setName("Users").setPermission(null), | |||
@@ -155,7 +155,7 @@ public class PermissionFinderTest { | |||
)); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission( | |||
WithPermissionQuery.builder() | |||
PermissionQuery.builder() | |||
.permission("user") | |||
.pageSize(2) | |||
.pageIndex(2) | |||
@@ -168,7 +168,7 @@ public class PermissionFinderTest { | |||
assertThat(groups.get(1).name()).isEqualTo("Reviewers"); | |||
assertThat(finder.findGroupsWithPermission( | |||
WithPermissionQuery.builder() | |||
PermissionQuery.builder() | |||
.permission("user") | |||
.pageSize(2) | |||
.pageIndex(3) | |||
@@ -177,7 +177,7 @@ public class PermissionFinderTest { | |||
@Test | |||
public void find_groups_should_filter_membership() throws Exception { | |||
when(permissionDao.selectGroups(any(WithPermissionQuery.class), anyLong())).thenReturn(newArrayList( | |||
when(permissionDao.selectGroups(any(PermissionQuery.class), anyLong())).thenReturn(newArrayList( | |||
new GroupWithPermissionDto().setName("Anyone").setPermission("user"), | |||
new GroupWithPermissionDto().setName("Admin").setPermission("user"), | |||
new GroupWithPermissionDto().setName("Users").setPermission(null), | |||
@@ -186,21 +186,21 @@ public class PermissionFinderTest { | |||
)); | |||
assertThat(finder.findGroupsWithPermission( | |||
WithPermissionQuery.builder().permission("user").membership(WithPermissionQuery.IN).build()).groups()).hasSize(2); | |||
PermissionQuery.builder().permission("user").membership(PermissionQuery.IN).build()).groups()).hasSize(2); | |||
assertThat(finder.findGroupsWithPermission( | |||
WithPermissionQuery.builder().permission("user").membership(WithPermissionQuery.OUT).build()).groups()).hasSize(3); | |||
PermissionQuery.builder().permission("user").membership(PermissionQuery.OUT).build()).groups()).hasSize(3); | |||
assertThat(finder.findGroupsWithPermission( | |||
WithPermissionQuery.builder().permission("user").membership(WithPermissionQuery.ANY).build()).groups()).hasSize(5); | |||
PermissionQuery.builder().permission("user").membership(PermissionQuery.ANY).build()).groups()).hasSize(5); | |||
} | |||
@Test | |||
public void find_groups_with_added_anyone_group() throws Exception { | |||
when(permissionDao.selectGroups(any(WithPermissionQuery.class), anyLong())).thenReturn( | |||
when(permissionDao.selectGroups(any(PermissionQuery.class), anyLong())).thenReturn( | |||
newArrayList(new GroupWithPermissionDto().setName("users").setPermission("user")) | |||
); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission( WithPermissionQuery.builder().permission("user") | |||
.pageIndex(1).membership(WithPermissionQuery.ANY).build()); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission( PermissionQuery.builder().permission("user") | |||
.pageIndex(1).membership(PermissionQuery.ANY).build()); | |||
assertThat(result.groups()).hasSize(2); | |||
GroupWithPermission first = result.groups().get(0); | |||
assertThat(first.name()).isEqualTo("Anyone"); | |||
@@ -209,35 +209,35 @@ public class PermissionFinderTest { | |||
@Test | |||
public void find_groups_without_adding_anyone_group_when_search_text_do_not_matched() throws Exception { | |||
when(permissionDao.selectGroups(any(WithPermissionQuery.class), anyLong())).thenReturn( | |||
when(permissionDao.selectGroups(any(PermissionQuery.class), anyLong())).thenReturn( | |||
newArrayList(new GroupWithPermissionDto().setName("users").setPermission("user")) | |||
); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission(WithPermissionQuery.builder().permission("user").search("other") | |||
.pageIndex(1).membership(WithPermissionQuery.ANY).build()); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission(PermissionQuery.builder().permission("user").search("other") | |||
.pageIndex(1).membership(PermissionQuery.ANY).build()); | |||
// Anyone group should not be added | |||
assertThat(result.groups()).hasSize(1); | |||
} | |||
@Test | |||
public void find_groups_with_added_anyone_group_when_search_text_matched() throws Exception { | |||
when(permissionDao.selectGroups(any(WithPermissionQuery.class), anyLong())).thenReturn( | |||
when(permissionDao.selectGroups(any(PermissionQuery.class), anyLong())).thenReturn( | |||
newArrayList(new GroupWithPermissionDto().setName("MyAnyGroup").setPermission("user")) | |||
); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission(WithPermissionQuery.builder().permission("user").search("any") | |||
.pageIndex(1).membership(WithPermissionQuery.ANY).build()); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission(PermissionQuery.builder().permission("user").search("any") | |||
.pageIndex(1).membership(PermissionQuery.ANY).build()); | |||
assertThat(result.groups()).hasSize(2); | |||
} | |||
@Test | |||
public void find_groups_without_adding_anyone_group_when_out_membership_selected() throws Exception { | |||
when(permissionDao.selectGroups(any(WithPermissionQuery.class), anyLong())).thenReturn( | |||
when(permissionDao.selectGroups(any(PermissionQuery.class), anyLong())).thenReturn( | |||
newArrayList(new GroupWithPermissionDto().setName("users").setPermission("user")) | |||
); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission( WithPermissionQuery.builder().permission("user") | |||
.pageIndex(1).membership(WithPermissionQuery.OUT).build()); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermission( PermissionQuery.builder().permission("user") | |||
.pageIndex(1).membership(PermissionQuery.OUT).build()); | |||
// Anyone group should not be added | |||
assertThat(result.groups()).hasSize(1); | |||
} | |||
@@ -247,11 +247,11 @@ public class PermissionFinderTest { | |||
public void find_users_from_permission_template() throws Exception { | |||
when(permissionTemplateDao.selectTemplateByKey(anyString())).thenReturn(new PermissionTemplateDto().setId(1L).setKee("my_template")); | |||
when(permissionTemplateDao.selectUsers(any(WithPermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn( | |||
when(permissionTemplateDao.selectUsers(any(PermissionQuery.class), anyLong(), anyInt(), anyInt())).thenReturn( | |||
newArrayList(new UserWithPermissionDto().setName("user1").setPermission("user")) | |||
); | |||
UserWithPermissionQueryResult result = finder.findUsersWithPermissionTemplate(WithPermissionQuery.builder().permission("user").template("my_template").build()); | |||
UserWithPermissionQueryResult result = finder.findUsersWithPermissionTemplate(PermissionQuery.builder().permission("user").template("my_template").build()); | |||
assertThat(result.users()).hasSize(1); | |||
assertThat(result.hasMoreResults()).isFalse(); | |||
} | |||
@@ -261,7 +261,7 @@ public class PermissionFinderTest { | |||
when(permissionTemplateDao.selectTemplateByKey(anyString())).thenReturn(null); | |||
try { | |||
finder.findUsersWithPermissionTemplate(WithPermissionQuery.builder().permission("user").template("Unknown").build()); | |||
finder.findUsersWithPermissionTemplate(PermissionQuery.builder().permission("user").template("Unknown").build()); | |||
fail(); | |||
} catch (Exception e) { | |||
assertThat(e).isInstanceOf(NotFoundException.class).hasMessage("Template 'Unknown' does not exist"); | |||
@@ -272,12 +272,12 @@ public class PermissionFinderTest { | |||
public void find_groups_from_permission_template() throws Exception { | |||
when(permissionTemplateDao.selectTemplateByKey(anyString())).thenReturn(new PermissionTemplateDto().setId(1L).setKee("my_template")); | |||
when(permissionTemplateDao.selectGroups(any(WithPermissionQuery.class), anyLong())).thenReturn( | |||
when(permissionTemplateDao.selectGroups(any(PermissionQuery.class), anyLong())).thenReturn( | |||
newArrayList(new GroupWithPermissionDto().setName("users").setPermission("user")) | |||
); | |||
GroupWithPermissionQueryResult result = finder.findGroupsWithPermissionTemplate( | |||
WithPermissionQuery.builder().permission("user").template("my_template").membership(WithPermissionQuery.OUT).build()); | |||
PermissionQuery.builder().permission("user").template("my_template").membership(PermissionQuery.OUT).build()); | |||
assertThat(result.groups()).hasSize(1); | |||
assertThat(result.hasMoreResults()).isFalse(); | |||
} | |||
@@ -287,7 +287,7 @@ public class PermissionFinderTest { | |||
when(permissionTemplateDao.selectTemplateByKey(anyString())).thenReturn(null); | |||
try { | |||
finder.findGroupsWithPermissionTemplate(WithPermissionQuery.builder().permission("user").template("Unknown").build()); | |||
finder.findGroupsWithPermissionTemplate(PermissionQuery.builder().permission("user").template("Unknown").build()); | |||
fail(); | |||
} catch (Exception e) { | |||
assertThat(e).isInstanceOf(NotFoundException.class).hasMessage("Template 'Unknown' does not exist"); |
@@ -21,14 +21,14 @@ | |||
package org.sonar.server.permission; | |||
import org.junit.Test; | |||
import org.sonar.core.permission.WithPermissionQuery; | |||
import org.sonar.core.permission.PermissionQuery; | |||
import java.util.Map; | |||
import static com.google.common.collect.Maps.newHashMap; | |||
import static org.fest.assertions.Assertions.assertThat; | |||
public class WithPermissionQueryParserTest { | |||
public class PermissionQueryParserTest { | |||
@Test | |||
public void to_query_with_all_params() throws Exception { | |||
@@ -40,7 +40,7 @@ public class WithPermissionQueryParserTest { | |||
params.put("selected", "all"); | |||
params.put("page", 2); | |||
params.put("pageSize", 50); | |||
WithPermissionQuery query = WithPermissionQueryParser.toQuery(params); | |||
PermissionQuery query = PermissionQueryParser.toQuery(params); | |||
assertThat(query.permission()).isEqualTo("admin"); | |||
assertThat(query.component()).isEqualTo("org.sample.Sample"); | |||
@@ -48,7 +48,7 @@ public class WithPermissionQueryParserTest { | |||
assertThat(query.search()).isEqualTo("text"); | |||
assertThat(query.pageSize()).isEqualTo(50); | |||
assertThat(query.pageIndex()).isEqualTo(2); | |||
assertThat(query.membership()).isEqualTo(WithPermissionQuery.ANY); | |||
assertThat(query.membership()).isEqualTo(PermissionQuery.ANY); | |||
} | |||
@Test | |||
@@ -57,7 +57,7 @@ public class WithPermissionQueryParserTest { | |||
params.put("permission", "admin"); | |||
params.put("selected", "selected"); | |||
assertThat(WithPermissionQueryParser.toQuery(params).membership()).isEqualTo(WithPermissionQuery.IN); | |||
assertThat(PermissionQueryParser.toQuery(params).membership()).isEqualTo(PermissionQuery.IN); | |||
} | |||
@Test | |||
@@ -66,7 +66,7 @@ public class WithPermissionQueryParserTest { | |||
params.put("permission", "admin"); | |||
params.put("selected", "deselected"); | |||
assertThat(WithPermissionQueryParser.toQuery(params).membership()).isEqualTo(WithPermissionQuery.OUT); | |||
assertThat(PermissionQueryParser.toQuery(params).membership()).isEqualTo(PermissionQuery.OUT); | |||
} | |||
@Test | |||
@@ -75,6 +75,7 @@ public class WithPermissionQueryParserTest { | |||
params.put("permission", "admin"); | |||
params.put("selected", "all"); | |||
assertThat(WithPermissionQueryParser.toQuery(params).membership()).isEqualTo(WithPermissionQuery.ANY); | |||
assertThat(PermissionQueryParser.toQuery(params).membership()).isEqualTo(PermissionQuery.ANY); | |||
} | |||
} |
@@ -0,0 +1,58 @@ | |||
/* | |||
* 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.server.permission; | |||
import org.junit.Test; | |||
import org.sonar.core.permission.PermissionQuery; | |||
import static org.fest.assertions.Assertions.assertThat; | |||
import static org.fest.assertions.Fail.fail; | |||
public class PermissionQueryTest { | |||
@Test | |||
public void fail_on_null_permission() throws Exception { | |||
PermissionQuery.Builder builder = PermissionQuery.builder(); | |||
builder.permission(null); | |||
try { | |||
builder.build(); | |||
fail(); | |||
} catch (Exception e) { | |||
assertThat(e).isInstanceOf(NullPointerException.class).hasMessage("Permission cant be null."); | |||
} | |||
} | |||
@Test | |||
public void fail_on_invalid_membership() throws Exception { | |||
PermissionQuery.Builder builder = PermissionQuery.builder(); | |||
builder.permission("admin"); | |||
builder.membership("unknwown"); | |||
try { | |||
builder.build(); | |||
fail(); | |||
} catch (Exception e) { | |||
assertThat(e).isInstanceOf(IllegalArgumentException.class).hasMessage("Membership is not valid (got unknwown). Availables values are [ANY, IN, OUT]"); | |||
} | |||
} | |||
} |