-
Notifications
You must be signed in to change notification settings - Fork 2k
/
test_publisher_auth.py
102 lines (77 loc) · 3.33 KB
/
test_publisher_auth.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import re
from nose.tools import assert_equal
import ckan.model as model
from ckan.lib.create_test_data import CreateTestData
from ckan.logic import NotAuthorized
from ckan.tests import *
from ckan.tests import setup_test_search_index
from base import FunctionalTestCase
from ckan.tests import search_related, is_search_supported
class TestPublisherGroups(FunctionalTestCase):
@classmethod
def setup_class(self):
from ckan.tests.mock_publisher_auth import MockPublisherAuth
self.auth = MockPublisherAuth()
model.Session.remove()
CreateTestData.create(auth_profile='publisher')
self.groupname = u'david'
self.packagename = u'testpkg'
model.repo.new_revision()
model.Session.add(model.Package(name=self.packagename))
model.repo.commit_and_remove()
@classmethod
def teardown_class(self):
model.Session.remove()
model.repo.rebuild_db()
model.Session.remove()
def _run_fail_test( self, username, action):
grp = model.Group.by_name(self.groupname)
context = { 'group': grp, 'model': model, 'user': username }
try:
self.auth.check_access(action,context, {})
assert False, "The user should not have access"
except NotAuthorized, e:
pass
def _run_success_test( self, username, action):
userobj = model.User.get(username)
grp = model.Group.by_name(self.groupname)
f = model.User.get_groups
def gg(*args, **kwargs):
return [grp]
model.User.get_groups = gg
context = { 'group': grp, 'model': model, 'user': username }
try:
self.auth.check_access(action, context, {})
except NotAuthorized, e:
assert False, "The user should have %s access: %r." % (action, e.extra_msg)
model.User.get_groups = f
def test_new_success(self):
self._run_success_test( 'russianfan', 'group_create' )
def test_new_fail(self):
self._run_fail_test( 'russianfan', 'group_create' )
def test_new_anon_fail(self):
self._run_fail_test( '', 'group_create' )
def test_new_unknown_fail(self):
self._run_fail_test( 'nosuchuser', 'group_create' )
def test_edit_success(self):
""" Success because user in group """
self._run_success_test( 'russianfan', 'group_update' )
def test_edit_fail(self):
""" Fail because user not in group """
self._run_fail_test( 'russianfan', 'group_update' )
def test_edit_anon_fail(self):
""" Fail because user is anon """
self._run_fail_test( '', 'group_update' )
def test_edit_unknown_fail(self):
self._run_fail_test( 'nosuchuser', 'group_update' )
def test_delete_success(self):
""" Success because user in group """
self._run_success_test( 'russianfan', 'group_delete' )
def test_delete_fail(self):
""" Fail because user not in group """
self._run_fail_test( 'russianfan', 'group_delete' )
def test_delete_anon_fail(self):
""" Fail because user is anon """
self._run_fail_test( '', 'group_delete' )
def test_delete_unknown_fail(self):
self._run_fail_test( 'nosuchuser', 'group_delete' )