def test_get_roles_cache_works(self): # Now let's assert the cache works. model = TestModel() user = MockUser() setattr(user, 'member', True) res = get_roles(user, model) self.assertEqual(len(res), 1) res2 = get_roles(user, model) self.assertEqual(len(res2), 1) self.assertEqual(res, res2)
def test_user_with_role_works(self): # Now let's make the user a member! model = TestModel() user = MockUser() setattr(user, 'member', True) res = get_roles(user, model) self.assertEqual(len(res), 1)
def test_roles_for_users_on_users_works_with_relevant_roles(self): # If for some reasons you want to enforce rules on users... django_user = User.objects.create(username="******", email="*****@*****.**", first_name="Test", last_name="Tester") setattr(django_user, 'relevant_roles', lambda: [Tester]) user = MockUser() # That's faster setattr(user, 'member', True) res = get_roles(user, django_user) self.assertEqual(len(res), 1)
def test_roles_for_users_on_users_raises_without_relevant_roles(self): # If for some reasons you want to enforce rules on users... django_user = User.objects.create(username="******", email="*****@*****.**", first_name="Test", last_name="Tester") user = MockUser() # That's faster setattr(user, 'member', True) with self.assertRaises(RulesException): res = get_roles(user, django_user) self.assertEqual(len(res), 1)
def test_roles_for_users_on_users_raises_without_relevant_roles(self): # If for some reasons you want to enforce rules on users... django_user = User.objects.create(username="******", email="*****@*****.**", first_name="Test", last_name = "Tester") user = MockUser() # That's faster setattr(user, 'member', True) with self.assertRaises(RulesException): res = get_roles(user, django_user) self.assertEqual(len(res), 1)
def test_roles_for_users_on_users_works_with_relevant_roles(self): # If for some reasons you want to enforce rules on users... django_user = User.objects.create(username="******", email="*****@*****.**", first_name="Test", last_name = "Tester") setattr(django_user, 'relevant_roles', lambda : [Tester]) user = MockUser() # That's faster setattr(user, 'member', True) res = get_roles(user, django_user) self.assertEqual(len(res), 1)
def get_roles(self, user): """ Gets all roles this user has for this object and caches it on the instance. Without the instance cache every call to has_role() would hit the cache backend. """ rolez = getattr(self, '_rolez', {}) pk = get_user_pk(user) if not pk in rolez.keys(): rolez[pk] = get_roles(user, self) self._rolez = rolez return self._rolez[pk]
def test_get_empty_roles_works(self): model = TestModel() user = MockUser() res = get_roles(user, model) self.assertEqual(res, [])