You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2015/05/15 12:29:50 UTC
[06/10] allura git commit: [#7633] ticket:768 Add has_access API for
ForgeWiki
[#7633] ticket:768 Add has_access API for ForgeWiki
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/33dc14c6
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/33dc14c6
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/33dc14c6
Branch: refs/heads/ib/7633
Commit: 33dc14c66a051179b9a60af71ba66a331ecff088
Parents: d038918
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri May 15 09:09:08 2015 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Fri May 15 09:09:08 2015 +0000
----------------------------------------------------------------------
.../forgewiki/tests/functional/test_rest.py | 51 ++++++++++++++++++++
ForgeWiki/forgewiki/wiki_main.py | 3 +-
2 files changed, 53 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/33dc14c6/ForgeWiki/forgewiki/tests/functional/test_rest.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/tests/functional/test_rest.py b/ForgeWiki/forgewiki/tests/functional/test_rest.py
index 560503e..23021d2 100644
--- a/ForgeWiki/forgewiki/tests/functional/test_rest.py
+++ b/ForgeWiki/forgewiki/tests/functional/test_rest.py
@@ -100,3 +100,54 @@ class TestWikiApi(TestRestApiBase):
# make sure these are unchanged
assert_equal(json.dumps('<'), '"<"')
assert_equal(simplejson.dumps('<'), '"<"')
+
+
+class TestWikiHasAccess(TestRestApiBase):
+
+ def setUp(self):
+ super(TestWikiHasAccess, self).setUp()
+ self.setup_with_tools()
+
+ @td.with_wiki
+ def setup_with_tools(self):
+ h.set_context('test', 'wiki', neighborhood='Projects')
+
+ def test_has_access_no_params(self):
+ r = self.api_get('/rest/p/test/wiki/has_access', status=404)
+ r = self.api_get('/rest/p/test/wiki/has_access?user=root', status=404)
+ r = self.api_get('/rest/p/test/wiki/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/wiki/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/wiki/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/wiki/has_access?user=test-admin&perm=admin',
+ user='test-user',
+ status=403)
+
+ def test_has_access(self):
+ r = self.api_get(
+ '/rest/p/test/wiki/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/wiki/has_access?user=test-user&perm=create',
+ user='root')
+ assert_equal(r.status_int, 200)
+ assert_equal(r.json['result'], False)
http://git-wip-us.apache.org/repos/asf/allura/blob/33dc14c6/ForgeWiki/forgewiki/wiki_main.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index a5b3d3e..b086d16 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -41,6 +41,7 @@ from allura.controllers import AppDiscussionController, BaseController, AppDiscu
from allura.controllers import DispatchIndex
from allura.controllers import attachments as ac
from allura.controllers.feed import FeedArgs, FeedController
+from allura.controllers.rest import AppRestControllerMixin
from allura.lib import widgets as w
from allura.lib.widgets import form_fields as ffw
from allura.lib.widgets.subscriptions import SubscribeForm
@@ -740,7 +741,7 @@ Some *emphasized* and **strong** text
'''
-class RootRestController(BaseController):
+class RootRestController(BaseController, AppRestControllerMixin):
def __init__(self):
self._discuss = AppDiscussionRestController()