From 679e1bb7990fc1fc9c4971db6383a75ae6acab80 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Fri, 7 Jul 2017 02:32:36 -0300 Subject: [feature] remote list sorting by date Listing by date is useful for listing newest/oldest documents on blobs storage and should be used for listing new IncomingMessages as described on specification. -- Resolves: #8879 --- testing/tests/blobs/test_fs_backend.py | 4 ++-- testing/tests/server/test_blobs_server.py | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) (limited to 'testing/tests') diff --git a/testing/tests/blobs/test_fs_backend.py b/testing/tests/blobs/test_fs_backend.py index 7fce4cfe..a6d7272d 100644 --- a/testing/tests/blobs/test_fs_backend.py +++ b/testing/tests/blobs/test_fs_backend.py @@ -106,7 +106,7 @@ class FilesystemBackendTestCase(unittest.TestCase): @mock.patch('leap.soledad.server._blobs.os.walk') def test_list_blobs(self, walk_mock): backend, _ = _blobs.FilesystemBlobsBackend(self.tempdir), None - walk_mock.return_value = [(_, _, ['blob_0']), (_, _, ['blob_1'])] + walk_mock.return_value = [('', _, ['blob_0']), ('', _, ['blob_1'])] result = json.loads(backend.list_blobs('user', DummyRequest(['']))) self.assertEquals(result, ['blob_0', 'blob_1']) @@ -114,7 +114,7 @@ class FilesystemBackendTestCase(unittest.TestCase): @mock.patch('leap.soledad.server._blobs.os.walk') def test_list_blobs_limited_by_namespace(self, walk_mock): backend, _ = _blobs.FilesystemBlobsBackend(self.tempdir), None - walk_mock.return_value = [(_, _, ['blob_0']), (_, _, ['blob_1'])] + walk_mock.return_value = [('', _, ['blob_0']), ('', _, ['blob_1'])] result = json.loads(backend.list_blobs('user', DummyRequest(['']), namespace='incoming')) self.assertEquals(result, ['blob_0', 'blob_1']) diff --git a/testing/tests/server/test_blobs_server.py b/testing/tests/server/test_blobs_server.py index 36bd3f0a..bbb1b6d5 100644 --- a/testing/tests/server/test_blobs_server.py +++ b/testing/tests/server/test_blobs_server.py @@ -17,6 +17,7 @@ """ Integration tests for blobs server """ +import os import pytest from io import BytesIO from twisted.trial import unittest @@ -64,6 +65,26 @@ class BlobServerTestCase(unittest.TestCase): blobs_list = yield manager.remote_list() self.assertEquals(set(['blob_id1', 'blob_id2']), set(blobs_list)) + @defer.inlineCallbacks + @pytest.mark.usefixtures("method_tmpdir") + def test_list_orders_by_date(self): + manager = BlobManager('', self.uri, self.secret, + self.secret, 'user') + yield manager._encrypt_and_upload('blob_id1', BytesIO("1")) + yield manager._encrypt_and_upload('blob_id2', BytesIO("2")) + blobs_list = yield manager.remote_list(order_by='date') + self.assertEquals(['blob_id1', 'blob_id2'], blobs_list) + self.__touch(self.tempdir, 'user', 'b', 'blo', 'blob_i', 'blob_id1') + blobs_list = yield manager.remote_list(order_by='+date') + self.assertEquals(['blob_id2', 'blob_id1'], blobs_list) + blobs_list = yield manager.remote_list(order_by='-date') + self.assertEquals(['blob_id1', 'blob_id2'], blobs_list) + + def __touch(self, *args): + path = os.path.join(*args) + with open(path, 'a'): + os.utime(path, None) + @defer.inlineCallbacks @pytest.mark.usefixtures("method_tmpdir") def test_upload_deny_duplicates(self): -- cgit v1.2.3