test_cloud_factory.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import unittest
  2. from cloudbridge.cloud import factory
  3. from cloudbridge.cloud import interfaces
  4. from cloudbridge.cloud.factory import CloudProviderFactory
  5. from cloudbridge.cloud.providers.aws import AWSCloudProvider
  6. import test.helpers as helpers
  7. class CloudFactoryTestCase(unittest.TestCase):
  8. def test_create_provider_valid(self):
  9. """
  10. Creating a provider with a known name should return
  11. a valid implementation
  12. """
  13. self.assertIsInstance(CloudProviderFactory().create_provider(
  14. factory.ProviderList.AWS, {}),
  15. interfaces.CloudProvider,
  16. "create_provider did not return a valid instance type")
  17. def test_create_provider_invalid(self):
  18. """
  19. Creating a provider with an invalid name should raise a
  20. NotImplementedError
  21. """
  22. with self.assertRaises(NotImplementedError):
  23. CloudProviderFactory().create_provider("ec23", {})
  24. def test_find_provider_impl_valid(self):
  25. """
  26. Searching for a provider with a known name should return a
  27. valid implementation
  28. """
  29. self.assertEqual(CloudProviderFactory().find_provider_impl(
  30. factory.ProviderList.AWS),
  31. "cloudbridge.cloud.providers.aws.AWSCloudProvider")
  32. def test_find_provider_impl_invalid(self):
  33. """
  34. Searching for a provider with an invalid name should return
  35. None
  36. """
  37. self.assertIsNone(
  38. CloudProviderFactory().find_provider_impl("openstack1"))
  39. def test_find_provider_mock_valid(self):
  40. """
  41. Searching for a provider with a known mock driver should return
  42. an implementation implementing helpers.TestMockHelperMixin
  43. """
  44. mock = CloudProviderFactory().get_provider_class(
  45. factory.ProviderList.AWS, get_mock=True)
  46. self.assertTrue(
  47. issubclass(
  48. mock,
  49. helpers.TestMockHelperMixin),
  50. "Expected mock for AWS but class does not implement mock provider")
  51. for cls in CloudProviderFactory().get_all_provider_classes(
  52. get_mock=False):
  53. self.assertTrue(
  54. not issubclass(
  55. cls,
  56. helpers.TestMockHelperMixin),
  57. "Did not expect mock but %s implements mock provider" %
  58. cls)
  59. def test_get_provider_class_valid(self):
  60. """
  61. Searching for a provider class with a known name should return a valid
  62. class
  63. """
  64. self.assertEqual(CloudProviderFactory().get_provider_class(
  65. factory.ProviderList.AWS), AWSCloudProvider)
  66. def test_get_provider_class_invalid(self):
  67. """
  68. Searching for a provider class with an invalid name should
  69. return None
  70. """
  71. self.assertIsNone(CloudProviderFactory().get_provider_class("aws1"))