test_cloud_helpers.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 setUp(self):
  13. super(CloudHelpersTestCase, self).setUp()
  14. self.objects = [DummyResult(1, "One"),
  15. DummyResult(2, "Two"),
  16. DummyResult(3, "Three"),
  17. DummyResult(4, "Four"),
  18. ]
  19. def test_client_paged_result_list(self):
  20. objects = self.objects
  21. # A list with limit=2 and marker=None
  22. results = ClientPagedResultList(self.provider, objects, 2, None)
  23. self.assertListEqual(results, list(itertools.islice(objects, 2)))
  24. self.assertEqual(results.marker, objects[1].id)
  25. self.assertTrue(results.is_truncated)
  26. self.assertTrue(results.supports_total)
  27. self.assertEqual(results.total_results, 4)
  28. self.assertEqual(results.data, objects)
  29. # A list with limit=2 and marker=2
  30. results = ClientPagedResultList(self.provider, objects, 2, 2)
  31. self.assertListEqual(results, list(itertools.islice(objects, 2, 4)))
  32. self.assertEqual(results.marker, None)
  33. self.assertFalse(results.is_truncated)
  34. self.assertTrue(results.supports_total)
  35. self.assertEqual(results.total_results, 4)
  36. self.assertEqual(results.data, objects)
  37. # A list with limit=2 and marker=3
  38. results = ClientPagedResultList(self.provider, objects, 2, 3)
  39. self.assertListEqual(results, list(itertools.islice(objects, 3, 4)))
  40. self.assertFalse(results.is_truncated)
  41. self.assertEqual(results.marker, None)
  42. self.assertEqual(results.data, objects)
  43. self.assertFalse(results.supports_server_paging, "Client paged result"
  44. " lists should return False for server paging.")
  45. def test_server_paged_result_list(self):
  46. objects = list(itertools.islice(self.objects, 2))
  47. results = ServerPagedResultList(is_truncated=True,
  48. marker=objects[-1].id,
  49. supports_total=True,
  50. total=2, data=objects)
  51. self.assertTrue(results.is_truncated)
  52. self.assertListEqual(results, objects)
  53. self.assertEqual(results.marker, objects[-1].id)
  54. self.assertTrue(results.supports_total)
  55. self.assertEqual(results.total_results, 2)
  56. self.assertTrue(results.supports_server_paging, "Server paged result"
  57. " lists should return True for server paging.")
  58. with self.assertRaises(NotImplementedError):
  59. _ = results.data