Reformat auth_url based on the ID API version.
[snaps.git] / snaps / openstack / tests / create_network_tests.py
index 1bb1369..e941c67 100644 (file)
@@ -17,7 +17,10 @@ import uuid
 
 from snaps.openstack import create_router
 from snaps.openstack.create_network import (OpenStackNetwork, NetworkSettings,
-                                            SubnetSettings, PortSettings)
+                                            SubnetSettings, PortSettings,
+                                            NetworkSettingsError,
+                                            SubnetSettingsError,
+                                            PortSettingsError)
 from snaps.openstack.tests import openstack_tests
 from snaps.openstack.tests.os_source_file_test import (OSIntegrationTestCase,
                                                        OSComponentTestCase)
@@ -33,11 +36,11 @@ class NetworkSettingsUnitTests(unittest.TestCase):
     """
 
     def test_no_params(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(NetworkSettingsError):
             NetworkSettings()
 
     def test_empty_config(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(NetworkSettingsError):
             NetworkSettings(**dict())
 
     def test_name_only(self):
@@ -102,19 +105,19 @@ class SubnetSettingsUnitTests(unittest.TestCase):
     """
 
     def test_no_params(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(SubnetSettingsError):
             SubnetSettings()
 
     def test_empty_config(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(SubnetSettingsError):
             SubnetSettings(**dict())
 
     def test_name_only(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(SubnetSettingsError):
             SubnetSettings(name='foo')
 
     def test_config_with_name_only(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(SubnetSettingsError):
             SubnetSettings(**{'name': 'foo'})
 
     def test_name_cidr_only(self):
@@ -216,19 +219,19 @@ class PortSettingsUnitTests(unittest.TestCase):
     """
 
     def test_no_params(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(PortSettingsError):
             PortSettings()
 
     def test_empty_config(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(PortSettingsError):
             PortSettings(**dict())
 
     def test_name_only(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(PortSettingsError):
             PortSettings(name='foo')
 
     def test_config_name_only(self):
-        with self.assertRaises(Exception):
+        with self.assertRaises(PortSettingsError):
             PortSettings(**{'name': 'foo'})
 
     def test_name_netname_only(self):
@@ -458,8 +461,68 @@ class CreateNetworkSuccessTests(OSIntegrationTestCase):
                                              self.net_config.network_settings)
         self.net_creator2.create()
 
-        self.assertEqual(self.net_creator.get_network()['network']['id'],
-                         self.net_creator2.get_network()['network']['id'])
+        self.assertEqual(self.net_creator.get_network().id,
+                         self.net_creator2.get_network().id)
+
+    def test_create_network_router_admin_user_to_new_project(self):
+        """
+        Tests the creation of an OpenStack network and router with the current
+        user to the admin project.
+        """
+        # Create Network/Subnet where the project names have been changed
+        admin_project_name = self.admin_os_creds.project_name
+        self.net_config.network_settings.project_name = admin_project_name
+        self.net_config.network_settings.subnet_settings[0].project_name = \
+            admin_project_name
+        self.net_creator = OpenStackNetwork(self.os_creds,
+                                            self.net_config.network_settings)
+        self.net_creator.create()
+
+        retrieved_net = neutron_utils.get_network(
+            self.neutron, self.net_config.network_settings.name)
+
+        self.assertEqual(self.net_creator.get_network().id, retrieved_net.id)
+
+        # Create Router
+        self.net_config.router_settings.project_name = admin_project_name
+        self.router_creator = create_router.OpenStackRouter(
+            self.os_creds, self.net_config.router_settings)
+        self.router_creator.create()
+
+        retrieved_router = neutron_utils.get_router_by_name(
+            self.neutron, self.router_creator.get_router().name)
+        self.assertEqual(
+            self.router_creator.get_router().id, retrieved_router.id)
+
+    def test_create_network_router_new_user_to_admin_project(self):
+        """
+        Tests the creation of an OpenStack network and router with the admin
+        user to the new project.
+        """
+        # Create Network/Subnet where the project names have been changed
+        new_project_name = self.os_creds.project_name
+        self.net_config.network_settings.project_name = new_project_name
+        self.net_config.network_settings.subnet_settings[0].project_name = \
+            new_project_name
+        self.net_creator = OpenStackNetwork(self.admin_os_creds,
+                                            self.net_config.network_settings)
+        self.net_creator.create()
+
+        retrieved_net = neutron_utils.get_network(
+            self.neutron, self.net_config.network_settings.name)
+
+        self.assertEqual(self.net_creator.get_network().id, retrieved_net.id)
+
+        # Create Router
+        self.net_config.router_settings.project_name = new_project_name
+        self.router_creator = create_router.OpenStackRouter(
+            self.admin_os_creds, self.net_config.router_settings)
+        self.router_creator.create()
+
+        retrieved_router = neutron_utils.get_router_by_name(
+            self.neutron, self.router_creator.get_router().name)
+        self.assertEqual(
+            self.router_creator.get_router().id, retrieved_router.id)
 
 
 class CreateNetworkTypeTests(OSComponentTestCase):
@@ -521,8 +584,7 @@ class CreateNetworkTypeTests(OSComponentTestCase):
         neutron_utils_tests.validate_network(
             self.neutron, net_settings.name, True)
 
-        self.assertEquals(
-            network_type, network['network']['provider:network_type'])
+        self.assertEquals(network_type, network.type)
 
     def test_create_network_type_vxlan(self):
         """
@@ -543,8 +605,7 @@ class CreateNetworkTypeTests(OSComponentTestCase):
         neutron_utils_tests.validate_network(self.neutron, net_settings.name,
                                              True)
 
-        self.assertEqual(network_type,
-                         network['network']['provider:network_type'])
+        self.assertEqual(network_type, network.type)
 
     def test_create_network_type_flat(self):
         """
@@ -553,8 +614,9 @@ class CreateNetworkTypeTests(OSComponentTestCase):
         # Create Network
         network_type = 'flat'
 
-        # TODO - this value must be variable to work on all OpenStack pods
+        # This value must be variable to work on all OpenStack pods
         physical_network = 'datacentre'
+
         net_settings = NetworkSettings(
             name=self.net_config.network_settings.name,
             subnet_settings=self.net_config.network_settings.subnet_settings,
@@ -566,8 +628,7 @@ class CreateNetworkTypeTests(OSComponentTestCase):
         neutron_utils_tests.validate_network(
             self.neutron, net_settings.name, True)
 
-        self.assertEquals(network_type,
-                          network['network']['provider:network_type'])
+        self.assertEquals(network_type, network.type)
 
     def test_create_network_type_foo(self):
         """