summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
Diffstat (limited to 'testing')
-rw-r--r--testing/test_soledad/u1db_tests/__init__.py7
-rw-r--r--testing/test_soledad/u1db_tests/test_open.py11
-rw-r--r--testing/test_soledad/util.py4
-rw-r--r--testing/tests/blobs/test_blob_manager.py4
-rw-r--r--testing/tests/blobs/test_decrypter_buffer.py10
-rw-r--r--testing/tests/blobs/test_sqlcipher_client_backend.py2
-rw-r--r--testing/tests/client/test_attachments.py81
-rw-r--r--testing/tests/client/test_aux_methods.py2
-rw-r--r--testing/tests/server/test_blobs_server.py4
-rw-r--r--testing/tests/sqlcipher/test_async.py6
-rw-r--r--testing/tests/sqlcipher/test_backend.py9
-rw-r--r--testing/tests/sync/test_sync_target.py6
12 files changed, 117 insertions, 29 deletions
diff --git a/testing/test_soledad/u1db_tests/__init__.py b/testing/test_soledad/u1db_tests/__init__.py
index 1575b859..ccbb6ca6 100644
--- a/testing/test_soledad/u1db_tests/__init__.py
+++ b/testing/test_soledad/u1db_tests/__init__.py
@@ -37,11 +37,12 @@ from twisted.internet import reactor
from leap.soledad.common.l2db import errors
from leap.soledad.common.l2db import Document
from leap.soledad.common.l2db.backends import inmemory
-from leap.soledad.common.l2db.backends import sqlite_backend
from leap.soledad.common.l2db.remote import server_state
from leap.soledad.common.l2db.remote import http_app
from leap.soledad.common.l2db.remote import http_target
+from leap.soledad.client._database import sqlite
+
if sys.version_info[0] < 3:
from pysqlcipher import dbapi2
else:
@@ -140,7 +141,7 @@ def copy_memory_database_for_test(test, db):
def make_sqlite_partial_expanded_for_test(test, replica_uid):
- db = sqlite_backend.SQLitePartialExpandDatabase(':memory:')
+ db = sqlite.SQLitePartialExpandDatabase(':memory:')
db._set_replica_uid(replica_uid)
return db
@@ -151,7 +152,7 @@ def copy_sqlite_partial_expanded_for_test(test, db):
# CORRECTLY DETECT IT HAPPENING SO THAT WE CAN RAISE ERRORS RATHER THAN
# CORRUPT USER DATA. USE SYNC INSTEAD, OR WE WILL SEND NINJA TO YOUR
# HOUSE.
- new_db = sqlite_backend.SQLitePartialExpandDatabase(':memory:')
+ new_db = sqlite.SQLitePartialExpandDatabase(':memory:')
tmpfile = StringIO()
for line in db._db_handle.iterdump():
if 'sqlite_sequence' not in line: # work around bug in iterdump
diff --git a/testing/test_soledad/u1db_tests/test_open.py b/testing/test_soledad/u1db_tests/test_open.py
index b572fba0..eaaee72f 100644
--- a/testing/test_soledad/u1db_tests/test_open.py
+++ b/testing/test_soledad/u1db_tests/test_open.py
@@ -27,7 +27,8 @@ from test_soledad.u1db_tests.test_backends import TestAlternativeDocument
from leap.soledad.common.l2db import errors
from leap.soledad.common.l2db import open as u1db_open
-from leap.soledad.common.l2db.backends import sqlite_backend
+
+from leap.soledad.client._database import sqlite
@skip("Skiping tests imported from U1DB.")
@@ -47,7 +48,7 @@ class TestU1DBOpen(tests.TestCase):
db = u1db_open(self.db_path, create=True)
self.addCleanup(db.close)
self.assertTrue(os.path.exists(self.db_path))
- self.assertIsInstance(db, sqlite_backend.SQLiteDatabase)
+ self.assertIsInstance(db, sqlite.SQLiteDatabase)
def test_open_with_factory(self):
db = u1db_open(self.db_path, create=True,
@@ -56,7 +57,7 @@ class TestU1DBOpen(tests.TestCase):
self.assertEqual(TestAlternativeDocument, db._factory)
def test_open_existing(self):
- db = sqlite_backend.SQLitePartialExpandDatabase(self.db_path)
+ db = sqlite.SQLitePartialExpandDatabase(self.db_path)
self.addCleanup(db.close)
doc = db.create_doc_from_json(tests.simple_doc)
# Even though create=True, we shouldn't wipe the db
@@ -66,8 +67,8 @@ class TestU1DBOpen(tests.TestCase):
self.assertEqual(doc, doc2)
def test_open_existing_no_create(self):
- db = sqlite_backend.SQLitePartialExpandDatabase(self.db_path)
+ db = sqlite.SQLitePartialExpandDatabase(self.db_path)
self.addCleanup(db.close)
db2 = u1db_open(self.db_path, create=False)
self.addCleanup(db2.close)
- self.assertIsInstance(db2, sqlite_backend.SQLitePartialExpandDatabase)
+ self.assertIsInstance(db2, sqlite.SQLitePartialExpandDatabase)
diff --git a/testing/test_soledad/util.py b/testing/test_soledad/util.py
index 6ffb60b6..0335d544 100644
--- a/testing/test_soledad/util.py
+++ b/testing/test_soledad/util.py
@@ -46,9 +46,9 @@ from leap.soledad.common.couch.state import CouchServerState
from leap.soledad.client import Soledad
from leap.soledad.client import http_target
from leap.soledad.client import auth
-from leap.soledad.client.sqlcipher import SQLCipherDatabase
-from leap.soledad.client.sqlcipher import SQLCipherOptions
from leap.soledad.client._crypto import is_symmetrically_encrypted
+from leap.soledad.client._database.sqlcipher import SQLCipherDatabase
+from leap.soledad.client._database.sqlcipher import SQLCipherOptions
from leap.soledad.server import SoledadApp
diff --git a/testing/tests/blobs/test_blob_manager.py b/testing/tests/blobs/test_blob_manager.py
index 7609936d..69a272c8 100644
--- a/testing/tests/blobs/test_blob_manager.py
+++ b/testing/tests/blobs/test_blob_manager.py
@@ -19,8 +19,8 @@ Tests for BlobManager.
"""
from twisted.trial import unittest
from twisted.internet import defer
-from leap.soledad.client._blobs import BlobManager, BlobDoc, FIXED_REV
-from leap.soledad.client._blobs import BlobAlreadyExistsError
+from leap.soledad.client._database.blobs import BlobManager, BlobDoc, FIXED_REV
+from leap.soledad.client._database.blobs import BlobAlreadyExistsError
from io import BytesIO
from mock import Mock
import pytest
diff --git a/testing/tests/blobs/test_decrypter_buffer.py b/testing/tests/blobs/test_decrypter_buffer.py
index 288c9975..edaa66e2 100644
--- a/testing/tests/blobs/test_decrypter_buffer.py
+++ b/testing/tests/blobs/test_decrypter_buffer.py
@@ -18,12 +18,16 @@
Tests for blobs decrypter buffer. A component which is used as a decryption
sink during blob stream download.
"""
+from io import BytesIO
+from mock import Mock
+
from twisted.trial import unittest
from twisted.internet import defer
-from leap.soledad.client._blobs import DecrypterBuffer, BlobManager, FIXED_REV
+
+from leap.soledad.client._database.blobs import DecrypterBuffer
+from leap.soledad.client._database.blobs import BlobManager
+from leap.soledad.client._database.blobs import FIXED_REV
from leap.soledad.client import _crypto
-from io import BytesIO
-from mock import Mock
class DecrypterBufferCase(unittest.TestCase):
diff --git a/testing/tests/blobs/test_sqlcipher_client_backend.py b/testing/tests/blobs/test_sqlcipher_client_backend.py
index 951bac22..865a64e1 100644
--- a/testing/tests/blobs/test_sqlcipher_client_backend.py
+++ b/testing/tests/blobs/test_sqlcipher_client_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 SQLiteBlobBackend
+from leap.soledad.client._database.blobs import SQLiteBlobBackend
from io import BytesIO
import pytest
diff --git a/testing/tests/client/test_attachments.py b/testing/tests/client/test_attachments.py
new file mode 100644
index 00000000..ad4595e9
--- /dev/null
+++ b/testing/tests/client/test_attachments.py
@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+# test_attachments.py
+# Copyright (C) 2017 LEAP
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+Tests for document attachments.
+"""
+
+import pytest
+
+from io import BytesIO
+from mock import Mock
+
+from twisted.internet import defer
+from test_soledad.util import BaseSoledadTest
+
+
+from leap.soledad.client import AttachmentStates
+
+
+def mock_response(doc):
+ doc._manager._client.get = Mock(
+ return_value=defer.succeed(Mock(code=200, json=lambda: [])))
+ doc._manager._client.put = Mock(
+ return_value=defer.succeed(Mock(code=200)))
+
+
+@pytest.mark.usefixture('method_tmpdir')
+class AttachmentTests(BaseSoledadTest):
+
+ @defer.inlineCallbacks
+ def test_create_doc_saves_store(self):
+ doc = yield self._soledad.create_doc({})
+ self.assertEqual(self._soledad, doc.store)
+
+ @defer.inlineCallbacks
+ def test_put_attachment(self):
+ doc = yield self._soledad.create_doc({})
+ mock_response(doc)
+ yield doc.put_attachment(BytesIO('test'))
+ local_list = yield doc._manager.local_list()
+ self.assertIn(doc._blob_id, local_list)
+
+ @defer.inlineCallbacks
+ def test_get_attachment(self):
+ doc = yield self._soledad.create_doc({})
+ mock_response(doc)
+ yield doc.put_attachment(BytesIO('test'))
+ fd = yield doc.get_attachment()
+ self.assertEqual('test', fd.read())
+
+ @defer.inlineCallbacks
+ def test_attachment_state(self):
+ doc = yield self._soledad.create_doc({})
+ state = yield doc.attachment_state()
+ self.assertEqual(AttachmentStates.NONE, state)
+ mock_response(doc)
+ yield doc.put_attachment(BytesIO('test'))
+ state = yield doc.attachment_state()
+ self.assertEqual(AttachmentStates.LOCAL, state)
+
+ @defer.inlineCallbacks
+ def test_is_dirty(self):
+ doc = yield self._soledad.create_doc({})
+ dirty = yield doc.is_dirty()
+ self.assertFalse(dirty)
+ doc.content = {'test': True}
+ dirty = yield doc.is_dirty()
+ self.assertTrue(dirty)
diff --git a/testing/tests/client/test_aux_methods.py b/testing/tests/client/test_aux_methods.py
index 729aa28a..da33255c 100644
--- a/testing/tests/client/test_aux_methods.py
+++ b/testing/tests/client/test_aux_methods.py
@@ -22,7 +22,7 @@ import os
from pytest import inlineCallbacks
from leap.soledad.client import Soledad
-from leap.soledad.client.adbapi import U1DBConnectionPool
+from leap.soledad.client._database.adbapi import U1DBConnectionPool
from leap.soledad.client._secrets.util import SecretsError
from test_soledad.util import BaseSoledadTest
diff --git a/testing/tests/server/test_blobs_server.py b/testing/tests/server/test_blobs_server.py
index 2e5af01f..cd39833f 100644
--- a/testing/tests/server/test_blobs_server.py
+++ b/testing/tests/server/test_blobs_server.py
@@ -24,8 +24,10 @@ from twisted.web.server import Site
from twisted.internet import reactor
from twisted.internet import defer
from treq._utils import set_global_pool
+
from leap.soledad.server import _blobs as server_blobs
-from leap.soledad.client._blobs import BlobManager, BlobAlreadyExistsError
+from leap.soledad.client._database.blobs import BlobManager
+from leap.soledad.client._database.blobs import BlobAlreadyExistsError
class BlobServerTestCase(unittest.TestCase):
diff --git a/testing/tests/sqlcipher/test_async.py b/testing/tests/sqlcipher/test_async.py
index 42c315fe..dac6c6b9 100644
--- a/testing/tests/sqlcipher/test_async.py
+++ b/testing/tests/sqlcipher/test_async.py
@@ -20,8 +20,8 @@ import hashlib
from twisted.internet import defer
from test_soledad.util import BaseSoledadTest
-from leap.soledad.client import adbapi
-from leap.soledad.client.sqlcipher import SQLCipherOptions
+from leap.soledad.client._database import adbapi
+from leap.soledad.client._database import sqlcipher
class ASyncSQLCipherRetryTestCase(BaseSoledadTest):
@@ -42,7 +42,7 @@ class ASyncSQLCipherRetryTestCase(BaseSoledadTest):
def _get_dbpool(self):
tmpdb = os.path.join(self.tempdir, "test.soledad")
- opts = SQLCipherOptions(tmpdb, "secret", create=True)
+ opts = sqlcipher.SQLCipherOptions(tmpdb, "secret", create=True)
return adbapi.getConnectionPool(opts)
def _get_sample(self):
diff --git a/testing/tests/sqlcipher/test_backend.py b/testing/tests/sqlcipher/test_backend.py
index 6e9595db..4f614fb3 100644
--- a/testing/tests/sqlcipher/test_backend.py
+++ b/testing/tests/sqlcipher/test_backend.py
@@ -26,14 +26,13 @@ import sys
# l2db stuff.
from leap.soledad.common.l2db import errors
from leap.soledad.common.l2db import query_parser
-from leap.soledad.common.l2db.backends.sqlite_backend \
- import SQLitePartialExpandDatabase
# soledad stuff.
from leap.soledad.common.document import SoledadDocument
-from leap.soledad.client.sqlcipher import SQLCipherDatabase
-from leap.soledad.client.sqlcipher import SQLCipherOptions
-from leap.soledad.client.sqlcipher import DatabaseIsNotEncrypted
+from leap.soledad.client._database.sqlite import SQLitePartialExpandDatabase
+from leap.soledad.client._database.sqlcipher import SQLCipherDatabase
+from leap.soledad.client._database.sqlcipher import SQLCipherOptions
+from leap.soledad.client._database.sqlcipher import DatabaseIsNotEncrypted
# u1db tests stuff.
from test_soledad import u1db_tests as tests
diff --git a/testing/tests/sync/test_sync_target.py b/testing/tests/sync/test_sync_target.py
index a54a02ee..e1bd7de1 100644
--- a/testing/tests/sync/test_sync_target.py
+++ b/testing/tests/sync/test_sync_target.py
@@ -32,9 +32,9 @@ from twisted.internet import defer
from leap.soledad.client import http_target as target
from leap.soledad.client.http_target.fetch_protocol import DocStreamReceiver
-from leap.soledad.client.sqlcipher import SQLCipherU1DBSync
-from leap.soledad.client.sqlcipher import SQLCipherOptions
-from leap.soledad.client.sqlcipher import SQLCipherDatabase
+from leap.soledad.client._database.sqlcipher import SQLCipherU1DBSync
+from leap.soledad.client._database.sqlcipher import SQLCipherOptions
+from leap.soledad.client._database.sqlcipher import SQLCipherDatabase
from leap.soledad.client import _crypto
from leap.soledad.common import l2db