示例#1
0
    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)
示例#2
0
    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
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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())
示例#6
0
    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)
示例#7
0
    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())
示例#8
0
 def setUp(self):
     self.companies = CompanyFactory.create_batch(100)
     self.activities = ActivityFactory.create_batch(20)
示例#9
0
    def test_activity_names_unique(self):
        """Activities should have unique names."""

        activity = self.activities[0]
        with self.assertRaises(IntegrityError):
            ActivityFactory(name=activity.name)
示例#10
0
 def setUp(self):
     self.companies = CompanyFactory.create_batch(100)
     self.activities = ActivityFactory.create_batch(20)