diff options
8 files changed, 39 insertions, 53 deletions
diff --git a/common/src/leap/soledad/common/tests/test_couch.py b/common/src/leap/soledad/common/tests/test_couch.py index 468ad8d8..08a14d02 100644 --- a/common/src/leap/soledad/common/tests/test_couch.py +++ b/common/src/leap/soledad/common/tests/test_couch.py @@ -25,6 +25,7 @@ import json  from urlparse import urljoin  from couchdb.client import Server +from uuid import uuid4  from testscenarios import TestWithScenarios @@ -56,8 +57,8 @@ class TestCouchBackendImpl(CouchDBTestCase):      def test__allocate_doc_id(self):          db = couch.CouchDatabase.open_database(              urljoin( -                'http://localhost:' + str(self.wrapper.port), -                'u1db_tests' +                'http://localhost:' + str(self.couch_port), +                ('test-%s' % uuid4().hex)              ),              create=True,              ensure_ddocs=True) @@ -66,6 +67,7 @@ class TestCouchBackendImpl(CouchDBTestCase):          self.assertEqual(34, len(doc_id1))          int(doc_id1[len('D-'):], 16)          self.assertNotEqual(doc_id1, db._allocate_doc_id()) +        self.delete_db(db._dbname)  # ----------------------------------------------------------------------------- @@ -73,25 +75,26 @@ class TestCouchBackendImpl(CouchDBTestCase):  # -----------------------------------------------------------------------------  def make_couch_database_for_test(test, replica_uid): -    port = str(test.wrapper.port) -    return couch.CouchDatabase.open_database( -        urljoin('http://localhost:' + port, replica_uid), +    port = str(test.couch_port) +    dbname = ('test-%s' % uuid4().hex) +    db = couch.CouchDatabase.open_database( +        urljoin('http://localhost:' + port, dbname),          create=True,          replica_uid=replica_uid or 'test',          ensure_ddocs=True)  def copy_couch_database_for_test(test, db): -    port = str(test.wrapper.port) +    port = str(test.couch_port)      couch_url = 'http://localhost:' + port -    new_dbname = db._replica_uid + '_copy' +    new_dbname = db._dbname + '_copy'      new_db = couch.CouchDatabase.open_database(          urljoin(couch_url, new_dbname),          create=True,          replica_uid=db._replica_uid or 'test')      # copy all docs      session = couch.Session() -    old_couch_db = Server(couch_url, session=session)[db._replica_uid] +    old_couch_db = Server(couch_url, session=session)[db._dbname]      new_couch_db = Server(couch_url, session=session)[new_dbname]      for doc_id in old_couch_db:          doc = old_couch_db.get(doc_id) diff --git a/common/src/leap/soledad/common/tests/test_couch_operations_atomicity.py b/common/src/leap/soledad/common/tests/test_couch_operations_atomicity.py index 0a06cc39..25f709ca 100644 --- a/common/src/leap/soledad/common/tests/test_couch_operations_atomicity.py +++ b/common/src/leap/soledad/common/tests/test_couch_operations_atomicity.py @@ -23,6 +23,7 @@ import threading  from urlparse import urljoin  from twisted.internet import defer +from uuid import uuid4  from leap.soledad.client import Soledad  from leap.soledad.common.couch import CouchDatabase, CouchServerState @@ -55,7 +56,7 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):      sync_target = soledad_sync_target -    def _soledad_instance(self, user='user-uuid', passphrase=u'123', +    def _soledad_instance(self, user=None, passphrase=u'123',                            prefix='',                            secrets_path='secrets.json',                            local_db_path='soledad.u1db', server_url='', @@ -63,6 +64,7 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):          """          Instantiate Soledad.          """ +        user = user or self.user          # this callback ensures we save a document which is sent to the shared          # db. @@ -89,9 +91,9 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):      def setUp(self):          TestCaseWithServer.setUp(self)          CouchDBTestCase.setUp(self) -        self.couch_url = 'http://localhost:' + str(self.wrapper.port) +        self.user = ('user-%s' % uuid4().hex)          self.db = CouchDatabase.open_database( -            urljoin(self.couch_url, 'user-user-uuid'), +            urljoin(self.couch_url, 'user-' + self.user),              create=True,              replica_uid='replica',              ensure_ddocs=True) diff --git a/common/src/leap/soledad/common/tests/test_server.py b/common/src/leap/soledad/common/tests/test_server.py index 5e8e5f90..0667459e 100644 --- a/common/src/leap/soledad/common/tests/test_server.py +++ b/common/src/leap/soledad/common/tests/test_server.py @@ -333,7 +333,6 @@ class EncryptedSyncTestCase(          # dependencies.          # XXX explain better          CouchDBTestCase.setUp(self) -        self.couch_url = 'http://localhost:' + str(self.wrapper.port)          self.tempdir = tempfile.mkdtemp(prefix="leap_tests-")          TestCaseWithServer.setUp(self) @@ -494,7 +493,6 @@ class LockResourceTestCase(          # dependencies.          # XXX explain better          CouchDBTestCase.setUp(self) -        self.couch_url = 'http://localhost:' + str(self.wrapper.port)          self.tempdir = tempfile.mkdtemp(prefix="leap_tests-")          TestCaseWithServer.setUp(self)          # create the databases diff --git a/common/src/leap/soledad/common/tests/test_sqlcipher_sync.py b/common/src/leap/soledad/common/tests/test_sqlcipher_sync.py index af2d0e2a..ead4ee5f 100644 --- a/common/src/leap/soledad/common/tests/test_sqlcipher_sync.py +++ b/common/src/leap/soledad/common/tests/test_sqlcipher_sync.py @@ -20,10 +20,12 @@ Test sqlcipher backend sync.  import json +import os  from u1db import sync  from u1db import vectorclock  from u1db import errors +from uuid import uuid4  from testscenarios import TestWithScenarios  from urlparse import urljoin diff --git a/common/src/leap/soledad/common/tests/test_sync.py b/common/src/leap/soledad/common/tests/test_sync.py index 61f3879f..04e8b163 100644 --- a/common/src/leap/soledad/common/tests/test_sync.py +++ b/common/src/leap/soledad/common/tests/test_sync.py @@ -63,7 +63,6 @@ class InterruptableSyncTestCase(          TestCaseWithServer.setUp(self)          CouchDBTestCase.setUp(self)          self.tempdir = tempfile.mkdtemp(prefix="leap_tests-") -        self.couch_url = 'http://localhost:' + str(self.wrapper.port)      def tearDown(self):          CouchDBTestCase.tearDown(self) @@ -177,13 +176,7 @@ class TestSoledadDbSync(          SoledadWithCouchServerMixin.setUp(self)          self.startTwistedServer()          self.db = self.make_database_for_test(self, 'test1') -        self.db2 = couch.CouchDatabase.open_database( -            urljoin( -                'http://localhost:' + str(self.wrapper.port), -                'test' -            ), -            create=True, -            ensure_ddocs=True) +        self.db2 = self.request_state._create_database(replica_uid='test')      def tearDown(self):          """ @@ -199,7 +192,7 @@ class TestSoledadDbSync(          and Token auth.          """          target = soledad_sync_target( -            self, target_name, +            self, self.db2._dbname,              source_replica_uid=self._soledad._dbpool.replica_uid)          self.addCleanup(target.close)          return sync.SoledadSynchronizer( diff --git a/common/src/leap/soledad/common/tests/test_sync_deferred.py b/common/src/leap/soledad/common/tests/test_sync_deferred.py index 0065413a..a07be66f 100644 --- a/common/src/leap/soledad/common/tests/test_sync_deferred.py +++ b/common/src/leap/soledad/common/tests/test_sync_deferred.py @@ -85,13 +85,7 @@ class BaseSoledadDeferredEncTest(SoledadWithCouchServerMixin):              defer_encryption=True, sync_db_key=sync_db_key)          self.db1 = SQLCipherDatabase(self.opts) -        self.db2 = couch.CouchDatabase.open_database( -            urljoin( -                'http://localhost:' + str(self.wrapper.port), -                'test' -            ), -            create=True, -            ensure_ddocs=True) +        self.db2 = self.request_state._create_database('test')      def tearDown(self):          # XXX should not access "private" attrs @@ -159,7 +153,7 @@ class TestSoledadDbSyncDeferredEncDecr(          sync_db = self._soledad._sync_db          sync_enc_pool = self._soledad._sync_enc_pool          target = soledad_sync_target( -            self, target_name, +            self, self.db2._dbname,              source_replica_uid=replica_uid,              sync_db=sync_db,              sync_enc_pool=sync_enc_pool) diff --git a/common/src/leap/soledad/common/tests/test_sync_mutex.py b/common/src/leap/soledad/common/tests/test_sync_mutex.py index aa46d5b7..2e2123a7 100644 --- a/common/src/leap/soledad/common/tests/test_sync_mutex.py +++ b/common/src/leap/soledad/common/tests/test_sync_mutex.py @@ -91,7 +91,7 @@ class TestSyncMutex(          TestCaseWithServer.setUp(self)          CouchDBTestCase.setUp(self)          self.tempdir = tempfile.mkdtemp(prefix="leap_tests-") -        self.couch_url = 'http://localhost:' + str(self.wrapper.port) +        self.user = ('user-%s' % uuid.uuid4().hex)      def tearDown(self):          CouchDBTestCase.tearDown(self) @@ -103,12 +103,12 @@ class TestSyncMutex(          # ensure remote db exists before syncing          db = couch.CouchDatabase.open_database( -            urljoin(self.couch_url, 'user-user-uuid'), +            urljoin(self.couch_url, 'user-' + self.user),              create=True,              ensure_ddocs=True)          sol = self._soledad_instance( -            user='user-uuid', server_url=self.getURL()) +            user=self.user, server_url=self.getURL())          d1 = sol.sync()          d2 = sol.sync() diff --git a/common/src/leap/soledad/common/tests/test_sync_target.py b/common/src/leap/soledad/common/tests/test_sync_target.py index 79c350cd..da4ff034 100644 --- a/common/src/leap/soledad/common/tests/test_sync_target.py +++ b/common/src/leap/soledad/common/tests/test_sync_target.py @@ -63,7 +63,6 @@ class TestSoledadParseReceivedDocResponse(SoledadWithCouchServerMixin):      def setUp(self):          SoledadWithCouchServerMixin.setUp(self) -        self.couch_url = 'http://localhost:' + str(self.wrapper.port)          creds = {'token': {              'uuid': 'user-uuid',              'token': 'auth-token', @@ -151,11 +150,11 @@ def make_local_db_and_soledad_target(          test, path='test',          source_replica_uid=uuid4().hex):      test.startTwistedServer() -    db = test.request_state._create_database(os.path.basename(path)) +    db = test.request_state._create_database(replica_uid=os.path.basename(path))      sync_db = test._soledad._sync_db      sync_enc_pool = test._soledad._sync_enc_pool      st = soledad_sync_target( -        test, path, +        test, db._dbname,          source_replica_uid=source_replica_uid,          sync_db=sync_db,          sync_enc_pool=sync_enc_pool) @@ -191,6 +190,8 @@ class TestSoledadSyncTarget(              self.startTwistedServer()          sync_db = self._soledad._sync_db          sync_enc_pool = self._soledad._sync_enc_pool +        if path is None: +            path = self.db2._dbname          target = self.sync_target(              self, path,              source_replica_uid=source_replica_uid, @@ -204,11 +205,11 @@ class TestSoledadSyncTarget(          SoledadWithCouchServerMixin.setUp(self)          self.startTwistedServer()          self.db1 = make_sqlcipher_database_for_test(self, 'test1') -        self.db2 = self.request_state._create_database('test2') +        self.db2 = self.request_state._create_database('test')      def tearDown(self):          # db2, _ = self.request_state.ensure_database('test2') -        self.db2.delete_database() +        self.delete_db(self.db2._dbname)          self.db1.close()          SoledadWithCouchServerMixin.tearDown(self)          TestWithScenarios.tearDown(self) @@ -220,8 +221,8 @@ class TestSoledadSyncTarget(          This test was adapted to decrypt remote content before assert.          """ -        db = self.request_state._create_database('test') -        remote_target = self.getSyncTarget('test') +        db = self.db2 +        remote_target = self.getSyncTarget()          other_docs = []          def receive_doc(doc, gen, trans_id): @@ -247,7 +248,7 @@ class TestSoledadSyncTarget(          def blackhole_getstderr(inst):              return cStringIO.StringIO() -        db = self.request_state._create_database('test') +        db = self.db2          _put_doc_if_newer = db._put_doc_if_newer          trigger_ids = ['doc-here2'] @@ -333,7 +334,7 @@ class TestSoledadSyncTarget(              last_known_trans_id=None, insert_doc_cb=receive_doc,              ensure_callback=ensure_cb, defer_decryption=False)          self.assertEqual(1, new_gen) -        db = self.request_state.open_database('test') +        db = self.db2          self.assertEqual(1, len(replica_uid_box))          self.assertEqual(db._replica_uid, replica_uid_box[0])          self.assertGetEncryptedDoc( @@ -358,17 +359,16 @@ class TestSoledadSyncTarget(      @defer.inlineCallbacks      def test_record_sync_info(self): -        db = self.request_state._create_database('test')          remote_target = self.getSyncTarget(              'test',              source_replica_uid='other-id')          yield remote_target.record_sync_info('other-id', 2, 'T-transid')          self.assertEqual( -            (2, 'T-transid'), db._get_replica_gen_and_trans_id('other-id')) +            (2, 'T-transid'), self.db2._get_replica_gen_and_trans_id('other-id'))      @defer.inlineCallbacks      def test_sync_exchange_receive(self): -        db = self.request_state._create_database('test') +        db = self.db2          doc = db.create_doc_from_json('{"value": "there"}')          remote_target = self.getSyncTarget('test')          other_changes = [] @@ -857,13 +857,7 @@ class TestSoledadDbSync(              defer_encryption=True, sync_db_key=sync_db_key)          self.db1 = SQLCipherDatabase(self.opts) -        self.db2 = couch.CouchDatabase.open_database( -            urljoin( -                'http://localhost:' + str(self.wrapper.port), -                'test' -            ), -            create=True, -            ensure_ddocs=True) +        self.db2 = self.request_state._create_database(replica_uid='test')      def tearDown(self):          """ @@ -890,7 +884,7 @@ class TestSoledadDbSync(                  'uuid': 'user-uuid',                  'token': 'auth-token',              }} -            target_url = self.getURL(target_name) +            target_url = self.getURL(self.db2._dbname)              # get a u1db syncer              crypto = self._soledad._crypto  | 
