summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/src/leap/soledad/client/_blobs.py3
-rw-r--r--testing/tests/blobs/test_blobs.py18
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)