Load user capabilities from Pillar config and allow extensions to extend.
Default caps can be overridden using the USER_CAPABILITIES name in config_local.py. These can be extended by Pillar Extensions.
This commit is contained in:
70
tests/test_user_capabilities.py
Normal file
70
tests/test_user_capabilities.py
Normal file
@@ -0,0 +1,70 @@
|
||||
from pillar.tests import PillarTestServer, AbstractPillarTest
|
||||
|
||||
|
||||
class UserCapsTestServer(PillarTestServer):
|
||||
def __init__(self, *args, **kwargs):
|
||||
PillarTestServer.__init__(self, *args, **kwargs)
|
||||
|
||||
from pillar.extension import PillarExtension
|
||||
|
||||
# Late-declare this class, so that it is recreated for each unit test.
|
||||
class UserCapsTestExtension(PillarExtension):
|
||||
user_roles = {
|
||||
'test-user',
|
||||
'test-မျောက်',
|
||||
}
|
||||
user_caps = {
|
||||
'subscriber': {'extra-sub-cap', 'another-cap'},
|
||||
'test-user': {'test-user-cap-1', 'နဂါးမောက်သီး'},
|
||||
'test-မျောက်': {'test-monkey-cap-1', 'နဂါးမောက်သီး'},
|
||||
}
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return 'test_user_caps'
|
||||
|
||||
def flask_config(self):
|
||||
return {}
|
||||
|
||||
def eve_settings(self):
|
||||
return {}
|
||||
|
||||
def blueprints(self):
|
||||
return []
|
||||
|
||||
self.load_extension(UserCapsTestExtension(), '/user-caps-test')
|
||||
|
||||
|
||||
class UserCapsTest(AbstractPillarTest):
|
||||
pillar_server_class = UserCapsTestServer
|
||||
|
||||
def setUp(self, **kwargs):
|
||||
super().setUp(**kwargs)
|
||||
|
||||
def tearDown(self):
|
||||
super().tearDown()
|
||||
|
||||
def test_default_caps(self):
|
||||
app_caps = self.app.user_caps
|
||||
|
||||
self.assertEqual(app_caps['demo'], frozenset({
|
||||
'subscriber', 'home-project'
|
||||
}))
|
||||
|
||||
def test_aggr_caps_merged_subscriber(self):
|
||||
app_caps = self.app.user_caps
|
||||
|
||||
self.assertEqual(app_caps['subscriber'], frozenset({
|
||||
'subscriber', 'home-project', 'extra-sub-cap', 'another-cap'
|
||||
}))
|
||||
|
||||
def test_aggr_caps_new_roles(self):
|
||||
app_caps = self.app.user_caps
|
||||
|
||||
self.assertEqual(app_caps['test-user'], frozenset({
|
||||
'test-user-cap-1', 'နဂါးမောက်သီး'
|
||||
}))
|
||||
|
||||
self.assertEqual(app_caps['test-မျောက်'], frozenset({
|
||||
'test-monkey-cap-1', 'နဂါးမောက်သီး'
|
||||
}))
|
Reference in New Issue
Block a user