diff options
Diffstat (limited to 'testing')
-rw-r--r-- | testing/test_soledad/u1db_tests/__init__.py | 7 | ||||
-rw-r--r-- | testing/test_soledad/u1db_tests/test_open.py | 11 | ||||
-rw-r--r-- | testing/test_soledad/util.py | 4 | ||||
-rw-r--r-- | testing/tests/blobs/test_blob_manager.py | 4 | ||||
-rw-r--r-- | testing/tests/blobs/test_decrypter_buffer.py | 10 | ||||
-rw-r--r-- | testing/tests/blobs/test_sqlcipher_client_backend.py | 2 | ||||
-rw-r--r-- | testing/tests/client/test_attachments.py | 81 | ||||
-rw-r--r-- | testing/tests/client/test_aux_methods.py | 2 | ||||
-rw-r--r-- | testing/tests/server/test_blobs_server.py | 4 | ||||
-rw-r--r-- | testing/tests/sqlcipher/test_async.py | 6 | ||||
-rw-r--r-- | testing/tests/sqlcipher/test_backend.py | 9 | ||||
-rw-r--r-- | testing/tests/sync/test_sync_target.py | 6 |
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 |