def setUp(self): super(ActivityTests, self).setUp() self.company = CompanyFactory() self.app_access = AppAccessFactory() self.activities = ActivityFactory.create_batch( 5, app_access=self.app_access) self.role = RoleFactory( company=self.company, activities=self.activities)
def setUp(self): super(DecoratorTests, self).setUp() # admin role gets updated with all activities, which defeats the # purpose of these tests self.role.name = "Test Role" self.role.save() self.activity = ActivityFactory(app_access=self.app_access) self.role.activities.add(self.activity) factory = RequestFactory() self.request = factory.get("/test") self.request.user = self.user
def test_user_with_extra_activities(self): """ A user should be able to access a view even if the roles include activities not required by the view. """ activity = ActivityFactory(app_access=self.app_access) self.role.activities.add(activity) response = requires(self.activity.name)(dummy_view)(self.request) self.assertEqual(response.status_code, 200) self.assertEqual(response.content, self.user.email)
def test_user_with_wrong_number_of_activities(self): """ A user's roles should have all activities required by a decorated view, not just a subset of them. """ activity = ActivityFactory(app_access=self.app_access) response = requires(self.activity.name, activity.name)(dummy_view)(self.request) self.assertEqual(response.status_code, 403) self.assertEqual(type(response), MissingActivity)
def test_automatic_role_admin_activities(self): """ New activities should be added to all Admin roles automatically. """ activities = ActivityFactory.create_batch(5) self.role.activities = activities self.role.name = "Test Role" self.role.save() # sanity check for initial numbers for admin in Role.objects.filter(name="Admin"): self.assertEqual(admin.activities.count(), 5) new_activity = ActivityFactory(name="new activity", description="Just a new test activity.") # new activity should be available for admins for admin in Role.objects.filter(name="Admin"): self.assertIn(new_activity, admin.activities.all()) # existing role should not have new activity self.assertNotIn(new_activity, self.role.activities.all())
def setUp(self): super(MyJobsBase, self).setUp() settings.ROOT_URLCONF = "myjobs_urls" settings.PROJECT = "myjobs" self.app_access = AppAccessFactory() self.activities = [ ActivityFactory(name=activity, app_access=self.app_access) for activity in [ "create communication record", "create contact", "create partner saved search", "create partner", "create role", "create tag", "create user", "delete tag", "delete partner", "delete role", "delete user", "read contact", "read communication record", "read partner saved search", "read partner", "read role", "read user", "read tag", "update communication record", "update contact", "update partner", "update role", "update tag", "update user", "read outreach email address", "create outreach email address", "delete outreach email address", "update outreach email address", "read outreach record", "convert outreach record", "view analytics" ] ] self.company = CompanyFactory(app_access=[self.app_access]) # this role will be populated by activities on a test-by-test basis self.role = RoleFactory(company=self.company, name="Admin") self.user = UserFactory(roles=[self.role], is_staff=True) cache.clear() clear_url_caches() self.ms_solr = Solr(settings.SOLR['seo_test']) self.ms_solr.delete(q='*:*') self.base_context_processors = settings.TEMPLATE_CONTEXT_PROCESSORS context_processors = self.base_context_processors + ( 'mymessages.context_processors.message_lists', ) setattr(settings, 'TEMPLATE_CONTEXT_PROCESSORS', context_processors) setattr(settings, 'MEMOIZE', False) self.patcher = patch('urllib2.urlopen', return_file()) self.mock_urlopen = self.patcher.start() self.client = TestClient() self.client.login_user(self.user)
def test_automatic_role_admin_activities(self): """ New activities should be added to all Admin roles automatically. """ activities = ActivityFactory.create_batch(5) self.role.activities = activities self.role.name = "Test Role" self.role.save() # sanity check for initial numbers for admin in Role.objects.filter(name="Admin"): self.assertEqual(admin.activities.count(), 5) new_activity = ActivityFactory( name="new activity", description="Just a new test activity.") # new activity should be available for admins for admin in Role.objects.filter(name="Admin"): self.assertIn(new_activity, admin.activities.all()) # existing role should not have new activity self.assertNotIn(new_activity, self.role.activities.all())
def setUp(self): self.companies = CompanyFactory.create_batch(100) self.activities = ActivityFactory.create_batch(20)
def test_activity_names_unique(self): """Activities should have unique names.""" activity = self.activities[0] with self.assertRaises(IntegrityError): ActivityFactory(name=activity.name)