From 5b590d781e860ea2a6d5580f8edeba3ff4e52c2b Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Thu, 27 Jun 2013 13:01:39 +0200 Subject: [PATCH] Improve select global permission in authorization DAO to take into account user roles and anonymous user --- .../org/sonar/core/user/AuthorizationDao.java | 2 +- .../sonar/core/user/AuthorizationMapper.xml | 36 ++++++++++++++----- .../sonar/core/user/AuthorizationDaoTest.java | 22 ++++++++++-- .../should_return_global_permissions.xml | 13 ------- ...eturn_global_permissions_for_anonymous.xml | 11 ++++++ ...should_return_group_global_permissions.xml | 18 ++++++++++ .../should_return_user_global_permissions.xml | 18 ++++++++++ 7 files changed, 96 insertions(+), 24 deletions(-) delete mode 100644 sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_global_permissions.xml create mode 100644 sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_global_permissions_for_anonymous.xml create mode 100644 sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_group_global_permissions.xml create mode 100644 sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_user_global_permissions.xml diff --git a/sonar-core/src/main/java/org/sonar/core/user/AuthorizationDao.java b/sonar-core/src/main/java/org/sonar/core/user/AuthorizationDao.java index 7a826417df0..81495ecc7b2 100644 --- a/sonar-core/src/main/java/org/sonar/core/user/AuthorizationDao.java +++ b/sonar-core/src/main/java/org/sonar/core/user/AuthorizationDao.java @@ -90,7 +90,7 @@ public class AuthorizationDao implements ServerComponent { return session.selectList(sql, params); } - public List selectGlobalPermissions(String userLogin){ + public List selectGlobalPermissions(@Nullable String userLogin){ SqlSession session = mybatis.openSession(); try { Map params = newHashMap(); diff --git a/sonar-core/src/main/resources/org/sonar/core/user/AuthorizationMapper.xml b/sonar-core/src/main/resources/org/sonar/core/user/AuthorizationMapper.xml index c872b7274ac..811a813d440 100644 --- a/sonar-core/src/main/resources/org/sonar/core/user/AuthorizationMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/user/AuthorizationMapper.xml @@ -68,14 +68,34 @@ diff --git a/sonar-core/src/test/java/org/sonar/core/user/AuthorizationDaoTest.java b/sonar-core/src/test/java/org/sonar/core/user/AuthorizationDaoTest.java index df198a60280..572bfacaf0a 100644 --- a/sonar-core/src/test/java/org/sonar/core/user/AuthorizationDaoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/user/AuthorizationDaoTest.java @@ -152,12 +152,30 @@ public class AuthorizationDaoTest extends AbstractDaoTestCase { } @Test - public void should_return_global_permissions() { - setupData("should_return_global_permissions"); + public void should_return_user_global_permissions() { + setupData("should_return_user_global_permissions"); AuthorizationDao authorization = new AuthorizationDao(getMyBatis()); assertThat(authorization.selectGlobalPermissions("john")).containsOnly("user", "admin"); assertThat(authorization.selectGlobalPermissions("arthur")).containsOnly("user"); assertThat(authorization.selectGlobalPermissions("none")).isEmpty(); } + + @Test + public void should_return_group_global_permissions() { + setupData("should_return_group_global_permissions"); + + AuthorizationDao authorization = new AuthorizationDao(getMyBatis()); + assertThat(authorization.selectGlobalPermissions("john")).containsOnly("user", "admin"); + assertThat(authorization.selectGlobalPermissions("arthur")).containsOnly("user"); + assertThat(authorization.selectGlobalPermissions("none")).isEmpty(); + } + + @Test + public void should_return_global_permissions_for_anonymous() { + setupData("should_return_global_permissions_for_anonymous"); + + AuthorizationDao authorization = new AuthorizationDao(getMyBatis()); + assertThat(authorization.selectGlobalPermissions(null)).containsOnly("user", "admin"); + } } diff --git a/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_global_permissions.xml b/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_global_permissions.xml deleted file mode 100644 index 863d395048f..00000000000 --- a/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_global_permissions.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_global_permissions_for_anonymous.xml b/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_global_permissions_for_anonymous.xml new file mode 100644 index 00000000000..515b647b270 --- /dev/null +++ b/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_global_permissions_for_anonymous.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_group_global_permissions.xml b/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_group_global_permissions.xml new file mode 100644 index 00000000000..88727cc53af --- /dev/null +++ b/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_group_global_permissions.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_user_global_permissions.xml b/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_user_global_permissions.xml new file mode 100644 index 00000000000..44c6a6b6ff7 --- /dev/null +++ b/sonar-core/src/test/resources/org/sonar/core/user/AuthorizationDaoTest/should_return_user_global_permissions.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + -- 2.39.5