You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by tv...@apache.org on 2013/09/24 19:37:01 UTC

[04/20] git commit: [#6392] ticket:432 Update tests

[#6392] ticket:432 Update tests


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

Branch: refs/heads/master
Commit: 12420f5afbd356c37fe3a3b06581a5460679c6bf
Parents: 394ccc3
Author: Igor Bondarenko <je...@gmail.com>
Authored: Wed Sep 11 16:30:00 2013 +0300
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Tue Sep 24 17:36:24 2013 +0000

----------------------------------------------------------------------
 .../templates/admin_widgets/card_field.html     |  5 +-
 Allura/allura/tests/functional/test_admin.py    | 56 +++++++++++++-------
 Allura/allura/tests/test_security.py            |  8 +++
 3 files changed, 47 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/12420f5a/Allura/allura/ext/admin/templates/admin_widgets/card_field.html
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/templates/admin_widgets/card_field.html b/Allura/allura/ext/admin/templates/admin_widgets/card_field.html
index 24533c7..19988d5 100644
--- a/Allura/allura/ext/admin/templates/admin_widgets/card_field.html
+++ b/Allura/allura/ext/admin/templates/admin_widgets/card_field.html
@@ -72,7 +72,7 @@
         </a>
     </li>
 
-    {% if block_list.get(name) %}
+    {% if block_list and block_list.get(name) %}
       <li>
         <a href="#" class="block-list">Block List</a>
         <div class="block-list grid-13" style="display: none">
@@ -80,8 +80,7 @@
           {% for u, reason in block_list[name] %}
           <li>
             <label>
-              <input type="checkbox" name="user_id" value="{{ u._id }}">
-              {{ u.username }} {{ '(' + reason + ')' if reason else '' }}
+              <input type="checkbox" name="user_id" value="{{ u._id }}">{{ u.username }} {{ '(' + reason + ')' if reason else '' }}
             </label>
           </li>
           {% endfor %}

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/12420f5a/Allura/allura/tests/functional/test_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_admin.py b/Allura/allura/tests/functional/test_admin.py
index 007746a..556eade 100644
--- a/Allura/allura/tests/functional/test_admin.py
+++ b/Allura/allura/tests/functional/test_admin.py
@@ -167,39 +167,57 @@ class TestProjectAdmin(TestController):
         assert "uninstall tool test-tool" in r.body, r.body
 
     @td.with_wiki
-    def test_add_user_to_block_list(self):
+    def test_block_user(self):
         r = self.app.get('/admin/wiki/permissions')
         assert '<a href="#" class="block-user">' in r
         assert '<a href="#" class="block-list">' not in r
 
-        self.app.post('/admin/wiki/block_user', params={'user_name': 'test-admin', 'perm': 'read', 'reason': 'Comment'})
-        user_id = M.User.by_username('test-admin')._id
-
+        self.app.post('/admin/wiki/block_user', params={'username': 'test-admin', 'perm': 'read', 'reason': 'Comment'})
+        user = M.User.by_username('test-admin')
+        admin_role = user.project_role()
         app = M.Project.query.get(shortname='test').app_instance('wiki')
-        assert_equals(app.config.block_user['read'], {str(user_id): 'Comment'})
+        ace = M.ACL.contains(M.ACE.deny(admin_role._id, 'read'), app.acl)
+        assert_equals(ace.reason, 'Comment')
         r = self.app.get('/admin/wiki/permissions')
         assert '<a href="#" class="block-list">' in r
-        assert '<input type="checkbox" name="user_id" value="%s">test-admin (Comment)' % user_id in r
+        assert '<input type="checkbox" name="user_id" value="%s">test-admin (Comment)' % user._id in r
 
     @td.with_wiki
-    def test_remove_user_from_block_list(self):
-        self.app.post('/admin/wiki/block_user', params={'user_name': 'test-admin', 'perm': 'read'})
+    def test_unblock_user(self):
+        self.app.post('/admin/wiki/block_user', params={'username': 'test-admin', 'perm': 'read'})
+        user = M.User.by_username('test-admin')
+        admin_role = user.project_role()
         app = M.Project.query.get(shortname='test').app_instance('wiki')
-        user_id = M.User.by_username('test-admin')._id
-        assert_equals(app.config.block_user['read'], {str(user_id): ''})
-        self.app.post('/admin/wiki/unblock_user', params={'user_id': str(user_id), 'perm': 'read'})
-        assert_equals(app.config.block_user['read'], dict())
+        ace = M.ACE.deny(admin_role._id, 'read')
+        assert M.ACL.contains(ace, app.acl) is not None
+        self.app.post('/admin/wiki/unblock_user', params={'user_id': str(user._id), 'perm': 'read'})
+        assert M.ACL.contains(ace, app.acl) is None
         r = self.app.get('/admin/wiki/permissions')
         assert '<a href="#" class="block-list">' not in r
 
     @td.with_wiki
-    def test_has_access_with_block_users(self):
-        wiki = M.Project.query.get(shortname='test').app_instance('wiki')
-        page = Page.query.get(app_config_id=wiki.config._id)
-        test_user = M.User.by_username('test-user')
-        assert has_access(page, 'read', user=test_user)()
-        self.app.post('/admin/wiki/block_user', params={'user_name': 'test-user', 'perm': 'read'})
-        assert not has_access(page, 'read', user=test_user)()
+    def test_block_unblock_multiple_users(self):
+        self.app.post('/admin/wiki/block_user', params={'username': 'test-admin', 'perm': 'read', 'reason': 'Spammer'})
+        self.app.post('/admin/wiki/block_user', params={'username': 'test-user', 'perm': 'read'})
+        admin = M.User.by_username('test-admin')
+        user = M.User.by_username('test-user')
+        admin_role = admin.project_role()
+        user_role = user.project_role()
+        app = M.Project.query.get(shortname='test').app_instance('wiki')
+        deny_admin = M.ACE.deny(admin_role._id, 'read')
+        deny_user = M.ACE.deny(user_role._id, 'read')
+        assert M.ACL.contains(deny_admin, app.acl) is not None
+        assert M.ACL.contains(deny_user, app.acl) is not None
+        r = self.app.get('/admin/wiki/permissions')
+        assert '<a href="#" class="block-list">' in r
+        assert '<input type="checkbox" name="user_id" value="%s">test-admin (Spammer)' % admin._id in r
+        assert '<input type="checkbox" name="user_id" value="%s">test-user' % user._id in r
+
+        self.app.post('/admin/wiki/unblock_user', params={'user_id': [str(user._id), str(admin._id)], 'perm': 'read'})
+        assert M.ACL.contains(deny_admin, app.acl) is None
+        assert M.ACL.contains(deny_user, app.acl) is None
+        r = self.app.get('/admin/wiki/permissions')
+        assert '<a href="#" class="block-list">' not in r
 
     def test_tool_permissions(self):
         BUILTIN_APPS = ['activity', 'blog', 'discussion', 'git', 'link',

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/12420f5a/Allura/allura/tests/test_security.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/test_security.py b/Allura/allura/tests/test_security.py
index 10ae614..3cc3a16 100644
--- a/Allura/allura/tests/test_security.py
+++ b/Allura/allura/tests/test_security.py
@@ -157,3 +157,11 @@ class TestSecurity(TestController):
         assert has_access(page, 'read', test_user)()
         c.project = project2
         assert has_access(page, 'read', test_user)()
+
+    @td.with_wiki
+    def test_deny_access_for_single_user(self):
+        wiki = c.project.app_instance('wiki')
+        user = M.User.by_username('test-user')
+        assert has_access(wiki, 'read', user)()
+        wiki.acl.append(M.ACE.deny(user.project_role()._id, 'read', 'Spammer'))
+        assert not has_access(wiki, 'read', user)()