def test_related_by_invalid(self): data = { 'vid': 100, 'name': 'Test VLAN 100', 'site': 'XXX', } url = reverse('ipam-api:vlan-list') self.add_permissions('ipam.add_vlan') with disable_warnings('django.request'): response = self.client.post(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST) self.assertEqual(VLAN.objects.count(), 0)
def test_delete_vlan_with_prefix(self): self.prefix1.vlan = self.vlan1 self.prefix1.save() url = reverse('ipam-api:vlan-detail', kwargs={'pk': self.vlan1.pk}) with disable_warnings('django.request'): response = self.client.delete(url, **self.header) self.assertHttpStatus(response, status.HTTP_409_CONFLICT) content = json.loads(response.content.decode('utf-8')) self.assertIn('detail', content) self.assertTrue( content['detail'].startswith('Unable to delete object.'))
def test_related_by_pk_no_match(self): data = { 'vid': 100, 'name': 'Test VLAN 100', 'site': 999, } url = reverse('ipam-api:vlan-list') self.add_permissions('ipam.add_vlan') with disable_warnings('django.request'): response = self.client.post(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST) self.assertEqual(VLAN.objects.count(), 0) self.assertTrue(response.data['site'][0].startswith("Related object not found"))
def test_create_virtualmachine_without_cluster(self): data = { 'name': 'Test Virtual Machine 4', } url = reverse('virtualization-api:virtualmachine-list') with disable_warnings('django.request'): response = self.client.post(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST) self.assertEqual(VirtualMachine.objects.count(), 4)
def test_delete_vlan_with_prefix(self): """ Attempt and fail to delete a VLAN with a Prefix assigned to it. """ vlan = VLAN.objects.first() Prefix.objects.create(prefix=IPNetwork('192.0.2.0/24'), vlan=vlan) url = reverse('ipam-api:vlan-detail', kwargs={'pk': vlan.pk}) with disable_warnings('django.request'): response = self.client.delete(url, **self.header) self.assertHttpStatus(response, status.HTTP_409_CONFLICT) content = json.loads(response.content.decode('utf-8')) self.assertIn('detail', content) self.assertTrue( content['detail'].startswith('Unable to delete object.'))
def test_related_by_attributes_multiple_matches(self): data = { 'vid': 100, 'name': 'Test VLAN 100', 'site': { 'region': { "name": "Region A", }, }, } url = reverse('ipam-api:vlan-list') self.add_permissions('ipam.add_vlan') with disable_warnings('django.request'): response = self.client.post(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST) self.assertEqual(VLAN.objects.count(), 0) self.assertTrue(response.data['site'][0].startswith("Multiple objects match"))
def test_graphiql_interface(self): """ Test rendering of the GraphiQL interactive web interface """ url = reverse('graphql') header = { 'HTTP_ACCEPT': 'text/html', } # Authenticated request response = self.client.get(url, **header) self.assertHttpStatus(response, 200) # Non-authenticated request self.client.logout() response = self.client.get(url, **header) with disable_warnings('django.request'): self.assertHttpStatus(response, 302) # Redirect to login page