From 2e4ed6f3c8238ebef2a02a77bad2043ae678ee31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 15 Aug 2017 15:25:50 +0200 Subject: [PATCH] Also allow demo users access to Flamenco & Attract --- cloud/__init__.py | 7 ++++--- tests/test_linked_roles.py | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/cloud/__init__.py b/cloud/__init__.py index 773a578..b62ea03 100644 --- a/cloud/__init__.py +++ b/cloud/__init__.py @@ -91,16 +91,17 @@ class CloudExtension(PillarExtension): from pillar.api import service linked_roles = {'flamenco-user', 'attract-user'} - link_to = 'subscriber' + link_to = {'subscriber', 'demo'} user_roles = set(user.get('roles', [])) # Determine what to do has_linked_roles = not (linked_roles - user_roles) + has_link_to = bool(link_to.intersection(user_roles)) action = '' - if link_to in user_roles and not has_linked_roles: + if has_link_to and not has_linked_roles: self._log.info('Granting roles %s to user %s', linked_roles, user['_id']) action = 'grant' - elif link_to not in user_roles and has_linked_roles: + elif not has_link_to and has_linked_roles: self._log.info('Revoking roles %s from user %s', linked_roles, user['_id']) action = 'revoke' diff --git a/tests/test_linked_roles.py b/tests/test_linked_roles.py index 8994c6a..90eaa04 100644 --- a/tests/test_linked_roles.py +++ b/tests/test_linked_roles.py @@ -2,7 +2,7 @@ from abstract_cloud_test import AbstractCloudTest class LinkedRolesTest(AbstractCloudTest): - def test_linked_roles(self): + def test_linked_roles_subscriber(self): user_id = self.create_user(roles=[]) db_user = self.fetch_user_from_db(user_id) @@ -15,3 +15,17 @@ class LinkedRolesTest(AbstractCloudTest): db_user = self.fetch_user_from_db(user_id) self.assertEqual(set(), set(db_user.get('roles', []))) + + def test_linked_roles_demo(self): + user_id = self.create_user(roles=[]) + db_user = self.fetch_user_from_db(user_id) + + self.badger(db_user['email'], {'demo'}, 'grant') + db_user = self.fetch_user_from_db(user_id) + self.assertEqual({'demo', 'flamenco-user', 'attract-user'}, + set(db_user['roles'])) + + self.badger(db_user['email'], {'demo'}, 'revoke') + db_user = self.fetch_user_from_db(user_id) + self.assertEqual(set(), + set(db_user.get('roles', [])))