summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/tests/create_router_tests.py
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-07-13 09:02:40 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-07-13 09:02:40 -0600
commit7f989290a14c836b4982e1548d24c9c09f9a0068 (patch)
tree838f47b7af5137f5b0dd1b841a70642d7169e783 /snaps/openstack/tests/create_router_tests.py
parente6326cd5e826d19e4dd2b096c17aff35da1757b3 (diff)
Created domain class for routers.
Created Router domain class so neutron_utils.py functions returning router objects will not be leaking out implementation details as each API version can change these data structures and this should all be handled by the SNAPS neutron utility. JIRA: SNAPS-115 & SNAPS-14 Change-Id: Ib6d36a735d835a6ed4ede489b14e33a261458fed Signed-off-by: spisarski <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/openstack/tests/create_router_tests.py')
-rw-r--r--snaps/openstack/tests/create_router_tests.py107
1 files changed, 96 insertions, 11 deletions
diff --git a/snaps/openstack/tests/create_router_tests.py b/snaps/openstack/tests/create_router_tests.py
index bd2588a..5f2534d 100644
--- a/snaps/openstack/tests/create_router_tests.py
+++ b/snaps/openstack/tests/create_router_tests.py
@@ -12,12 +12,13 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-
+import unittest
import uuid
from snaps.openstack import create_network
from snaps.openstack import create_router
-from snaps.openstack.create_network import NetworkSettings
+from snaps.openstack.create_network import (
+ NetworkSettings, PortSettings)
from snaps.openstack.create_network import OpenStackNetwork
from snaps.openstack.create_router import RouterSettings
from snaps.openstack.tests.os_source_file_test import OSIntegrationTestCase
@@ -31,6 +32,91 @@ static_gateway_ip1 = '10.200.201.1'
static_gateway_ip2 = '10.200.202.1'
+class RouterSettingsUnitTests(unittest.TestCase):
+ """
+ Class for testing the RouterSettings class
+ """
+
+ def test_no_params(self):
+ with self.assertRaises(Exception):
+ RouterSettings()
+
+ def test_empty_config(self):
+ with self.assertRaises(Exception):
+ RouterSettings(**dict())
+
+ def test_name_only(self):
+ settings = RouterSettings(name='foo')
+ self.assertEqual('foo', settings.name)
+ self.assertIsNone(settings.project_name)
+ self.assertIsNone(settings.external_gateway)
+ self.assertIsNone(settings.admin_state_up)
+ self.assertIsNone(settings.enable_snat)
+ self.assertIsNone(settings.external_fixed_ips)
+ self.assertIsNotNone(settings.internal_subnets)
+ self.assertTrue(isinstance(settings.internal_subnets, list))
+ self.assertEqual(0, len(settings.internal_subnets))
+ self.assertIsNotNone(settings.port_settings)
+ self.assertTrue(isinstance(settings.port_settings, list))
+ self.assertEqual(0, len(settings.port_settings))
+
+ def test_config_with_name_only(self):
+ settings = RouterSettings(**{'name': 'foo'})
+ self.assertEqual('foo', settings.name)
+ self.assertIsNone(settings.project_name)
+ self.assertIsNone(settings.external_gateway)
+ self.assertIsNone(settings.admin_state_up)
+ self.assertIsNone(settings.enable_snat)
+ self.assertIsNone(settings.external_fixed_ips)
+ self.assertIsNotNone(settings.internal_subnets)
+ self.assertTrue(isinstance(settings.internal_subnets, list))
+ self.assertEqual(0, len(settings.internal_subnets))
+ self.assertIsNotNone(settings.port_settings)
+ self.assertTrue(isinstance(settings.port_settings, list))
+ self.assertEqual(0, len(settings.port_settings))
+
+ def test_all(self):
+ port_settings = PortSettings(name='foo', network_name='bar')
+ settings = RouterSettings(
+ name='foo', project_name='bar', external_gateway='foo_gateway',
+ admin_state_up=True, enable_snat=False, external_fixed_ips=['ip1'],
+ internal_subnets=['10.0.0.1/24'], interfaces=[port_settings])
+ self.assertEqual('foo', settings.name)
+ self.assertEqual('bar', settings.project_name)
+ self.assertEqual('foo_gateway', settings.external_gateway)
+ self.assertTrue(settings.admin_state_up)
+ self.assertFalse(settings.enable_snat)
+ self.assertEqual(['ip1'], settings.external_fixed_ips)
+ self.assertIsNotNone(settings.internal_subnets)
+ self.assertTrue(isinstance(settings.internal_subnets, list))
+ self.assertEqual(1, len(settings.internal_subnets))
+ self.assertEqual(['10.0.0.1/24'], settings.internal_subnets)
+ self.assertEqual([port_settings], settings.port_settings)
+
+ def test_config_all(self):
+ settings = RouterSettings(
+ **{'name': 'foo', 'project_name': 'bar',
+ 'external_gateway': 'foo_gateway', 'admin_state_up': True,
+ 'enable_snat': False, 'external_fixed_ips': ['ip1'],
+ 'internal_subnets': ['10.0.0.1/24'],
+ 'interfaces':
+ [{'port': {'name': 'foo-port',
+ 'network_name': 'bar-net'}}]})
+ self.assertEqual('foo', settings.name)
+ self.assertEqual('bar', settings.project_name)
+ self.assertEqual('foo_gateway', settings.external_gateway)
+ self.assertTrue(settings.admin_state_up)
+ self.assertFalse(settings.enable_snat)
+ self.assertEqual(['ip1'], settings.external_fixed_ips)
+ self.assertIsNotNone(settings.internal_subnets)
+ self.assertTrue(isinstance(settings.internal_subnets, list))
+ self.assertEqual(1, len(settings.internal_subnets))
+ self.assertEqual(['10.0.0.1/24'], settings.internal_subnets)
+ self.assertEqual([PortSettings(**{'name': 'foo-port',
+ 'network_name': 'bar-net'})],
+ settings.port_settings)
+
+
class CreateRouterSuccessTests(OSIntegrationTestCase):
"""
Class for testing routers with various positive scenarios expected to
@@ -277,7 +363,7 @@ def verify_router_attributes(router_operational, router_creator,
Helper function to validate the attributes of router created with the one
operational
:param router_operational: Operational Router object returned from neutron
- utils
+ utils of type snaps.domain.Router
:param router_creator: router_creator object returned from creating a
router in the router test functions
:param admin_state: True if router is expected to be Up, else False
@@ -291,21 +377,20 @@ def verify_router_attributes(router_operational, router_creator,
return False
elif not router_creator:
return False
- elif not (router_operational['router'][
- 'name'] == router_creator.router_settings.name):
+ elif not (router_operational.name == router_creator.router_settings.name):
return False
- elif not (router_operational['router']['id'] == router['router']['id']):
+ elif not (router_operational.id == router.id):
return False
- elif not (router_operational['router']['status'] == router['router']['status']):
+ elif not (router_operational.status == router.status):
return False
- elif not (router_operational['router']['tenant_id'] == router['router']['tenant_id']):
+ elif not (router_operational.tenant_id == router.tenant_id):
return False
- elif not (admin_state == router_operational['router']['admin_state_up']):
+ elif not (admin_state == router_operational.admin_state_up):
return False
elif (ext_gateway is None) and \
- (router_operational['router']['external_gateway_info'] is not None):
+ (router_operational.external_gateway_info is not None):
return False
elif ext_gateway is not None:
- if router_operational['router']['external_gateway_info'] is None:
+ if router_operational.external_gateway_info is None:
return False
return True