summaryrefslogtreecommitdiff
path: root/tests/blobs/test_blob_manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/blobs/test_blob_manager.py')
-rw-r--r--tests/blobs/test_blob_manager.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/blobs/test_blob_manager.py b/tests/blobs/test_blob_manager.py
index 0fcfff72..1fe47864 100644
--- a/tests/blobs/test_blob_manager.py
+++ b/tests/blobs/test_blob_manager.py
@@ -193,3 +193,24 @@ class BlobManagerTestCase(unittest.TestCase):
message = 'Unavailable blob showing up on listing!'
for blob_id in unavailable_ids:
self.assertNotIn(blob_id, local_list, message)
+
+ @defer.inlineCallbacks
+ @pytest.mark.usefixtures("method_tmpdir")
+ def test_persist_sync_statuses_listing_from_server(self):
+ local = self.manager.local
+ remote_ids = [uuid4().hex for _ in range(10)]
+ local_ids = [uuid4().hex for _ in range(10)]
+ self.manager.remote_list = Mock(return_value=defer.succeed(remote_ids))
+ content, pending = self.cleartext, SyncStatus.PENDING_UPLOAD
+ length, deferreds = len(content.getvalue()), []
+ for blob_id in local_ids:
+ d = local.put(blob_id, content, length, status=pending)
+ deferreds.append(d)
+ yield defer.gatherResults(deferreds)
+ yield self.manager.refresh_sync_status_from_server()
+ d = self.manager.local_list(sync_status=SyncStatus.PENDING_UPLOAD)
+ pending_upload_list = yield d
+ d = self.manager.local_list(sync_status=SyncStatus.PENDING_DOWNLOAD)
+ pending_download_list = yield d
+ self.assertEquals(set(pending_upload_list), set(local_ids))
+ self.assertEquals(set(pending_download_list), set(remote_ids))