Improvements to unit tests; prepared for new Network model

This commit is contained in:
Mike Scherbakov 2012-09-07 11:17:06 +04:00 committed by default
parent cfe9d1acdb
commit c195bb5d68
7 changed files with 135 additions and 148 deletions

View File

@ -8,8 +8,9 @@
"description": "Essex release description",
"networks_metadata": [
{"name": "floating", "access": "public"},
{"name": "fixed", "access": "private"},
{"name": "admin", "access": "private"}
{"name": "fixed", "access": "private10"},
{"name": "management", "access": "private172"},
{"name": "storage", "access": "private192"}
]
}
},
@ -158,15 +159,15 @@
"vlan_id": 300,
"address": "172.18.0.2"
},
"admin": {
"access": "private",
"management": {
"access": "private172",
"device": "eth0",
"netmask": "255.255.255.0",
"vlan_id": 100,
"address": "10.0.0.2"
},
"storage": {
"access": "private",
"access": "private192",
"device": "eth0",
"netmask": "255.255.255.0",
"vlan_id": 200,

View File

@ -4,6 +4,13 @@ DATABASE_PATH = 'nailgun.sqlite'
DATABASE_ENGINE = 'sqlite:///%s' % DATABASE_PATH
NETWORK_POOLS = {
'public': ['172.18.0.0/16'],
'private': ['10.1.0.0/16']
'public': ['240.0.0.0/24'], # reserved
# private nets according to RFC-5735
'private10': ['10.0.0.0/8'],
'private172': ['172.16.0.0/12'],
'private192': ['192.168.0.0/16']
}
NET_EXCLUDE = ['10.20.0.0/24']
VLANS = range(100, 1000)

View File

@ -62,6 +62,14 @@ class BaseHandlers(TestCase):
release = Release()
release.version = randint(0, 100000000)
release.name = u"release_name_" + str(release.version)
release.description = u"release_desc" + str(release.version)
release.networks_metadata = [
{"name": "floating", "access": "public"},
{"name": "fixed", "access": "private10"},
{"name": "storage", "access": "private192"},
{"name": "management", "access": "private172"},
{"name": "other_172", "access": "private172"}
]
self.db.add(release)
self.db.commit()
return release

View File

@ -25,3 +25,18 @@ class TestHandlers(BaseHandlers):
self.assertEquals(200, resp.status)
response = json.loads(resp.body)
self.assertEquals(100, len(response))
def test_cluster_create(self):
release_id = self.create_default_release().id
resp = self.app.post(
reverse('ClusterCollectionHandler'),
json.dumps({
'name': 'cluster-name',
'release': release_id,
}),
headers=self.default_headers
)
self.assertEquals(201, resp.status)
#def test_if_cluster_creates_correct_networks(self):
#pass

View File

@ -1,24 +1,12 @@
# -*- coding: utf-8 -*-
import unittest
import json
from paste.fixture import TestApp
from api.models import Release
from base import BaseHandlers
from base import reverse
class TestHandlers(BaseHandlers):
def test_release_creation(self):
resp = self.app.post(
'/api/releases',
params=json.dumps({
'name': 'Another test release',
'version': '1.0'
}),
headers=self.default_headers
)
self.assertEquals(resp.status, 201)
def test_all_api_urls_404_or_405(self):
urls = {
'ClusterHandler': {'cluster_id': 1},
@ -36,79 +24,3 @@ class TestHandlers(BaseHandlers):
self.assertTrue(resp.status in [404, 405])
resp = self.app.post(test_url, expect_errors=True)
self.assertTrue(resp.status in [404, 405])
def test_release_create(self):
release_name = "OpenStack"
release_version = "1.0.0"
release_description = "This is test release"
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
json.dumps({
'name': release_name,
'version': release_version,
'description': release_description,
'networks_metadata': [
{"name": "floating", "access": "public"},
{"name": "fixed", "access": "private"},
{"name": "storage", "access": "private"}
]
}),
headers=self.default_headers
)
self.assertEquals(resp.status, 201)
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
json.dumps({
'name': release_name,
'version': release_version,
'description': release_description,
'networks_metadata': [
{"name": "fixed", "access": "private"}
]
}),
headers=self.default_headers,
expect_errors=True
)
self.assertEquals(resp.status, 409)
release_from_db = self.db.query(Release).filter(
Release.name == release_name,
Release.version == release_version,
Release.description == release_description
).all()
self.assertEquals(len(release_from_db), 1)
@unittest.skip("obsolete")
def test_network_create(self):
network_data = {
"name": "test_network",
"network": "10.0.0.0/24",
"range_l": "10.0.0.5",
"range_h": "10.0.0.10",
"gateway": "10.0.0.1",
"vlan_id": 100,
"release": 1,
"access": "public"
}
resp = self.app.post(
reverse('NetworkCollectionHandler'),
json.dumps(network_data),
headers=self.default_headers
)
self.assertEquals(resp.status, 201)
resp = self.app.post(
reverse('NetworkCollectionHandler'),
json.dumps(network_data),
headers=self.default_headers,
expect_errors=True
)
self.assertEquals(resp.status, 409)
network_data["network"] = "test_fail"
resp = self.app.post(
reverse('NetworkCollectionHandler'),
json.dumps(network_data),
headers=self.default_headers,
expect_errors=True
)
self.assertEqual(resp.status, 400)

View File

@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
import json
from paste.fixture import TestApp
from api.models import Release
from base import BaseHandlers
from base import reverse
@ -25,3 +27,97 @@ class TestHandlers(BaseHandlers):
self.assertEquals(200, resp.status)
response = json.loads(resp.body)
self.assertEquals(100, len(response))
def test_release_creation(self):
resp = self.app.post(
'/api/releases',
params=json.dumps({
'name': 'Another test release',
'version': '1.0'
}),
headers=self.default_headers
)
self.assertEquals(resp.status, 201)
def test_release_create(self):
release_name = "OpenStack"
release_version = "1.0.0"
release_description = "This is test release"
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
json.dumps({
'name': release_name,
'version': release_version,
'description': release_description,
'networks_metadata': [
{"name": "floating", "access": "public"},
{"name": "fixed", "access": "private10"},
{"name": "storage", "access": "private192"}
]
}),
headers=self.default_headers
)
self.assertEquals(resp.status, 201)
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
json.dumps({
'name': release_name,
'version': release_version,
'description': release_description,
'networks_metadata': [
{"name": "fixed", "access": "private10"}
]
}),
headers=self.default_headers,
expect_errors=True
)
self.assertEquals(resp.status, 409)
release_from_db = self.db.query(Release).filter(
Release.name == release_name,
Release.version == release_version,
Release.description == release_description
).all()
self.assertEquals(len(release_from_db), 1)
def test_release_create_already_exist(self):
release_name = "OpenStack"
release_version = "1.0.0"
release_description = "This is test release"
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
json.dumps({
'name': release_name,
'version': release_version,
'description': release_description,
'networks_metadata': [
{"name": "floating", "access": "public"},
{"name": "fixed", "access": "private10"},
{"name": "storage", "access": "private192"}
]
}),
headers=self.default_headers
)
self.assertEquals(resp.status, 201)
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
json.dumps({
'name': release_name,
'version': release_version,
'description': release_description,
'networks_metadata': [
{"name": "fixed", "access": "private10"}
]
}),
headers=self.default_headers,
expect_errors=True
)
self.assertEquals(resp.status, 409)
release_from_db = self.db.query(Release).filter(
Release.name == release_name,
Release.version == release_version,
Release.description == release_description
).one()

View File

@ -46,55 +46,3 @@ class TestHandlers(BaseHandlers):
)
self.assertEquals(204, resp.status)
self.assertEquals('', resp.body)
def test_release_create(self):
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
params=json.dumps({
'name': 'Another test release',
'version': '1.0'
}),
headers=self.default_headers
)
self.assertEquals(resp.status, 201)
def test_release_create_already_exist(self):
release_name = "OpenStack"
release_version = "1.0.0"
release_description = "This is test release"
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
json.dumps({
'name': release_name,
'version': release_version,
'description': release_description,
'networks_metadata': [
{"name": "floating", "access": "public"},
{"name": "fixed", "access": "private"},
{"name": "storage", "access": "private"}
]
}),
headers=self.default_headers
)
self.assertEquals(resp.status, 201)
resp = self.app.post(
reverse('ReleaseCollectionHandler'),
json.dumps({
'name': release_name,
'version': release_version,
'description': release_description,
'networks_metadata': [
{"name": "fixed", "access": "private"}
]
}),
headers=self.default_headers,
expect_errors=True
)
self.assertEquals(resp.status, 409)
release_from_db = self.db.query(Release).filter(
Release.name == release_name,
Release.version == release_version,
Release.description == release_description
).one()