You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2015/06/01 17:16:29 UTC

[10/10] allura git commit: [#7633] ticket:768 Add has_access API for ForgeGit

[#7633] ticket:768 Add has_access API for ForgeGit


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/06db8f50
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/06db8f50
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/06db8f50

Branch: refs/heads/master
Commit: 06db8f500bcb1cba83d80ede91929cb2e6c62cea
Parents: 7a0878d
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri May 15 09:39:12 2015 +0000
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Mon Jun 1 11:15:36 2015 -0400

----------------------------------------------------------------------
 Allura/allura/controllers/repository.py         |  3 +-
 .../tests/functional/test_controllers.py        | 53 +++++++++++++++++++-
 2 files changed, 54 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/06db8f50/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index 8fd2047..4c9cb83 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -50,6 +50,7 @@ from allura.lib.widgets.repo import SCMMergeRequestDisposeWidget, SCMCommitBrows
 from allura.lib.widgets.subscriptions import SubscribeForm
 from allura.controllers import AppDiscussionController
 from allura.controllers.base import DispatchIndex
+from allura.controllers.rest import AppRestControllerMixin
 from allura.controllers.feed import FeedController, FeedArgs
 from .base import BaseController
 
@@ -292,7 +293,7 @@ class RepoRootController(BaseController, FeedController):
         return dict(status=c.app.repo.status)
 
 
-class RepoRestController(RepoRootController):
+class RepoRestController(RepoRootController, AppRestControllerMixin):
 
     @expose('json:')
     def index(self, **kw):

http://git-wip-us.apache.org/repos/asf/allura/blob/06db8f50/ForgeGit/forgegit/tests/functional/test_controllers.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/functional/test_controllers.py b/ForgeGit/forgegit/tests/functional/test_controllers.py
index 9de228a..1312188 100644
--- a/ForgeGit/forgegit/tests/functional/test_controllers.py
+++ b/ForgeGit/forgegit/tests/functional/test_controllers.py
@@ -33,7 +33,7 @@ from alluratest.controller import setup_global_objects
 from allura import model as M
 from allura.lib import helpers as h
 from allura.lib import macro
-from alluratest.controller import TestController
+from alluratest.controller import TestController, TestRestApiBase
 from allura.tests.decorators import with_tool
 from forgegit.tests import with_git
 from forgegit import model as GM
@@ -441,6 +441,57 @@ class TestRestController(_TestCase):
         self.app.get('/rest/p/test/src-git/commits', status=200)
 
 
+class TestHasAccessAPI(TestRestApiBase):
+
+    def setUp(self):
+        super(TestHasAccessAPI, self).setUp()
+        self.setup_with_tools()
+
+    @with_git
+    def setup_with_tools(self):
+        pass
+
+    def test_has_access_no_params(self):
+        r = self.api_get('/rest/p/test/src-git/has_access', status=404)
+        r = self.api_get('/rest/p/test/src-git/has_access?user=root', status=404)
+        r = self.api_get('/rest/p/test/src-git/has_access?perm=read', status=404)
+
+    def test_has_access_unknown_params(self):
+        """Unknown user and/or permission always False for has_access API"""
+        r = self.api_get(
+            '/rest/p/test/src-git/has_access?user=babadook&perm=read',
+            user='root')
+        assert_equal(r.status_int, 200)
+        assert_equal(r.json['result'], False)
+        r = self.api_get(
+            '/rest/p/test/src-git/has_access?user=test-user&perm=jump',
+            user='root')
+        assert_equal(r.status_int, 200)
+        assert_equal(r.json['result'], False)
+
+    def test_has_access_not_admin(self):
+        """
+        User which has no 'admin' permission on neighborhood can't use
+        has_access API
+        """
+        self.api_get(
+            '/rest/p/test/src-git/has_access?user=test-admin&perm=admin',
+            user='test-user',
+            status=403)
+
+    def test_has_access(self):
+        r = self.api_get(
+            '/rest/p/test/src-git/has_access?user=test-admin&perm=create',
+            user='root')
+        assert_equal(r.status_int, 200)
+        assert_equal(r.json['result'], True)
+        r = self.api_get(
+            '/rest/p/test/src-git/has_access?user=test-user&perm=create',
+            user='root')
+        assert_equal(r.status_int, 200)
+        assert_equal(r.json['result'], False)
+
+
 class TestFork(_TestCase):
 
     def setUp(self):