Example #1
0
    def test_only_anon_allowed(self):
        CRUDManager.filter_set = {}
        CRUDManager.add_permissions(TestClass, 'R', 'anonymous', TestClass.objects.field_three_true)

        # Set expectations:
        self.expected_output['anonymous']['R']['__default'] = TestClass.objects.field_three_true(TestClass.objects.all(), self.user, None)

        url = reverse('api-test-list')
        self.verify_requests_against_expectations(TestClass, url, self.authentication_header, nested_key=None)
Example #2
0
 def test_add_permissions_succeeds_with_explicit_filter(self):
     CRUDManager.add_permissions(TestClass, 'CR', test_roles[0],
                                 TestClass.objects.field_one_true,
                                 'filter_string')
     self.assertEqual(
         CRUDManager.filter_set[str(TestClass)]['filter'][test_roles[0]]
         ['filter_string'], TestClass.objects.field_one_true)
     self.assertEqual(
         CRUDManager.filter_set[str(TestClass)]['allowed_methods'][
             test_roles[0]]['filter_string'], 'CR')
Example #3
0
    def test_only_anon_allowed(self):
        CRUDManager.filter_set = {}
        CRUDManager.add_permissions(TestClass, 'R', 'anonymous',
                                    TestClass.objects.field_three_true)

        # Set expectations:
        self.expected_output['anonymous']['R'][
            '__default'] = TestClass.objects.field_three_true(
                TestClass.objects.all(), self.user, None)

        url = reverse('api-test-list')
        self.verify_requests_against_expectations(TestClass,
                                                  url,
                                                  self.authentication_header,
                                                  nested_key=None)
Example #4
0
    def test_random_combinations_with_filters(self):
        CRUDManager.filter_set = {}
        CRUDManager.add_permissions(TestClass, 'RD', 'anonymous',
                                    TestClass.objects.field_three_true,
                                    'three')
        CRUDManager.add_permissions(TestClass, 'R', 'authenticated',
                                    TestClass.objects.field_one_true, 'one')
        CRUDManager.add_permissions(TestClass, 'CRU', test_roles[0],
                                    CRUDManager.all_objects, 'all')
        CRUDManager.add_permissions(TestClass, 'UD', test_roles[1],
                                    TestClass.objects.field_two_true)
        CRUDManager.add_permissions(TestClass, 'CR', test_roles[2],
                                    TestClass.objects.field_four_true, 'four')
        CRUDManager.add_permissions(TestClass, 'CD', test_roles[3],
                                    TestClass.objects.field_five_true)
        CRUDManager.add_permissions(TestClass, 'CRUD', test_roles[4],
                                    TestClass.objects.no_objects, 'none')

        # Set expectations:
        self.expected_output['anonymous']['R'][
            'three'] = TestClass.objects.field_three_true(
                TestClass.objects.all(), self.user, None)
        self.expected_output['anonymous']['D'][
            'three'] = TestClass.objects.field_three_true(
                TestClass.objects.all(), self.user, None)

        self.expected_output['authenticated']['R'][
            'one'] = TestClass.objects.field_one_true(TestClass.objects.all(),
                                                      self.user, None)

        self.expected_output[
            test_roles[0]]['C']['all'] = TestClass.objects.all()
        self.expected_output[
            test_roles[0]]['R']['all'] = TestClass.objects.all()
        self.expected_output[
            test_roles[0]]['U']['all'] = TestClass.objects.all()

        self.expected_output[test_roles[1]]['U'][
            '__default'] = TestClass.objects.field_two_true(
                TestClass.objects.all(), self.user, None)
        self.expected_output[test_roles[1]]['D'][
            '__default'] = TestClass.objects.field_two_true(
                TestClass.objects.all(), self.user, None)

        self.expected_output[
            test_roles[2]]['C']['four'] = TestClass.objects.field_four_true(
                TestClass.objects.all(), self.user, None)
        self.expected_output[
            test_roles[2]]['R']['four'] = TestClass.objects.field_four_true(
                TestClass.objects.all(), self.user, None)

        self.expected_output[test_roles[3]]['C'][
            '__default'] = TestClass.objects.field_five_true(
                TestClass.objects.all(), self.user, None)
        self.expected_output[test_roles[3]]['D'][
            '__default'] = TestClass.objects.field_five_true(
                TestClass.objects.all(), self.user, None)

        self.expected_output[
            test_roles[4]]['C']['none'] = TestClass.objects.none()
        self.expected_output[
            test_roles[4]]['R']['none'] = TestClass.objects.none()
        self.expected_output[
            test_roles[4]]['U']['none'] = TestClass.objects.none()
        self.expected_output[
            test_roles[4]]['D']['none'] = TestClass.objects.none()

        url = reverse('api-test-list')
        self.verify_requests_against_expectations(TestClass,
                                                  url,
                                                  self.authentication_header,
                                                  nested_key=None)
Example #5
0
 def test_add_permissions_succeeds_with_default_filter(self):
     CRUDManager.add_permissions(TestClass, 'C', test_roles[0],
                                 TestClass.objects.field_one_true)
     CRUDManager.filter_set[str(TestClass)]['allowed_methods'][
         test_roles[0]]['__default'] = TestClass.objects.field_one_true
Example #6
0
 def test_add_permissions_invalid_role(self):
     with self.assertRaises(CRUDException):
         CRUDManager.add_permissions(TestClass, 'C', 'NOT_A_VALID_ROLE',
                                     TestClass.objects.field_one_true)
Example #7
0
 def test_add_permissions_non_function(self):
     not_a_function = 3.14159
     with self.assertRaises(CRUDException):
         CRUDManager.add_permissions(TestClass, 'R', test_roles[0],
                                     not_a_function)
Example #8
0
 def test_add_permissions_invalid_permission(self):
     with self.assertRaises(CRUDException):
         CRUDManager.add_permissions(TestClass, 'NOT_A_VALID_PERMISSION',
                                     test_roles[0],
                                     TestClass.objects.field_one_true)
Example #9
0
    def test_random_combinations_with_filters(self):
        CRUDManager.filter_set = {}
        CRUDManager.add_permissions(TestClass, 'RD', 'anonymous', TestClass.objects.field_three_true, 'three')
        CRUDManager.add_permissions(TestClass, 'R', 'authenticated', TestClass.objects.field_one_true, 'one')
        CRUDManager.add_permissions(TestClass, 'CRU', test_roles[0], CRUDManager.all_objects, 'all')
        CRUDManager.add_permissions(TestClass, 'UD', test_roles[1], TestClass.objects.field_two_true)
        CRUDManager.add_permissions(TestClass, 'CR', test_roles[2], TestClass.objects.field_four_true, 'four')
        CRUDManager.add_permissions(TestClass, 'CD', test_roles[3], TestClass.objects.field_five_true)
        CRUDManager.add_permissions(TestClass, 'CRUD', test_roles[4], TestClass.objects.no_objects, 'none')

        # Set expectations:
        self.expected_output['anonymous']['R']['three'] = TestClass.objects.field_three_true(TestClass.objects.all(), self.user, None)
        self.expected_output['anonymous']['D']['three'] = TestClass.objects.field_three_true(TestClass.objects.all(), self.user, None)

        self.expected_output['authenticated']['R']['one'] = TestClass.objects.field_one_true(TestClass.objects.all(), self.user, None)

        self.expected_output[test_roles[0]]['C']['all'] = TestClass.objects.all()
        self.expected_output[test_roles[0]]['R']['all'] = TestClass.objects.all()
        self.expected_output[test_roles[0]]['U']['all'] = TestClass.objects.all()

        self.expected_output[test_roles[1]]['U']['__default'] = TestClass.objects.field_two_true(TestClass.objects.all(), self.user, None)
        self.expected_output[test_roles[1]]['D']['__default'] = TestClass.objects.field_two_true(TestClass.objects.all(), self.user, None)

        self.expected_output[test_roles[2]]['C']['four'] = TestClass.objects.field_four_true(TestClass.objects.all(), self.user, None)
        self.expected_output[test_roles[2]]['R']['four'] = TestClass.objects.field_four_true(TestClass.objects.all(), self.user, None)

        self.expected_output[test_roles[3]]['C']['__default'] = TestClass.objects.field_five_true(TestClass.objects.all(), self.user, None)
        self.expected_output[test_roles[3]]['D']['__default'] = TestClass.objects.field_five_true(TestClass.objects.all(), self.user, None)

        self.expected_output[test_roles[4]]['C']['none'] = TestClass.objects.none()
        self.expected_output[test_roles[4]]['R']['none'] = TestClass.objects.none()
        self.expected_output[test_roles[4]]['U']['none'] = TestClass.objects.none()
        self.expected_output[test_roles[4]]['D']['none'] = TestClass.objects.none()

        url = reverse('api-test-list')
        self.verify_requests_against_expectations(TestClass, url, self.authentication_header, nested_key=None)
Example #10
0
 def test_add_permissions_succeeds_with_explicit_filter(self):
     CRUDManager.add_permissions(TestClass, 'CR', test_roles[0], TestClass.objects.field_one_true, 'filter_string')
     self.assertEqual(CRUDManager.filter_set[str(TestClass)]['filter'][test_roles[0]]['filter_string'], TestClass.objects.field_one_true)
     self.assertEqual(CRUDManager.filter_set[str(TestClass)]['allowed_methods'][test_roles[0]]['filter_string'], 'CR')
Example #11
0
 def test_add_permissions_succeeds_with_default_filter(self):
     CRUDManager.add_permissions(TestClass, 'C', test_roles[0], TestClass.objects.field_one_true)
     CRUDManager.filter_set[str(TestClass)]['allowed_methods'][test_roles[0]]['__default'] = TestClass.objects.field_one_true
Example #12
0
 def test_add_permissions_invalid_role(self):
     with self.assertRaises(CRUDException):
         CRUDManager.add_permissions(TestClass, 'C', 'NOT_A_VALID_ROLE', TestClass.objects.field_one_true)
Example #13
0
 def test_add_permissions_non_function(self):
     not_a_function = 3.14159
     with self.assertRaises(CRUDException):
         CRUDManager.add_permissions(TestClass, 'R', test_roles[0], not_a_function)
Example #14
0
 def test_add_permissions_invalid_permission(self):
     with self.assertRaises(CRUDException):
         CRUDManager.add_permissions(TestClass, 'NOT_A_VALID_PERMISSION', test_roles[0], TestClass.objects.field_one_true)