diff options
| -rw-r--r-- | client/src/leap/soledad/client/_blobs.py | 3 | ||||
| -rw-r--r-- | testing/tests/blobs/test_blobs.py | 18 | 
2 files changed, 20 insertions, 1 deletions
| diff --git a/client/src/leap/soledad/client/_blobs.py b/client/src/leap/soledad/client/_blobs.py index e0326378..34ce8f4a 100644 --- a/client/src/leap/soledad/client/_blobs.py +++ b/client/src/leap/soledad/client/_blobs.py @@ -151,7 +151,8 @@ class BlobManager(object):      """      def __init__(self, local_path, remote, key, secret, user): -        self.local = SQLiteBlobBackend(local_path, key) +        if local_path: +            self.local = SQLiteBlobBackend(local_path, key)          self.remote = remote          self.secret = secret          self.user = user diff --git a/testing/tests/blobs/test_blobs.py b/testing/tests/blobs/test_blobs.py index 5e763026..b78f6c0f 100644 --- a/testing/tests/blobs/test_blobs.py +++ b/testing/tests/blobs/test_blobs.py @@ -19,6 +19,7 @@ Tests for cryptographic related stuff.  """  from twisted.trial import unittest  from twisted.internet import defer +from leap.soledad.client import _blobs  from leap.soledad.client._blobs import DecrypterBuffer  from leap.soledad.client import _crypto  from io import BytesIO @@ -47,3 +48,20 @@ class BlobTestCase(unittest.TestCase):          buf.write(encrypted)          fd, size = buf.close()          assert fd.getvalue() == 'rosa de foc' + +    def test_blob_manager_encrypted_upload(self): + +        @defer.inlineCallbacks +        def _check_result(uri, data): +            decryptor = _crypto.BlobDecryptor( +                self.doc_info, data, +                armor=False, +                secret=self.secret) +            decrypted = yield decryptor.decrypt() +            assert decrypted.getvalue() == 'up and up' + +        manager = _blobs.BlobManager('', '', self.secret, self.secret, 'user') +        doc_id, rev = self.doc_info.doc_id, self.doc_info.rev +        fd = BytesIO('up and up') +        _blobs.treq.put = _check_result +        return manager._encrypt_and_upload('blob_id', doc_id, rev, fd) | 
