From 93fa3fe830b188f3a135fd85ac593bde2c755c2e Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Mon, 27 Mar 2017 22:02:43 -0300 Subject: [refactor] use fixed rev and remove doc_id (blobs) doc_id wasn't being stored, loaded or used anywhere except for authentication. This commit removes it and uses a fixed value for rev since blobs is supposed to be immutable. - Resolves: #8813 --- testing/tests/blobs/test_blobs.py | 12 +++++------- testing/tests/blobs/test_local_backend.py | 27 +++++++++++---------------- testing/tests/server/test_blobs_server.py | 13 ++++++------- 3 files changed, 22 insertions(+), 30 deletions(-) (limited to 'testing') diff --git a/testing/tests/blobs/test_blobs.py b/testing/tests/blobs/test_blobs.py index 8dd3abbe..c99cc572 100644 --- a/testing/tests/blobs/test_blobs.py +++ b/testing/tests/blobs/test_blobs.py @@ -19,7 +19,7 @@ Tests for blobs handling. """ from twisted.trial import unittest from twisted.internet import defer -from leap.soledad.client._blobs import DecrypterBuffer, BlobManager +from leap.soledad.client._blobs import DecrypterBuffer, BlobManager, FIXED_REV from leap.soledad.client import _crypto from io import BytesIO from mock import Mock @@ -28,8 +28,8 @@ from mock import Mock class BlobTestCase(unittest.TestCase): class doc_info: - doc_id = 'D-deadbeef' - rev = '397932e0c77f45fcb7c3732930e7e9b2:1' + doc_id = 'D-BLOB-ID' + rev = FIXED_REV def setUp(self): self.cleartext = BytesIO('rosa de foc') @@ -42,9 +42,8 @@ class BlobTestCase(unittest.TestCase): @defer.inlineCallbacks def test_decrypt_buffer(self): encrypted = (yield self.blob.encrypt()).getvalue() - doc_id, rev = self.doc_info.doc_id, self.doc_info.rev tag = encrypted[-16:] - buf = DecrypterBuffer(doc_id, rev, self.secret, tag) + buf = DecrypterBuffer(self.doc_info.doc_id, self.secret, tag) buf.write(encrypted) fd, size = buf.close() self.assertEquals(fd.getvalue(), 'rosa de foc') @@ -63,7 +62,6 @@ class BlobTestCase(unittest.TestCase): defer.returnValue(Mock(code=200)) manager = BlobManager('', '', self.secret, self.secret, 'user') - doc_id, rev = self.doc_info.doc_id, self.doc_info.rev fd = BytesIO('up and up') manager._client.put = _check_result - yield manager._encrypt_and_upload('blob_id', doc_id, rev, fd) + yield manager._encrypt_and_upload(self.doc_info.doc_id, fd) diff --git a/testing/tests/blobs/test_local_backend.py b/testing/tests/blobs/test_local_backend.py index 80696553..5bfece8f 100644 --- a/testing/tests/blobs/test_local_backend.py +++ b/testing/tests/blobs/test_local_backend.py @@ -19,7 +19,7 @@ Tests for sqlcipher backend on blobs client. """ from twisted.trial import unittest from twisted.internet import defer -from leap.soledad.client._blobs import BlobManager, BlobDoc +from leap.soledad.client._blobs import BlobManager, BlobDoc, FIXED_REV from io import BytesIO from mock import Mock import pytest @@ -30,7 +30,7 @@ class BlobManagerTestCase(unittest.TestCase): class doc_info: doc_id = 'D-deadbeef' - rev = '397932e0c77f45fcb7c3732930e7e9b2:1' + rev = FIXED_REV def setUp(self): self.cleartext = BytesIO('rosa de foc') @@ -45,10 +45,10 @@ class BlobManagerTestCase(unittest.TestCase): @pytest.mark.usefixtures("method_tmpdir") def test_get_inexistent(self): self.manager._download_and_decrypt = Mock(return_value=None) - args = ('inexistent_blob_id', 'inexistent_doc_id', 'inexistent_rev') - result = yield self.manager.get(*args) + bad_blob_id = 'inexsistent_id' + result = yield self.manager.get(bad_blob_id) self.assertIsNone(result) - self.manager._download_and_decrypt.assert_called_once_with(*args) + self.manager._download_and_decrypt.assert_called_once_with(bad_blob_id) @defer.inlineCallbacks @pytest.mark.usefixtures("method_tmpdir") @@ -57,8 +57,7 @@ class BlobManagerTestCase(unittest.TestCase): msg = "It's me, M4r10!" yield self.manager.local.put('myblob_id', BytesIO(msg), size=len(msg)) - args = ('myblob_id', 'mydoc_id', 'cool_rev') - result = yield self.manager.get(*args) + result = yield self.manager.get('myblob_id') self.assertEquals(result.getvalue(), msg) self.assertNot(self.manager._download_and_decrypt.called) @@ -67,8 +66,7 @@ class BlobManagerTestCase(unittest.TestCase): def test_put_stores_on_local_db(self): self.manager._encrypt_and_upload = Mock(return_value=None) msg = "Hey Joe" - doc = BlobDoc('mydoc_id', 'mydoc_rev', BytesIO(msg), - blob_id='myblob_id') + doc = BlobDoc(BytesIO(msg), blob_id='myblob_id') yield self.manager.put(doc, size=len(msg)) result = yield self.manager.local.get('myblob_id') self.assertEquals(result.getvalue(), msg) @@ -83,10 +81,9 @@ class BlobManagerTestCase(unittest.TestCase): tmpfile = os.tmpfile() tmpfile.write(msg) tmpfile.seek(0) - doc = BlobDoc('mydoc_id', 'mydoc_rev', tmpfile, - blob_id='myblob_id') + doc = BlobDoc(tmpfile, 'myblob_id') yield self.manager.put(doc, size=len(msg)) - result = yield self.manager.get(doc.blob_id, doc.doc_id, doc.rev) + result = yield self.manager.get(doc.blob_id) self.assertEquals(result.getvalue(), msg) self.assertTrue(self.manager._encrypt_and_upload.called) self.assertFalse(self.manager._download_and_decrypt.called) @@ -96,11 +93,9 @@ class BlobManagerTestCase(unittest.TestCase): def test_local_list_blobs(self): self.manager._encrypt_and_upload = Mock(return_value=None) msg = "1337" - doc = BlobDoc('mydoc_id', 'mydoc_rev', BytesIO(msg), - blob_id='myblob_id') + doc = BlobDoc(BytesIO(msg), 'myblob_id') yield self.manager.put(doc, size=len(msg)) - doc2 = BlobDoc('mydoc_id2', 'mydoc_rev2', BytesIO(msg), - blob_id='myblob_id2') + doc2 = BlobDoc(BytesIO(msg), 'myblob_id2') yield self.manager.put(doc2, size=len(msg)) blobs_list = yield self.manager.local_list() diff --git a/testing/tests/server/test_blobs_server.py b/testing/tests/server/test_blobs_server.py index 96037ea2..a0306504 100644 --- a/testing/tests/server/test_blobs_server.py +++ b/testing/tests/server/test_blobs_server.py @@ -46,9 +46,8 @@ class BlobServerTestCase(unittest.TestCase): manager = BlobManager('', self.uri, self.secret, self.secret, 'user') fd = BytesIO("save me") - yield manager._encrypt_and_upload('blob_id', 'mydoc', '1', fd) - blob, size = yield manager._download_and_decrypt('blob_id', - 'mydoc', '1') + yield manager._encrypt_and_upload('blob_id', fd) + blob, size = yield manager._download_and_decrypt('blob_id') self.assertEquals(blob.getvalue(), "save me") @defer.inlineCallbacks @@ -56,8 +55,8 @@ class BlobServerTestCase(unittest.TestCase): def test_upload_changes_remote_list(self): manager = BlobManager('', self.uri, self.secret, self.secret, 'user') - yield manager._encrypt_and_upload('blob_id1', '1', '1', BytesIO("1")) - yield manager._encrypt_and_upload('blob_id2', '2', '2', BytesIO("2")) + yield manager._encrypt_and_upload('blob_id1', BytesIO("1")) + yield manager._encrypt_and_upload('blob_id2', BytesIO("2")) blobs_list = yield manager.remote_list() self.assertEquals(set(['blob_id1', 'blob_id2']), set(blobs_list)) @@ -67,7 +66,7 @@ class BlobServerTestCase(unittest.TestCase): manager = BlobManager('', self.uri, self.secret, self.secret, 'user') fd = BytesIO("save me") - yield manager._encrypt_and_upload('blob_id', 'mydoc', '1', fd) + yield manager._encrypt_and_upload('blob_id', fd) fd = BytesIO("save me") with pytest.raises(BlobAlreadyExistsError): - yield manager._encrypt_and_upload('blob_id', 'mydoc', '1', fd) + yield manager._encrypt_and_upload('blob_id', fd) -- cgit v1.2.3