This commit is contained in:
Jason Novinger 2026-09-16 16:12:24 +02:00 committed by GitHub
commit b2a36fa723
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 394 additions and 0 deletions

View File

@ -122,6 +122,10 @@ jobs:
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install coverage tblib
# dulwich is the optional 'git' extra, so it is absent from requirements.txt.
# The Git data backend tests mock dulwich.porcelain.clone and only need the
# module to be importable; without it they skip silently.
pip install dulwich
- name: Check for missing migrations
run: python netbox/manage.py makemigrations --check

View File

@ -23,6 +23,9 @@ class ProviderTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'comments': 'New comments',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -79,6 +82,9 @@ class CircuitTypeTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
@classmethod
def setUpTestData(cls):
@ -97,6 +103,9 @@ class CircuitTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'status': 'planned',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('circuits.view_provider', 'circuits.view_circuittype')
@classmethod
@ -215,6 +224,9 @@ class CircuitTerminationTestCase(APIViewTestCases.APIViewTestCase):
cls.bulk_update_data = {
'port_speed': 123456
}
cls.bulk_update_invalid_data = {
'term_side': 'not-a-valid-term-side',
}
class CircuitGroupTestCase(APIViewTestCases.APIViewTestCase):
@ -223,6 +235,9 @@ class CircuitGroupTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'tenant': 99999,
}
@classmethod
def setUpTestData(cls):
@ -291,6 +306,9 @@ class ProviderAccountTestCase(APIViewTestCases.APIViewTestCase):
'provider': providers[1].pk,
'description': 'New description',
}
cls.bulk_update_invalid_data = {
'provider': 99999,
}
class CircuitGroupAssignmentTestCase(APIViewTestCases.APIViewTestCase):
@ -299,6 +317,9 @@ class CircuitGroupAssignmentTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'priority': CircuitPriorityChoices.PRIORITY_INACTIVE,
}
bulk_update_invalid_data = {
'priority': 'not-a-valid-priority',
}
user_permissions = ('circuits.view_circuit', 'circuits.view_circuitgroup')
@classmethod
@ -407,6 +428,9 @@ class ProviderNetworkTestCase(APIViewTestCases.APIViewTestCase):
'provider': providers[1].pk,
'description': 'New description',
}
cls.bulk_update_invalid_data = {
'provider': 99999,
}
class VirtualCircuitTypeTestCase(APIViewTestCases.APIViewTestCase):
@ -429,6 +453,9 @@ class VirtualCircuitTypeTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
@classmethod
def setUpTestData(cls):
@ -447,6 +474,9 @@ class VirtualCircuitTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'status': 'planned',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
@classmethod
def setUpTestData(cls):
@ -511,6 +541,9 @@ class VirtualCircuitTerminationTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'role': 'not-a-valid-role',
}
@classmethod
def setUpTestData(cls):

View File

@ -35,6 +35,9 @@ class DataSourceTestCase(APIViewTestCases.APIViewTestCase):
'enabled': False,
'description': 'foo bar baz',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):

View File

@ -106,6 +106,9 @@ class RegionTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
'comments': 'New comments',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -139,6 +142,9 @@ class SiteGroupTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
'comments': 'I do exist!',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -973,6 +979,9 @@ class LocationTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('dcim.view_site',)
graphql_filter_tests = (
GraphQLFilterTest(
@ -1095,6 +1104,9 @@ class RackGroupTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -1130,6 +1142,9 @@ class RackRoleTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
@classmethod
def setUpTestData(cls):
@ -1150,6 +1165,9 @@ class RackTypeTestCase(APIViewTestCases.APIViewTestCase):
'cooling_capability': RackCoolingCapabilityChoices.CAPABILITY_HYBRID,
'cooling_capacity': 50,
}
bulk_update_invalid_data = {
'form_factor': 'not-a-valid-form-factor',
}
user_permissions = ('dcim.view_manufacturer',)
@classmethod
@ -1235,6 +1253,9 @@ class RackTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'status': 'planned',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('dcim.view_site', )
@classmethod
@ -1361,6 +1382,9 @@ class RackReservationTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('dcim.view_rack', 'users.view_user')
@classmethod
@ -1450,6 +1474,9 @@ class ManufacturerTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -1469,6 +1496,9 @@ class DeviceTypeTestCase(APIViewTestCases.APIViewTestCase):
'part_number': 'ABC123',
'end_of_life': '2030-01-01',
}
bulk_update_invalid_data = {
'airflow': 'not-a-valid-airflow',
}
user_permissions = ('dcim.view_manufacturer', )
@classmethod
@ -1517,6 +1547,9 @@ class ModuleTypeTestCase(APIViewTestCases.APIViewTestCase):
'part_number': 'ABC123',
'end_of_life': '2030-01-01',
}
bulk_update_invalid_data = {
'airflow': 'not-a-valid-airflow',
}
user_permissions = ('dcim.view_manufacturer', )
@classmethod
@ -1606,6 +1639,9 @@ class ModuleTypeProfileTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
'comments': 'New comments',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -1632,6 +1668,9 @@ class ModuleBayTypeTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
@classmethod
def setUpTestData(cls):
@ -1673,6 +1712,9 @@ class ConsolePortTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
@classmethod
def setUpTestData(cls):
@ -1717,6 +1759,9 @@ class ConsoleServerPortTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
@classmethod
def setUpTestData(cls):
@ -1761,6 +1806,9 @@ class PowerPortTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
@classmethod
def setUpTestData(cls):
@ -1805,6 +1853,9 @@ class PowerOutletTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
user_permissions = ('dcim.view_devicetype', )
@classmethod
@ -1863,6 +1914,9 @@ class InterfaceTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'poe_mode': 'not-a-valid-poe-mode',
}
@classmethod
def setUpTestData(cls):
@ -1928,6 +1982,9 @@ class FrontPortTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
user_permissions = ('dcim.view_rearporttemplate', )
@classmethod
@ -2045,6 +2102,9 @@ class RearPortTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
@classmethod
def setUpTestData(cls):
@ -2161,6 +2221,9 @@ class ModuleBayTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'device_type': 99999,
}
user_permissions = ('dcim.view_devicetype', )
@classmethod
@ -2213,6 +2276,9 @@ class DeviceBayTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'device_type': 99999,
}
user_permissions = ('dcim.view_devicetype', )
@classmethod
@ -2255,6 +2321,9 @@ class InventoryItemTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'role': 99999,
}
user_permissions = ('dcim.view_devicetype', 'dcim.view_manufacturer',)
@classmethod
@ -2334,6 +2403,9 @@ class DeviceRoleTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
@classmethod
def setUpTestData(cls):
@ -2365,6 +2437,9 @@ class PlatformTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -2384,6 +2459,9 @@ class DeviceTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'status': 'failed',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = (
'dcim.view_site', 'dcim.view_rack', 'dcim.view_location', 'dcim.view_devicerole', 'dcim.view_devicetype',
)
@ -2843,6 +2921,9 @@ class ModuleTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'serial': '1234ABCD',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = (
'dcim.view_modulebay', 'dcim.view_moduletype', 'dcim.view_moduletypeprofile', 'dcim.view_device'
)
@ -3339,6 +3420,9 @@ class ConsolePortTestCase(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTe
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
peer_termination_type = ConsoleServerPort
user_permissions = ('dcim.view_device', )
@ -3382,6 +3466,9 @@ class ConsoleServerPortTestCase(Mixins.ComponentTraceMixin, APIViewTestCases.API
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
peer_termination_type = ConsolePort
user_permissions = ('dcim.view_device', )
@ -3425,6 +3512,9 @@ class PowerPortTestCase(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTest
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
peer_termination_type = PowerOutlet
user_permissions = ('dcim.view_device', )
@ -3465,6 +3555,9 @@ class PowerOutletTestCase(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTe
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
peer_termination_type = PowerPort
user_permissions = ('dcim.view_device', )
@ -3514,6 +3607,9 @@ class InterfaceTestCase(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTest
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'poe_mode': 'not-a-valid-poe-mode',
}
peer_termination_type = Interface
user_permissions = ('dcim.view_device', )
@ -4073,6 +4169,9 @@ class FrontPortTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
peer_termination_type = Interface
user_permissions = ('dcim.view_device', 'dcim.view_rearport')
@ -4192,6 +4291,9 @@ class RearPortTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
peer_termination_type = Interface
user_permissions = ('dcim.view_device', )
@ -4308,6 +4410,9 @@ class ModuleBayTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
user_permissions = ('dcim.view_device', )
@classmethod
@ -4439,6 +4544,9 @@ class DeviceBayTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
user_permissions = ('dcim.view_device', )
@classmethod
@ -4503,6 +4611,9 @@ class InventoryItemTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('dcim.view_device', 'dcim.view_manufacturer')
@classmethod
@ -4587,6 +4698,9 @@ class InventoryItemRoleTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
@classmethod
def setUpTestData(cls):
@ -4610,6 +4724,9 @@ class CableBundleTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -4660,6 +4777,9 @@ class CableTestCase(APIViewTestCases.APIViewTestCase):
'length': 100,
'length_unit': 'm',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
# TODO: Allow updating cable terminations
test_update_object = None
@ -5116,6 +5236,9 @@ class VirtualChassisTestCase(APIViewTestCases.APIViewTestCase):
'domain': 'newdomain',
'master': None
}
cls.bulk_update_invalid_data = {
'owner': 99999,
}
class PowerPanelTestCase(APIViewTestCases.APIViewTestCase):
@ -5166,6 +5289,9 @@ class PowerPanelTestCase(APIViewTestCases.APIViewTestCase):
'site': sites[1].pk,
'location': locations[3].pk
}
cls.bulk_update_invalid_data = {
'owner': 99999,
}
class PowerFeedTestCase(APIViewTestCases.APIViewTestCase):
@ -5174,6 +5300,9 @@ class PowerFeedTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'status': 'planned',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('dcim.view_powerpanel', )
@classmethod
@ -5230,6 +5359,9 @@ class CoolingIntakeTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
@classmethod
def setUpTestData(cls):
@ -5275,6 +5407,9 @@ class CoolingOutflowTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
user_permissions = ('dcim.view_devicetype', )
@classmethod
@ -5334,6 +5469,9 @@ class CoolingIntakeTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
user_permissions = ('dcim.view_device', )
@classmethod
@ -5378,6 +5516,9 @@ class CoolingOutflowTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'type': 'not-a-valid-type',
}
user_permissions = ('dcim.view_device', )
@classmethod
@ -5481,6 +5622,9 @@ class CoolingSourceTestCase(APIViewTestCases.APIViewTestCase):
'site': sites[1].pk,
'location': locations[3].pk
}
cls.bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
class CoolingFeedTestCase(APIViewTestCases.APIViewTestCase):
@ -5489,6 +5633,9 @@ class CoolingFeedTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'status': 'planned',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('dcim.view_coolingsource', )
@classmethod
@ -5550,6 +5697,9 @@ class VirtualDeviceContextTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'status': 'planned',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
@classmethod
def setUpTestData(cls):
@ -5673,6 +5823,9 @@ class MACAddressTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):

View File

@ -62,6 +62,9 @@ class WebhookTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
'ssl_verification': False,
}
bulk_update_invalid_data = {
'http_method': 'not-a-valid-http-method',
}
@classmethod
def setUpTestData(cls):
@ -90,6 +93,9 @@ class EventRuleTestCase(APIViewTestCases.APIViewTestCase):
'enabled': False,
'description': 'New description',
}
bulk_update_invalid_data = {
'action_type': 'not-a-valid-action-type',
}
update_data = {
'name': 'Event Rule X',
'enabled': False,
@ -308,6 +314,9 @@ class CustomFieldTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
'nulls_first': False,
}
bulk_update_invalid_data = {
'filter_logic': 'not-a-valid-filter-logic',
}
update_data = {
'object_types': ['dcim.device'],
'name': 'New_Name',
@ -377,6 +386,9 @@ class CustomFieldChoiceSetTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'base_choices': 'not-a-valid-base-choices',
}
update_data = {
'name': 'Choice Set X',
'extra_choices': [
@ -577,6 +589,9 @@ class CustomLinkTestCase(APIViewTestCases.APIViewTestCase):
'new_window': True,
'enabled': False,
}
bulk_update_invalid_data = {
'button_class': 'not-a-valid-button-class',
}
@classmethod
def setUpTestData(cls):
@ -661,6 +676,9 @@ class SavedFilterTestCase(SharedObjectAPITestMixin, APIViewTestCases.APIViewTest
'enabled': False,
'shared': False,
}
bulk_update_invalid_data = {
'object_types': ['dcim.notamodel'],
}
@classmethod
def setUpTestData(cls):
@ -753,6 +771,9 @@ class TableConfigTestCase(SharedObjectAPITestMixin, APIViewTestCases.APIViewTest
'enabled': False,
'shared': False,
}
bulk_update_invalid_data = {
'object_type': 'dcim.notamodel',
}
@classmethod
def setUpTestData(cls):
@ -942,6 +963,9 @@ class ExportTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'object_types': ['dcim.notamodel'],
}
@classmethod
def setUpTestData(cls):
@ -989,6 +1013,9 @@ class TagTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'color': 'not-a-color',
}
@classmethod
def setUpTestData(cls):
@ -1083,6 +1110,9 @@ class JournalEntryTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'comments': 'Overwritten',
}
bulk_update_invalid_data = {
'kind': 'not-a-valid-kind',
}
@classmethod
def setUpTestData(cls):
@ -1169,6 +1199,9 @@ class ConfigContextProfileTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'data_source': 99999,
}
@classmethod
def setUpTestData(cls):
@ -1281,6 +1314,9 @@ class ConfigContextTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'data_source': 99999,
}
@classmethod
def setUpTestData(cls):
@ -1411,6 +1447,9 @@ class ConfigTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'data_source': 99999,
}
@classmethod
def setUpTestData(cls):
@ -2226,6 +2265,9 @@ class SubscriptionTestCase(APIViewTestCases.APIViewTestCase):
cls.bulk_update_data = {
'user': users[3].pk,
}
cls.bulk_update_invalid_data = {
'object_type': 'dcim.notamodel',
}
class NotificationGroupTestCase(APIViewTestCases.APIViewTestCase):
@ -2257,6 +2299,9 @@ class NotificationGroupTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'users': [99999],
}
@classmethod
def setUpTestData(cls):
@ -2311,6 +2356,9 @@ class NotificationTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'read': now(),
}
bulk_update_invalid_data = {
'event_type': 'not-a-valid-event-type',
}
graphql_filter = {
'event_type': {'lookup': 'exact', 'value': OBJECT_CREATED},
}

View File

@ -30,6 +30,9 @@ class ASNRangeTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -142,6 +145,9 @@ class ASNTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -220,6 +226,9 @@ class VRFTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -263,6 +272,9 @@ class RouteTargetTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -295,6 +307,9 @@ class RIRTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -313,6 +328,9 @@ class AggregateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'rir': 99999,
}
@classmethod
def setUpTestData(cls):
@ -415,6 +433,9 @@ class RoleTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -455,6 +476,9 @@ class PrefixTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
@classmethod
def setUpTestData(cls):
@ -754,6 +778,9 @@ class IPRangeTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
@classmethod
def setUpTestData(cls):
@ -909,6 +936,9 @@ class IPAddressTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
graphql_filter = {
'address': {'lookup': 'i_exact', 'value': '192.168.0.1/24'},
}
@ -1071,6 +1101,9 @@ class FHRPGroupTestCase(APIViewTestCases.APIViewTestCase):
'name': 'foobar-999',
'description': 'New description',
}
bulk_update_invalid_data = {
'protocol': 'not-a-valid-protocol',
}
@classmethod
def setUpTestData(cls):
@ -1117,6 +1150,9 @@ class FHRPGroupAssignmentTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'priority': 100,
}
bulk_update_invalid_data = {
'group': 99999,
}
user_permissions = ('ipam.view_fhrpgroup', )
@classmethod
@ -1214,6 +1250,9 @@ class VLANGroupTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -1320,6 +1359,9 @@ class VLANTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
@classmethod
def setUpTestData(cls):
@ -1387,6 +1429,9 @@ class VLANTranslationPolicyTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -1523,6 +1568,9 @@ class VLANTranslationRuleTestCase(APIViewTestCases.APIViewTestCase):
'policy': vlan_translation_policies[2].pk,
'description': 'New description',
}
cls.bulk_update_invalid_data = {
'policy': 99999,
}
def test_standard_fields_in_representation(self):
"""The standard URL, tag, custom-field and change-tracking names appear in the representation."""
@ -1554,6 +1602,9 @@ class ServiceTemplateTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
graphql_base_name = 'service_template'
@classmethod
@ -1838,6 +1889,9 @@ class ServiceTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
graphql_base_name = 'service'
@classmethod

View File

@ -28,6 +28,9 @@ class TenantGroupTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
'comments': 'New Comment',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -119,6 +122,9 @@ class TenantTestCase(APIViewTestCases.APIViewTestCase):
'group': None,
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -160,6 +166,9 @@ class ContactGroupTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -219,6 +228,9 @@ class ContactRoleTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -238,6 +250,9 @@ class ContactTestCase(APIViewTestCases.APIViewTestCase):
'groups': [],
'comments': 'New comments',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -277,6 +292,9 @@ class ContactAssignmentTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'priority': ContactPriorityChoices.PRIORITY_INACTIVE,
}
bulk_update_invalid_data = {
'priority': 'not-a-valid-priority',
}
user_permissions = ('tenancy.view_contact', )
@classmethod

View File

@ -24,6 +24,9 @@ class UserTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'email': 'test@example.com',
}
bulk_update_invalid_data = {
'email': 'not-an-email',
}
@classmethod
def setUpTestData(cls):
@ -202,6 +205,9 @@ class TokenTestCase(
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'expires': 'not-a-date',
}
def setUp(self):
super().setUp()
@ -588,6 +594,9 @@ class ObjectPermissionTestCase(
cls.bulk_update_data = {
'description': 'New description',
}
cls.bulk_update_invalid_data = {
'users': [99999],
}
class UserConfigTestCase(APITestCase):
@ -649,6 +658,11 @@ class OwnerGroupTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
# OwnerGroupSerializer exposes only name, description, and a read-only member_count, so an
# over-length description is the only value available to trigger a validation error.
bulk_update_invalid_data = {
'description': 'a' * 201,
}
@classmethod
def setUpTestData(cls):
@ -750,3 +764,7 @@ class OwnerTestCase(APIViewTestCases.APIViewTestCase):
'users': [users[3].pk],
'description': 'New description',
}
cls.bulk_update_invalid_data = {
'group': 99999,
}

View File

@ -56,6 +56,9 @@ class ClusterTypeTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -88,6 +91,9 @@ class ClusterGroupTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -107,6 +113,9 @@ class ClusterTestCase(APIViewTestCases.APIViewTestCase):
'status': 'offline',
'comments': 'New comment',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
@classmethod
def setUpTestData(cls):
@ -235,6 +244,9 @@ class VirtualMachineTypeTestCase(APIViewTestCases.APIViewTestCase):
'default_memory': 8192,
'description': 'New description',
}
cls.bulk_update_invalid_data = {
'owner': 99999,
}
class VirtualMachineTestCase(APIViewTestCases.APIViewTestCase):
@ -243,6 +255,9 @@ class VirtualMachineTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'status': 'staged',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('dcim.view_platform', 'virtualization.view_virtualmachinetype')
@classmethod
@ -624,6 +639,9 @@ class VMInterfaceTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'mode': 'not-a-valid-mode',
}
graphql_base_name = 'vm_interface'
user_permissions = ('virtualization.view_virtualmachine', )
@ -915,6 +933,9 @@ class VirtualDiskTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'size': 888,
}
bulk_update_invalid_data = {
'virtual_machine': 99999,
}
graphql_base_name = 'virtual_disk'
user_permissions = ('virtualization.view_virtualmachine', )

View File

@ -38,6 +38,9 @@ class TunnelGroupTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -58,6 +61,9 @@ class TunnelTestCase(APIViewTestCases.APIViewTestCase):
'encapsulation': TunnelEncapsulationChoices.ENCAP_GRE,
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
@classmethod
def setUpTestData(cls):
@ -117,6 +123,9 @@ class TunnelTerminationTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'role': TunnelTerminationRoleChoices.ROLE_PEER,
}
bulk_update_invalid_data = {
'role': 'not-a-valid-role',
}
user_permissions = ('vpn.view_tunnel', )
@classmethod
@ -189,6 +198,9 @@ class IKEProposalTestCase(APIViewTestCases.APIViewTestCase):
'group': DHGroupChoices.GROUP_19,
'description': 'New description',
}
bulk_update_invalid_data = {
'authentication_algorithm': 'not-a-valid-authentication-algorithm',
}
@classmethod
def setUpTestData(cls):
@ -252,6 +264,9 @@ class IKEPolicyTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
'preshared_key': 'New key',
}
bulk_update_invalid_data = {
'version': 'not-a-valid-version',
}
@classmethod
def setUpTestData(cls):
@ -325,6 +340,9 @@ class IPSecProposalTestCase(APIViewTestCases.APIViewTestCase):
'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_MD5,
'description': 'New description',
}
bulk_update_invalid_data = {
'encryption_algorithm': 'not-a-valid-encryption-algorithm',
}
@classmethod
def setUpTestData(cls):
@ -374,6 +392,9 @@ class IPSecPolicyTestCase(APIViewTestCases.APIViewTestCase):
'pfs_group': DHGroupChoices.GROUP_5,
'description': 'New description',
}
bulk_update_invalid_data = {
'pfs_group': 'not-a-valid-pfs-group',
}
@classmethod
def setUpTestData(cls):
@ -519,6 +540,10 @@ class IPSecProfileTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
}
cls.bulk_update_invalid_data = {
'mode': 'not-a-valid-mode',
}
class L2VPNTestCase(APIViewTestCases.APIViewTestCase):
model = L2VPN
@ -549,6 +574,9 @@ class L2VPNTestCase(APIViewTestCases.APIViewTestCase):
bulk_update_data = {
'description': 'New description',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
@classmethod
def setUpTestData(cls):
@ -676,3 +704,7 @@ class L2VPNTerminationTestCase(APIViewTestCases.APIViewTestCase):
cls.bulk_update_data = {
'l2vpn': l2vpns[2].pk
}
cls.bulk_update_invalid_data = {
'l2vpn': 99999,
}

View File

@ -40,6 +40,9 @@ class WirelessLANGroupTestCase(APIViewTestCases.APIViewTestCase):
'description': 'New description',
'comments': 'New comment',
}
bulk_update_invalid_data = {
'owner': 99999,
}
@classmethod
def setUpTestData(cls):
@ -118,6 +121,10 @@ class WirelessLANTestCase(APIViewTestCases.APIViewTestCase):
'auth_psk': 'abc123def456',
}
cls.bulk_update_invalid_data = {
'auth_type': 'not-a-valid-auth-type',
}
class WirelessLinkTestCase(APIViewTestCases.APIViewTestCase):
model = WirelessLink
@ -127,6 +134,9 @@ class WirelessLinkTestCase(APIViewTestCases.APIViewTestCase):
'distance': 100,
'distance_unit': 'm',
}
bulk_update_invalid_data = {
'status': 'not-a-valid-status',
}
user_permissions = ('dcim.view_interface', )
@classmethod