test_provider_factory.py 3.2 KB

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