diff --git a/netbox/netbox/tests/test_authentication.py b/netbox/netbox/tests/test_authentication.py index 3ae203c29..6b30d044d 100644 --- a/netbox/netbox/tests/test_authentication.py +++ b/netbox/netbox/tests/test_authentication.py @@ -212,6 +212,7 @@ class ObjectPermissionAPIViewTestCase(TestCase): # Assign object permission obj_perm = ObjectPermission( + name='Test permission', constraints={'site__name': 'Site 1'}, actions=['view'] ) @@ -239,6 +240,7 @@ class ObjectPermissionAPIViewTestCase(TestCase): # Assign object permission obj_perm = ObjectPermission( + name='Test permission', constraints={'site__name': 'Site 1'}, actions=['view'] ) @@ -266,6 +268,7 @@ class ObjectPermissionAPIViewTestCase(TestCase): # Assign object permission obj_perm = ObjectPermission( + name='Test permission', constraints={'site__name': 'Site 1'}, actions=['add'] ) @@ -295,6 +298,7 @@ class ObjectPermissionAPIViewTestCase(TestCase): # Assign object permission obj_perm = ObjectPermission( + name='Test permission', constraints={'site__name': 'Site 1'}, actions=['change'] ) @@ -330,6 +334,7 @@ class ObjectPermissionAPIViewTestCase(TestCase): # Assign object permission obj_perm = ObjectPermission( + name='Test permission', constraints={'site__name': 'Site 1'}, actions=['delete'] ) diff --git a/netbox/users/tests/test_api.py b/netbox/users/tests/test_api.py index ecbaeb952..11d4e58cd 100644 --- a/netbox/users/tests/test_api.py +++ b/netbox/users/tests/test_api.py @@ -98,7 +98,7 @@ class ObjectPermissionTest(APIViewTestCases.APIViewTestCase): object_type = ContentType.objects.get(app_label='dcim', model='device') - for i in range(0, 3): + for i in range(3): objectpermission = ObjectPermission( name=f'Permission {i+1}', actions=['view', 'add', 'change', 'delete'], diff --git a/netbox/utilities/testing/api.py b/netbox/utilities/testing/api.py index b0caa4f32..f81722fa8 100644 --- a/netbox/utilities/testing/api.py +++ b/netbox/utilities/testing/api.py @@ -93,6 +93,7 @@ class APIViewTestCases: # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk': instance1.pk}, actions=['view'] ) @@ -160,6 +161,7 @@ class APIViewTestCases: # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk__in': [instance1.pk, instance2.pk]}, actions=['view'] ) @@ -193,6 +195,7 @@ class APIViewTestCases: """ # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['add'] ) obj_perm.save() @@ -216,6 +219,7 @@ class APIViewTestCases: """ # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['add'] ) obj_perm.save() @@ -229,7 +233,8 @@ class APIViewTestCases: self.assertEqual(self._get_queryset().count(), initial_count + len(self.create_data)) for i, obj in enumerate(response.data): for field in self.create_data[i]: - self.assertIn(field, obj, f"Bulk create field '{field}' missing from object {i} in response") + if field not in self.validation_excluded_fields: + self.assertIn(field, obj, f"Bulk create field '{field}' missing from object {i} in response") for i, obj in enumerate(response.data): self.assertInstanceEqual( self._get_queryset().get(pk=obj['id']), @@ -265,6 +270,7 @@ class APIViewTestCases: # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['change'] ) obj_perm.save() @@ -290,6 +296,7 @@ class APIViewTestCases: # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['change'] ) obj_perm.save() @@ -332,6 +339,7 @@ class APIViewTestCases: # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['delete'] ) obj_perm.save() @@ -348,6 +356,7 @@ class APIViewTestCases: """ # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['delete'] ) obj_perm.save() diff --git a/netbox/utilities/testing/views.py b/netbox/utilities/testing/views.py index d19848985..d380996b7 100644 --- a/netbox/utilities/testing/views.py +++ b/netbox/utilities/testing/views.py @@ -100,7 +100,7 @@ class TestCase(_TestCase): """ for name in names: ct, action = resolve_permission_ct(name) - obj_perm = ObjectPermission(actions=[action]) + obj_perm = ObjectPermission(name=name, actions=[action]) obj_perm.save() obj_perm.users.add(self.user) obj_perm.object_types.add(ct) @@ -245,6 +245,7 @@ class ViewTestCases: # Add model-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['view'] ) obj_perm.save() @@ -260,6 +261,7 @@ class ViewTestCases: # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk': instance1.pk}, actions=['view'] ) @@ -312,6 +314,7 @@ class ViewTestCases: # Assign unconstrained permission obj_perm = ObjectPermission( + name='Test permission', actions=['add'] ) obj_perm.save() @@ -336,6 +339,7 @@ class ViewTestCases: # Assign constrained permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk': 0}, # Dummy permission to deny all actions=['add'] ) @@ -396,6 +400,7 @@ class ViewTestCases: # Assign model-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['change'] ) obj_perm.save() @@ -419,6 +424,7 @@ class ViewTestCases: # Assign constrained permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk': instance1.pk}, actions=['change'] ) @@ -472,6 +478,7 @@ class ViewTestCases: # Assign model-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['delete'] ) obj_perm.save() @@ -496,6 +503,7 @@ class ViewTestCases: # Assign object-level permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk': instance1.pk}, actions=['delete'] ) @@ -549,6 +557,7 @@ class ViewTestCases: # Add model-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['view'] ) obj_perm.save() @@ -570,6 +579,7 @@ class ViewTestCases: # Add object-level permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk': instance1.pk}, actions=['view'] ) @@ -619,6 +629,7 @@ class ViewTestCases: # Assign non-constrained permission obj_perm = ObjectPermission( + name='Test permission', actions=['add'], ) obj_perm.save() @@ -642,6 +653,7 @@ class ViewTestCases: # Assign constrained permission obj_perm = ObjectPermission( + name='Test permission', actions=['add'], constraints={'pk': 0} # Dummy constraint to deny all ) @@ -697,6 +709,7 @@ class ViewTestCases: # Assign model-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['add'] ) obj_perm.save() @@ -719,6 +732,7 @@ class ViewTestCases: # Assign constrained permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk': 0}, # Dummy permission to deny all actions=['add'] ) @@ -775,6 +789,7 @@ class ViewTestCases: # Assign model-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['change'] ) obj_perm.save() @@ -804,6 +819,7 @@ class ViewTestCases: # Assign constrained permission obj_perm = ObjectPermission( + name='Test permission', constraints={attr_name: value}, actions=['change'] ) @@ -856,6 +872,7 @@ class ViewTestCases: # Assign unconstrained permission obj_perm = ObjectPermission( + name='Test permission', actions=['delete'] ) obj_perm.save() @@ -878,6 +895,7 @@ class ViewTestCases: # Assign constrained permission obj_perm = ObjectPermission( + name='Test permission', constraints={'pk': 0}, # Dummy permission to deny all actions=['delete'] ) @@ -935,6 +953,7 @@ class ViewTestCases: # Assign model-level permission obj_perm = ObjectPermission( + name='Test permission', actions=['change'] ) obj_perm.save() @@ -958,6 +977,7 @@ class ViewTestCases: # Assign constrained permission obj_perm = ObjectPermission( + name='Test permission', constraints={'name__regex': '[^X]$'}, actions=['change'] )