| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import unittest
- from cloudbridge import factory, interfaces
- from cloudbridge.factory import CloudProviderFactory
- from cloudbridge.interfaces import TestMockHelperMixin
- from cloudbridge.interfaces.provider import CloudProvider
- from cloudbridge.providers.aws import AWSCloudProvider
- class CloudFactoryTestCase(unittest.TestCase):
- _multiprocess_can_split_ = True
- def test_create_provider_valid(self):
- # Creating a provider with a known name should return
- # a valid implementation
- self.assertIsInstance(CloudProviderFactory().create_provider(
- factory.ProviderList.AWS, {}),
- interfaces.CloudProvider,
- "create_provider did not return a valid VM type")
- def test_create_provider_invalid(self):
- # Creating a provider with an invalid name should raise a
- # NotImplementedError
- with self.assertRaises(NotImplementedError):
- CloudProviderFactory().create_provider("ec23", {})
- def test_get_provider_class_valid(self):
- # Searching for a provider class with a known name should return a
- # valid class
- self.assertEqual(CloudProviderFactory().get_provider_class(
- factory.ProviderList.AWS), AWSCloudProvider)
- def test_get_provider_class_invalid(self):
- # Searching for a provider class with an invalid name should
- # return None
- self.assertIsNone(CloudProviderFactory().get_provider_class("aws1"))
- def test_find_provider_include_mocks(self):
- self.assertTrue(
- any(cls for cls
- in CloudProviderFactory().get_all_provider_classes()
- if issubclass(cls, TestMockHelperMixin)),
- "expected to find at least one mock provider")
- def test_find_provider_exclude_mocks(self):
- for cls in CloudProviderFactory().get_all_provider_classes(
- ignore_mocks=True):
- self.assertTrue(
- not issubclass(cls, TestMockHelperMixin),
- "Did not expect mock but %s implements mock provider" % cls)
- def test_register_provider_class_invalid(self):
- # Attempting to register an invalid test class should be ignored
- class DummyClass(object):
- PROVIDER_ID = 'aws'
- factory = CloudProviderFactory()
- factory.register_provider_class(DummyClass)
- self.assertTrue(DummyClass not in
- factory.get_all_provider_classes())
- def test_register_provider_class_double(self):
- # Attempting to register the same class twice should register second
- # instance
- class DummyClass(CloudProvider):
- PROVIDER_ID = 'aws'
- factory = CloudProviderFactory()
- factory.list_providers()
- factory.register_provider_class(DummyClass)
- self.assertTrue(DummyClass in
- factory.get_all_provider_classes())
- self.assertTrue(AWSCloudProvider not in
- factory.get_all_provider_classes())
- def test_register_provider_class_without_id(self):
- # Attempting to register a class without a PROVIDER_ID attribute
- # should be ignored.
- class DummyClass(CloudProvider):
- pass
- factory = CloudProviderFactory()
- factory.register_provider_class(DummyClass)
- self.assertTrue(DummyClass not in
- factory.get_all_provider_classes())
|