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)
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')
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)
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)
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
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)
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)
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)
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)
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')
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