aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@gmail.com>2013-08-19 12:34:30 +0200
committerJulien Lancelot <julien.lancelot@gmail.com>2013-08-19 12:34:30 +0200
commit88a9f3cd3247f2ec2e8d4bffea45bc3eed1298bc (patch)
tree7747ecdef4263dd5f58ec2f50ca97ffb77c7a17b
parent54cdfd193ee3d13fec1bfb3436d48667a1de201d (diff)
downloadsonarqube-88a9f3cd3247f2ec2e8d4bffea45bc3eed1298bc.tar.gz
sonarqube-88a9f3cd3247f2ec2e8d4bffea45bc3eed1298bc.zip
SONAR-4475 Revert check of last admin removal
-rw-r--r--plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties1
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/scan/JsonReportTest.java4
-rw-r--r--sonar-core/src/main/java/org/sonar/core/user/RoleDao.java10
-rw-r--r--sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java5
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml24
-rw-r--r--sonar-core/src/test/java/org/sonar/core/user/RoleDaoTest.java15
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/should_count_user_with_permission.xml25
-rw-r--r--sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java7
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/controllers/groups_controller.rb4
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb2
-rw-r--r--sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java19
11 files changed, 7 insertions, 109 deletions
diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties b/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties
index 01df59dce07..eb291c817c1 100644
--- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties
+++ b/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties
@@ -2233,7 +2233,6 @@ global_permissions.scan.desc=Ability to execute analyses, and to get all setting
global_permissions.dryRunScan=Execute Local Analysis (Dry Run)
global_permissions.dryRunScan.desc=Ability to execute local (dry run) analyses without pushing the results to the server, and to get all settings required to perform a local analysis. This permission does not include the ability to access secured settings such as the scm account password, the jira account password, and so on.<br/>\
This permission is <em>required</em> to execute a local analysis in Eclipse or via the Issues Report plugin.
-global_permissions.error.need_at_lest_one_admin=At least one admin must be defined.
#------------------------------------------------------------------------------
#
diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/JsonReportTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/JsonReportTest.java
index c40f3aa54ca..ce265bcfce2 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/scan/JsonReportTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/scan/JsonReportTest.java
@@ -23,7 +23,6 @@ import com.google.common.collect.Lists;
import org.json.JSONException;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.skyscreamer.jsonassert.JSONAssert;
@@ -85,7 +84,6 @@ public class JsonReportTest {
}
@Test
- @Ignore
public void should_write_json() throws JSONException {
DefaultIssue issue = new DefaultIssue()
.setKey("200")
@@ -109,7 +107,7 @@ public class JsonReportTest {
jsonReport.writeJson(writer);
JSONAssert.assertEquals(TestUtils.getResourceContent("/org/sonar/batch/scan/JsonReportTest/report.json"),
- writer.toString(), false);
+ writer.toString(), false);
}
@Test
diff --git a/sonar-core/src/main/java/org/sonar/core/user/RoleDao.java b/sonar-core/src/main/java/org/sonar/core/user/RoleDao.java
index b936f0e3308..c8bc741db1b 100644
--- a/sonar-core/src/main/java/org/sonar/core/user/RoleDao.java
+++ b/sonar-core/src/main/java/org/sonar/core/user/RoleDao.java
@@ -144,14 +144,4 @@ public class RoleDao implements TaskComponent, ServerComponent {
MyBatis.closeQuietly(session);
}
}
-
- public int countUserWithPermission(String permission) {
- SqlSession session = mybatis.openSession();
- try {
- RoleMapper mapper = session.getMapper(RoleMapper.class);
- return mapper.countUserWithPermission(permission);
- } finally {
- MyBatis.closeQuietly(session);
- }
- }
}
diff --git a/sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java b/sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java
index 7bd9fb0315e..531991b1531 100644
--- a/sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java
+++ b/sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java
@@ -21,6 +21,8 @@ package org.sonar.core.user;
import org.apache.ibatis.annotations.Param;
+import javax.annotation.Nullable;
+
import java.util.List;
/**
@@ -48,6 +50,5 @@ public interface RoleMapper {
int countUserRoles(Long resourceId);
- int countUserWithPermission(@Param("permission") String permission);
-
+ List<Long> countSystemAdministrators(@Nullable @Param("groupName") String groupName);
}
diff --git a/sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml b/sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml
index be4b7671b5d..3dba348d55a 100644
--- a/sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml
+++ b/sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml
@@ -88,28 +88,4 @@
SELECT count(id)
FROM group_roles WHERE resource_id=#{id}
</select>
-
- <select id="countUserWithPermission" parameterType="map" resultType="int">
- SELECT COUNT(DISTINCT tmp.id)
- FROM (
- SELECT u.id as id
- FROM users u
- INNER JOIN user_roles ur ON ur.user_id = u.id
- <where>
- AND (ur.role=#{permission} AND ur.resource_id IS NULL)
- AND u.active=${_true}
- </where>
- UNION
- select u.id as id
- FROM users u
- INNER JOIN groups_users gu ON gu.user_id = u.id
- INNER JOIN group_roles gr ON gr.group_id = gu.group_id
- INNER JOIN groups g ON g.id = gu.group_id
- <where>
- AND (gr.role=#{permission} AND gr.resource_id IS NULL)
- AND u.active=${_true}
- </where>
- ) tmp
- </select>
-
</mapper>
diff --git a/sonar-core/src/test/java/org/sonar/core/user/RoleDaoTest.java b/sonar-core/src/test/java/org/sonar/core/user/RoleDaoTest.java
index 427c2aee456..6d0c9b0830e 100644
--- a/sonar-core/src/test/java/org/sonar/core/user/RoleDaoTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/user/RoleDaoTest.java
@@ -76,19 +76,4 @@ public class RoleDaoTest extends AbstractDaoTestCase {
checkTable("groupPermissions", "group_roles", "group_id", "role");
}
- @Test
- public void should_count_user_with_permission() {
- setupData("should_count_user_with_permission");
-
- RoleDao dao = new RoleDao(getMyBatis());
-
- // 1 user have role 'admin', 1 user owns to the 'admin' group
- assertThat(dao.countUserWithPermission("admin")).isEqualTo(2);
- // 1 user have role 'profileadmin'
- assertThat(dao.countUserWithPermission("profileadmin")).isEqualTo(1);
- // 1 user owns to the 'user' group
- assertThat(dao.countUserWithPermission("user")).isEqualTo(1);
- assertThat(dao.countUserWithPermission("unknown")).isEqualTo(0);
- }
-
}
diff --git a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/should_count_user_with_permission.xml b/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/should_count_user_with_permission.xml
deleted file mode 100644
index 8fe58e3c7d3..00000000000
--- a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/should_count_user_with_permission.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<dataset>
-
- <!-- users having role -->
-
- <users id="200" login="admin_user" name="admin_user" active="[true]"/>
- <users id="201" login="profile_admin_user" name="profile_admin_user" active="[true]"/>
-
- <user_roles id="1" user_id="200" role="admin"/>
- <user_roles id="2" user_id="201" role="profileadmin"/>
-
- <!-- users having group -->
-
- <users id="202" login="admin_group" name="admin_group" active="[true]"/>
- <users id="203" login="user_group" name="user_group" active="[true]"/>
-
- <groups id="100" name="sonar-administrators"/>
- <groups id="101" name="sonar-users"/>
-
- <group_roles id="1" group_id="100" role="admin"/>
- <group_roles id="2" group_id="101" role="user"/>
-
- <groups_users user_id="202" group_id="100"/>
- <groups_users user_id="203" group_id="101"/>
-
-</dataset>
diff --git a/sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java b/sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java
index 409deb97f77..3fdcc998ab8 100644
--- a/sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java
+++ b/sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java
@@ -24,7 +24,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.ServerComponent;
import org.sonar.api.security.DefaultGroups;
-import org.sonar.api.utils.MessageException;
import org.sonar.core.permission.ComponentPermissionFacade;
import org.sonar.core.permission.Permission;
import org.sonar.core.user.*;
@@ -72,12 +71,6 @@ public class InternalPermissionService implements ServerComponent {
}
}
- public void checkAtLeastOneSysAdminExists(){
- if (roleDao.countUserWithPermission(Permission.SYSTEM_ADMIN.key()) == 0){
- throw MessageException.ofL10n("global_permissions.error.need_at_lest_one_admin", null);
- }
- }
-
private void applyPermissionTemplate(String templateKey, String componentId) {
permissionFacade.applyPermissionTemplate(templateKey, Long.parseLong(componentId));
}
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/groups_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/groups_controller.rb
index 1105fa5292b..f2d5fd5d878 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/groups_controller.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/groups_controller.rb
@@ -23,7 +23,7 @@ class GroupsController < ApplicationController
before_filter :admin_required
def index
- @groups = Group.all(:order => 'name')
+ @groups = Group.find(:all, :order => 'name')
if params[:id]
@group = Group.find(params[:id])
else
@@ -72,7 +72,7 @@ class GroupsController < ApplicationController
end
def to_index(errors, id)
- unless errors.empty?
+ if !errors.empty?
flash[:error] = errors.full_messages.join("<br/>\n")
end
diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb
index cf9104cc5e4..d109cf33c44 100644
--- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb
@@ -161,7 +161,7 @@ class UsersController < ApplicationController
end
def to_index(errors, id)
- unless errors.empty?
+ if !errors.empty?
flash[:error] = errors.full_messages.join("<br/>\n")
end
diff --git a/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java b/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java
index bcff818c1cd..6dd2f92fca6 100644
--- a/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java
+++ b/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java
@@ -30,7 +30,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.security.DefaultGroups;
-import org.sonar.api.utils.MessageException;
import org.sonar.core.permission.ComponentPermissionFacade;
import org.sonar.core.permission.Permission;
import org.sonar.core.user.*;
@@ -41,8 +40,6 @@ import org.sonar.server.user.MockUserSession;
import java.util.Map;
-import static org.fest.assertions.Assertions.assertThat;
-import static org.fest.assertions.Fail.fail;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.argThat;
import static org.mockito.Mockito.*;
@@ -194,22 +191,6 @@ public class InternalPermissionServiceTest {
verify(permissionFacade).applyPermissionTemplate("my_template_key", 3L);
}
- @Test
- public void should_check_at_least_one_sys_admin_exists() throws Exception {
- // One admin exists -> all is ok
- when(roleDao.countUserWithPermission(anyString())).thenReturn(1);
- service.checkAtLeastOneSysAdminExists();
-
- // No admin -> fail
- try {
- when(roleDao.countUserWithPermission(anyString())).thenReturn(0);
- service.checkAtLeastOneSysAdminExists();
- fail();
- } catch (Exception e){
- assertThat(e).isInstanceOf(MessageException.class);
- }
- }
-
protected static class MatchesUserRole extends BaseMatcher<UserRoleDto> {
private final UserRoleDto referenceDto;