test_cloud_helpers.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import itertools
  2. from cloudbridge.cloud.base.resources import ClientPagedResultList
  3. from cloudbridge.cloud.base.resources import ServerPagedResultList
  4. from test.helpers import ProviderTestBase
  5. class DummyResult(object):
  6. def __init__(self, objid, name):
  7. self.id = objid
  8. self.name = name
  9. def __repr__(self):
  10. return "%s (%s)" % (self.id, self.name)
  11. class CloudHelpersTestCase(ProviderTestBase):
  12. def __init__(self, methodName, provider):
  13. super(CloudHelpersTestCase, self).__init__(
  14. methodName=methodName, provider=provider)
  15. def setUp(self):
  16. super(CloudHelpersTestCase, self).setUp()
  17. self.objects = [DummyResult(1, "One"),
  18. DummyResult(2, "Two"),
  19. DummyResult(3, "Three"),
  20. DummyResult(4, "Four"),
  21. ]
  22. def test_client_paged_result_list(self):
  23. objects = self.objects
  24. # A list with limit=2 and marker=None
  25. results = ClientPagedResultList(self.provider, objects, 2, None)
  26. self.assertListEqual(results, list(itertools.islice(objects, 2)))
  27. self.assertEqual(results.marker, objects[1].id)
  28. self.assertTrue(results.is_truncated)
  29. self.assertTrue(results.supports_total)
  30. self.assertEqual(results.total_results, 4)
  31. self.assertEqual(results.data, objects)
  32. # A list with limit=2 and marker=2
  33. results = ClientPagedResultList(self.provider, objects, 2, 2)
  34. self.assertListEqual(results, list(itertools.islice(objects, 2, 4)))
  35. self.assertEqual(results.marker, None)
  36. self.assertFalse(results.is_truncated)
  37. self.assertTrue(results.supports_total)
  38. self.assertEqual(results.total_results, 4)
  39. self.assertEqual(results.data, objects)
  40. # A list with limit=2 and marker=3
  41. results = ClientPagedResultList(self.provider, objects, 2, 3)
  42. self.assertListEqual(results, list(itertools.islice(objects, 3, 4)))
  43. self.assertFalse(results.is_truncated)
  44. self.assertEqual(results.marker, None)
  45. self.assertEqual(results.data, objects)
  46. self.assertFalse(results.supports_server_paging, "Client paged result"
  47. " lists should return False for server paging.")
  48. def test_server_paged_result_list(self):
  49. objects = list(itertools.islice(self.objects, 2))
  50. results = ServerPagedResultList(is_truncated=True,
  51. marker=objects[-1].id,
  52. supports_total=True,
  53. total=2, data=objects)
  54. self.assertTrue(results.is_truncated)
  55. self.assertListEqual(results, objects)
  56. self.assertEqual(results.marker, objects[-1].id)
  57. self.assertTrue(results.supports_total)
  58. self.assertEqual(results.total_results, 2)
  59. self.assertTrue(results.supports_server_paging, "Server paged result"
  60. " lists should return True for server paging.")
  61. with self.assertRaises(NotImplementedError):
  62. _ = results.data