Require region_id and cloud_id for POST /networks
This patch corrects the schema to include requirements for region_id and cloud_id when creating a network. Change-Id: I0edbf5efa51a55c425051cbe8d7a60c6ed0a2232 Closes-Bug: 1661761
This commit is contained in:
parent
b4cd6d35b3
commit
ddc1807338
|
@ -484,6 +484,8 @@ DefinitionNetwork = {
|
|||
"cidr",
|
||||
"gateway",
|
||||
"netmask",
|
||||
"cloud_id",
|
||||
"region_id",
|
||||
],
|
||||
"type": "object",
|
||||
"additionalProperties": False,
|
||||
|
@ -502,6 +504,8 @@ DefinitionNetworkCreate = {
|
|||
"cidr",
|
||||
"gateway",
|
||||
"netmask",
|
||||
"cloud_id",
|
||||
"region_id",
|
||||
],
|
||||
"type": "object",
|
||||
"additionalProperties": False,
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
from craton.tests.functional import TestCase
|
||||
|
||||
|
||||
class APIV1NetworkSchemaTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(APIV1NetworkSchemaTest, self).setUp()
|
||||
self.cloud = self.create_cloud(name='cloud-1')
|
||||
self.region = self.create_region(name='region-1', cloud=self.cloud)
|
||||
self.networks_url = self.url + '/v1/networks'
|
||||
self.cidr = '192.168.0.0/24'
|
||||
self.netmask = '255.255.255.0'
|
||||
self.gateway = '192.168.0.1'
|
||||
|
||||
def test_network_create_with_required_works(self):
|
||||
payload = {
|
||||
'cloud_id': self.cloud['id'],
|
||||
'region_id': self.region['id'],
|
||||
'name': 'a',
|
||||
'cidr': self.cidr,
|
||||
'netmask': self.netmask,
|
||||
'gateway': self.gateway,
|
||||
}
|
||||
resp = self.post(self.networks_url, data=payload)
|
||||
self.assertEqual(201, resp.status_code)
|
||||
|
||||
network = resp.json()
|
||||
self.assertEqual('a', network['name'])
|
||||
self.assertEqual(self.cloud['id'], network['cloud_id'])
|
||||
self.assertEqual(self.region['id'], network['region_id'])
|
||||
self.assertEqual(self.cidr, network['cidr'])
|
||||
self.assertEqual(self.gateway, network['gateway'])
|
||||
self.assertEqual(self.netmask, network['netmask'])
|
||||
|
||||
def test_network_create_without_region_id_fails(self):
|
||||
payload = {
|
||||
'cloud_id': self.cloud['id'],
|
||||
'name': 'a',
|
||||
'cidr': self.cidr,
|
||||
'netmask': self.netmask,
|
||||
'gateway': self.gateway,
|
||||
}
|
||||
network = self.post(self.networks_url, data=payload)
|
||||
self.assertEqual(400, network.status_code)
|
||||
msg = ["'region_id' is a required property"]
|
||||
self.assertEqual(network.json()['errors'], msg)
|
||||
|
||||
def test_network_create_without_cloud_id_fails(self):
|
||||
payload = {
|
||||
'region_id': self.region['id'],
|
||||
'name': 'a',
|
||||
'cidr': self.cidr,
|
||||
'netmask': self.netmask,
|
||||
'gateway': self.gateway,
|
||||
}
|
||||
network = self.post(self.networks_url, data=payload)
|
||||
self.assertEqual(400, network.status_code)
|
||||
msg = ["'cloud_id' is a required property"]
|
||||
self.assertEqual(network.json()['errors'], msg)
|
||||
|
||||
def test_network_create_with_extra_id_property_fails(self):
|
||||
payload = {
|
||||
'region_id': self.region['id'],
|
||||
'cloud_id': self.cloud['id'],
|
||||
'name': 'a',
|
||||
'cidr': self.cidr,
|
||||
'netmask': self.netmask,
|
||||
'gateway': self.gateway,
|
||||
'id': 3
|
||||
}
|
||||
network = self.post(self.networks_url, data=payload)
|
||||
self.assertEqual(400, network.status_code)
|
||||
msg = ["Additional properties are not allowed ('id' was unexpected)"]
|
||||
self.assertEqual(network.json()['errors'], msg)
|
||||
|
||||
def test_network_create_with_extra_created_at_property_fails(self):
|
||||
payload = {
|
||||
'region_id': self.region['id'],
|
||||
'cloud_id': self.cloud['id'],
|
||||
'name': 'a',
|
||||
'cidr': self.cidr,
|
||||
'netmask': self.netmask,
|
||||
'gateway': self.gateway,
|
||||
'created_at': 'This should not work'
|
||||
}
|
||||
network = self.post(self.networks_url, data=payload)
|
||||
self.assertEqual(400, network.status_code)
|
||||
msg = ["Additional properties are not allowed ('created_at' was "
|
||||
"unexpected)"]
|
||||
self.assertEqual(network.json()['errors'], msg)
|
||||
|
||||
def test_network_create_with_extra_updated_at_property_fails(self):
|
||||
payload = {
|
||||
'region_id': self.region['id'],
|
||||
'cloud_id': self.cloud['id'],
|
||||
'name': 'a',
|
||||
'cidr': self.cidr,
|
||||
'netmask': self.netmask,
|
||||
'gateway': self.gateway,
|
||||
'updated_at': 'This should not work'
|
||||
}
|
||||
network = self.post(self.networks_url, data=payload)
|
||||
self.assertEqual(400, network.status_code)
|
||||
msg = ["Additional properties are not allowed ('updated_at' was "
|
||||
"unexpected)"]
|
||||
self.assertEqual(network.json()['errors'], msg)
|
Loading…
Reference in New Issue