diff options
Diffstat (limited to 'common')
22 files changed, 174 insertions, 151 deletions
| diff --git a/common/src/leap/soledad/common/__init__.py b/common/src/leap/soledad/common/__init__.py index 1e52e3a7..1ba6ab89 100644 --- a/common/src/leap/soledad/common/__init__.py +++ b/common/src/leap/soledad/common/__init__.py @@ -15,6 +15,10 @@  # You should have received a copy of the GNU General Public License  # along with this program. If not, see <http://www.gnu.org/licenses/>. +from leap.common.check import leap_assert as soledad_assert +from leap.common.check import leap_assert_type as soledad_assert_type + +from ._version import get_versions  """  Soledad routines common to client and server. @@ -34,11 +38,6 @@ USER_DB_PREFIX = 'user-'  # Global functions  # -from leap.common.check import leap_assert as soledad_assert -from leap.common.check import leap_assert_type as soledad_assert_type - - -from ._version import get_versions  __version__ = get_versions()['version']  del get_versions diff --git a/common/src/leap/soledad/common/_version.py b/common/src/leap/soledad/common/_version.py index 7d4262b5..538b829d 100644 --- a/common/src/leap/soledad/common/_version.py +++ b/common/src/leap/soledad/common/_version.py @@ -1,5 +1,3 @@ - -IN_LONG_VERSION_PY = True  # This file helps to compute a version number in source trees obtained from  # git-archive tarball (such as those provided by githubs download-from-tag  # feature). Distribution tarballs (build by setup.py sdist) and build @@ -10,12 +8,15 @@ IN_LONG_VERSION_PY = True  # versioneer-0.7+ (https://github.com/warner/python-versioneer)  # these strings will be replaced by git during git-archive -git_refnames = "$Format:%d$" -git_full = "$Format:%H$" - -  import subprocess  import sys +import re +import os.path + +IN_LONG_VERSION_PY = True + +git_refnames = "$Format:%d$" +git_full = "$Format:%H$"  def run_command(args, cwd=None, verbose=False): @@ -37,9 +38,6 @@ def run_command(args, cwd=None, verbose=False):          return None      return stdout -import re -import os.path -  def get_expanded_variables(versionfile_source):      # the code embedded in _version.py can just fetch the value of these @@ -85,7 +83,7 @@ def versions_from_expanded_variables(variables, tag_prefix, verbose=False):          # "stabilization", as well as "HEAD" and "master".          tags = set([r for r in refs if re.search(r'\d', r)])          if verbose: -            print("discarding '%s', no digits" % ",".join(refs-tags)) +            print("discarding '%s', no digits" % ",".join(refs - tags))      if verbose:          print("likely tags: %s" % ",".join(sorted(tags)))      for ref in sorted(tags): diff --git a/common/src/leap/soledad/common/tests/test_async.py b/common/src/leap/soledad/common/tests/test_async.py index 03b8c553..5f273e08 100644 --- a/common/src/leap/soledad/common/tests/test_async.py +++ b/common/src/leap/soledad/common/tests/test_async.py @@ -91,7 +91,7 @@ class ASyncSQLCipherRetryTestCase(BaseSoledadTest):          def _errback(e):              if e.value[0].getErrorMessage() == "database is locked":                  adbapi.SQLCIPHER_CONNECTION_TIMEOUT = old_timeout -                adbapi.SQLCIPHER_MAX_RETRIES = old_max_retries  +                adbapi.SQLCIPHER_MAX_RETRIES = old_max_retries                  return defer.succeed("")              raise Exception @@ -131,7 +131,6 @@ class ASyncSQLCipherRetryTestCase(BaseSoledadTest):                  deferreds.append(d)              return defer.gatherResults(deferreds, consumeErrors=True) -          def _count_docs(results):              _, docs = results              if self.NUM_DOCS == len(docs): diff --git a/common/src/leap/soledad/common/tests/test_couch.py b/common/src/leap/soledad/common/tests/test_couch.py index d2aef9bb..48f0f51b 100644 --- a/common/src/leap/soledad/common/tests/test_couch.py +++ b/common/src/leap/soledad/common/tests/test_couch.py @@ -35,20 +35,23 @@ from leap.soledad.common.tests import u1db_tests as tests  from leap.soledad.common.tests.u1db_tests import test_backends  from leap.soledad.common.tests.u1db_tests import test_sync  from leap.soledad.common.tests.util import CouchDBTestCase +from u1db.backends.inmemory import InMemoryIndex -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_common_backend`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class TestCouchBackendImpl(CouchDBTestCase):      def test__allocate_doc_id(self):          db = couch.CouchDatabase.open_database(              urljoin( -                'http://localhost:' + str(self.wrapper.port), 'u1db_tests'), -                create=True, -                ensure_ddocs=True) +                'http://localhost:' + str(self.wrapper.port), +                'u1db_tests' +            ), +            create=True, +            ensure_ddocs=True)          doc_id1 = db._allocate_doc_id()          self.assertTrue(doc_id1.startswith('D-'))          self.assertEqual(34, len(doc_id1)) @@ -56,9 +59,9 @@ class TestCouchBackendImpl(CouchDBTestCase):          self.assertNotEqual(doc_id1, db._allocate_doc_id()) -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_backends`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  def make_couch_database_for_test(test, replica_uid):      port = str(test.wrapper.port) @@ -151,7 +154,9 @@ class CouchTests(  class CouchDatabaseTests( -        TestWithScenarios, test_backends.LocalDatabaseTests, CouchDBTestCase): +        TestWithScenarios, +        test_backends.LocalDatabaseTests, +        CouchDBTestCase):      scenarios = COUCH_SCENARIOS @@ -160,8 +165,10 @@ class CouchDatabaseTests(          test_backends.LocalDatabaseTests.tearDown(self) -class CouchValidateGenNTransIdTests(TestWithScenarios, -        test_backends.LocalDatabaseValidateGenNTransIdTests, CouchDBTestCase): +class CouchValidateGenNTransIdTests( +        TestWithScenarios, +        test_backends.LocalDatabaseValidateGenNTransIdTests, +        CouchDBTestCase):      scenarios = COUCH_SCENARIOS @@ -170,8 +177,10 @@ class CouchValidateGenNTransIdTests(TestWithScenarios,          test_backends.LocalDatabaseValidateGenNTransIdTests.tearDown(self) -class CouchValidateSourceGenTests(TestWithScenarios, -        test_backends.LocalDatabaseValidateSourceGenTests, CouchDBTestCase): +class CouchValidateSourceGenTests( +        TestWithScenarios, +        test_backends.LocalDatabaseValidateSourceGenTests, +        CouchDBTestCase):      scenarios = COUCH_SCENARIOS @@ -180,31 +189,33 @@ class CouchValidateSourceGenTests(TestWithScenarios,          test_backends.LocalDatabaseValidateSourceGenTests.tearDown(self) -class CouchWithConflictsTests(TestWithScenarios, -        test_backends.LocalDatabaseWithConflictsTests, CouchDBTestCase): +class CouchWithConflictsTests( +        TestWithScenarios, +        test_backends.LocalDatabaseWithConflictsTests, +        CouchDBTestCase): -    scenarios = COUCH_SCENARIOS +        scenarios = COUCH_SCENARIOS -    def tearDown(self): -        self.db.delete_database() -        test_backends.LocalDatabaseWithConflictsTests.tearDown(self) +        def tearDown(self): +            self.db.delete_database() +            test_backends.LocalDatabaseWithConflictsTests.tearDown(self)  # Notice: the CouchDB backend does not have indexing capabilities, so we do  # not test indexing now. -#class CouchIndexTests(test_backends.DatabaseIndexTests, CouchDBTestCase): +# class CouchIndexTests(test_backends.DatabaseIndexTests, CouchDBTestCase):  # -#    scenarios = COUCH_SCENARIOS +#     scenarios = COUCH_SCENARIOS  # -#    def tearDown(self): -#        self.db.delete_database() -#        test_backends.DatabaseIndexTests.tearDown(self) +#     def tearDown(self): +#         self.db.delete_database() +#         test_backends.DatabaseIndexTests.tearDown(self) -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_sync`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  target_scenarios = [      ('local', {'create_db_and_target': test_sync._make_local_db_and_target}), ] @@ -243,8 +254,6 @@ class CouchDatabaseSyncTargetTests(  # The following tests need that the database have an index, so we fake one. -from u1db.backends.inmemory import InMemoryIndex -  class IndexedCouchDatabase(couch.CouchDatabase): @@ -350,13 +359,18 @@ class CouchDatabaseSyncTests(          test_sync.DatabaseSyncTests.setUp(self)      def tearDown(self): -        for db in [self.db, self.db1, self.db2, self.db3, self.db1_copy, -                self.db2_copy]: +        for db in [ +            self.db, self.db1, self.db2, +            self.db3, self.db1_copy, self.db2_copy +        ]:              if db is not None:                  db.delete_database()                  db.close() -        for replica_uid, dbname in [('test1_copy', 'source'), -                ('test2_copy', 'target'), ('test3', 'target')]: +        for replica_uid, dbname in [ +            ('test1_copy', 'source'), +            ('test2_copy', 'target'), +            ('test3', 'target') +        ]:              db = self.create_database(replica_uid, dbname)              db.delete_database()              # cleanup connections to avoid leaking of file descriptors 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 3de4da1c..32f676ad 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 @@ -114,7 +114,7 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):          docs = [doc.doc_id]          for i in range(0, REPEAT_TIMES):              self.assertEqual( -                i+1, len(self.db._get_transaction_log())) +                i + 1, len(self.db._get_transaction_log()))              doc.content['ops'] += 1              self.db.put_doc(doc)              docs.append(doc.doc_id) @@ -122,13 +122,13 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):          # assert length of transaction_log          transaction_log = self.db._get_transaction_log()          self.assertEqual( -            REPEAT_TIMES+1, len(transaction_log)) +            REPEAT_TIMES + 1, len(transaction_log))          # assert that all entries in the log belong to the same doc -        self.assertEqual(REPEAT_TIMES+1, len(docs)) +        self.assertEqual(REPEAT_TIMES + 1, len(docs))          for doc_id in docs:              self.assertEqual( -                REPEAT_TIMES+1, +                REPEAT_TIMES + 1,                  len(filter(lambda t: t[0] == doc_id, transaction_log)))      def test_correct_transaction_log_after_sequential_deletes(self): @@ -140,16 +140,16 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):          for i in range(0, REPEAT_TIMES):              doc = self.db.create_doc({'ops': 0})              self.assertEqual( -                2*i+1, len(self.db._get_transaction_log())) +                2 * i + 1, len(self.db._get_transaction_log()))              docs.append(doc.doc_id)              self.db.delete_doc(doc)              self.assertEqual( -                2*i+2, len(self.db._get_transaction_log())) +                2 * i + 2, len(self.db._get_transaction_log()))          # assert length of transaction_log          transaction_log = self.db._get_transaction_log()          self.assertEqual( -            2*REPEAT_TIMES, len(transaction_log)) +            2 * REPEAT_TIMES, len(transaction_log))          # assert that each doc appears twice in the transaction_log          self.assertEqual(REPEAT_TIMES, len(docs)) @@ -176,7 +176,7 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):          def _assert_transaction_and_sync_logs(results, sync_idx):              # assert sizes of transaction and sync logs              self.assertEqual( -                sync_idx*REPEAT_TIMES, +                sync_idx * REPEAT_TIMES,                  len(self.db._get_transaction_log()))              self.assertEqual(                  1 if sync_idx > 0 else 0, @@ -184,10 +184,10 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):          def _assert_sync(results, sync_idx):              gen, docs = results -            self.assertEqual((sync_idx+1)*REPEAT_TIMES, gen) -            self.assertEqual((sync_idx+1)*REPEAT_TIMES, len(docs)) +            self.assertEqual((sync_idx + 1) * REPEAT_TIMES, gen) +            self.assertEqual((sync_idx + 1) * REPEAT_TIMES, len(docs))              # assert sizes of transaction and sync logs -            self.assertEqual((sync_idx+1)*REPEAT_TIMES, +            self.assertEqual((sync_idx + 1) * REPEAT_TIMES,                               len(self.db._get_transaction_log()))              sync_log_rows = self.db._database.view('syncs/log').rows              sync_log = sync_log_rows[0].value @@ -203,7 +203,7 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):              sol_gen, sol_trans_id = conn._get_generation_info()              self.assertEqual(sol_gen, known_gen)              self.assertEqual(sol_trans_id, known_trans_id) -             +          # create some documents          d = _create_docs(None) @@ -253,7 +253,6 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):              self._params['docs'].append(doc.doc_id)              pool.release() -          for i in range(0, REPEAT_TIMES):              thread = self._WorkerThread(                  {'docs': docs, 'db': self.db}, @@ -306,7 +305,7 @@ class CouchAtomicityTestCase(CouchDBTestCase, TestCaseWithServer):          # assert transaction log          transaction_log = self.db._get_transaction_log()          self.assertEqual( -            2*REPEAT_TIMES, len(transaction_log)) +            2 * REPEAT_TIMES, len(transaction_log))          # assert that each doc appears twice in the transaction_log          self.assertEqual(REPEAT_TIMES, len(docs))          for doc_id in docs: diff --git a/common/src/leap/soledad/common/tests/test_http.py b/common/src/leap/soledad/common/tests/test_http.py index 1f661b77..bedd1868 100644 --- a/common/src/leap/soledad/common/tests/test_http.py +++ b/common/src/leap/soledad/common/tests/test_http.py @@ -23,9 +23,9 @@ from leap.soledad.client import auth  from leap.soledad.common.tests.u1db_tests import test_http_database -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_http_database`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class _HTTPDatabase(http_database.HTTPDatabase, auth.TokenBasedAuth):      """ diff --git a/common/src/leap/soledad/common/tests/test_http_client.py b/common/src/leap/soledad/common/tests/test_http_client.py index db731c32..fcf5f75e 100644 --- a/common/src/leap/soledad/common/tests/test_http_client.py +++ b/common/src/leap/soledad/common/tests/test_http_client.py @@ -28,9 +28,9 @@ from leap.soledad.common.tests.u1db_tests import test_http_client  from leap.soledad.server.auth import SoledadTokenAuthMiddleware -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_http_client`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class TestSoledadClientBase(          TestWithScenarios, diff --git a/common/src/leap/soledad/common/tests/test_https.py b/common/src/leap/soledad/common/tests/test_https.py index 6907e3ed..93619515 100644 --- a/common/src/leap/soledad/common/tests/test_https.py +++ b/common/src/leap/soledad/common/tests/test_https.py @@ -46,13 +46,13 @@ LEAP_SCENARIOS = [  ] -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_https`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  def token_leap_https_sync_target(test, host, path, cert_file=None):      _, port = test.server.server_address -    #source_replica_uid = test._soledad._dbpool.replica_uid +    # source_replica_uid = test._soledad._dbpool.replica_uid      creds = {'token': {'uuid': 'user-uuid', 'token': 'auth-token'}}      if not cert_file:          cert_file = test.cacert_pem @@ -121,10 +121,11 @@ class TestSoledadHTTPSyncTargetHttpsSupport(          remote_target = self.getSyncTarget('localhost', 'test')          d = remote_target.record_sync_info('other-id', 2, 'T-id')          d.addCallback(lambda _: -            self.assertEqual( -                (2, 'T-id'), db._get_replica_gen_and_trans_id('other-id'))) -        d.addCallback(lambda _: -            remote_target.close()) +                      self.assertEqual( +                          (2, 'T-id'), +                          db._get_replica_gen_and_trans_id('other-id') +                      )) +        d.addCallback(lambda _: remote_target.close())          return d      def test_host_mismatch(self): diff --git a/common/src/leap/soledad/common/tests/test_server.py b/common/src/leap/soledad/common/tests/test_server.py index a8012e08..47cbf4d1 100644 --- a/common/src/leap/soledad/common/tests/test_server.py +++ b/common/src/leap/soledad/common/tests/test_server.py @@ -374,7 +374,7 @@ class EncryptedSyncTestCase(          def _db1CreateDocs(results):              deferreds = []              for i in xrange(number_of_docs): -                content = binascii.hexlify(os.urandom(doc_size/2)) +                content = binascii.hexlify(os.urandom(doc_size / 2))                  deferreds.append(sol1.create_doc({'data': content}))              return defer.DeferredList(deferreds) @@ -456,7 +456,7 @@ class EncryptedSyncTestCase(          """          Test if Soledad can sync very large files.          """ -        length = 100*(10**6)  # 100 MB +        length = 100 * (10**6)  # 100 MB          return self._test_encrypted_sym_sync(doc_size=length, number_of_docs=1)      def test_sync_many_small_files(self): diff --git a/common/src/leap/soledad/common/tests/test_soledad_app.py b/common/src/leap/soledad/common/tests/test_soledad_app.py index 6efae1d6..07ad00a0 100644 --- a/common/src/leap/soledad/common/tests/test_soledad_app.py +++ b/common/src/leap/soledad/common/tests/test_soledad_app.py @@ -32,9 +32,9 @@ from leap.soledad.common.tests.util import copy_token_http_database_for_test  from leap.soledad.common.tests.u1db_tests import test_backends -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_backends`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  LEAP_SCENARIOS = [      ('http', { diff --git a/common/src/leap/soledad/common/tests/test_soledad_doc.py b/common/src/leap/soledad/common/tests/test_soledad_doc.py index 4a67f80a..df9fd09e 100644 --- a/common/src/leap/soledad/common/tests/test_soledad_doc.py +++ b/common/src/leap/soledad/common/tests/test_soledad_doc.py @@ -24,9 +24,9 @@ from leap.soledad.common.tests.util import BaseSoledadTest  from leap.soledad.common.tests.util import make_soledad_document_for_test -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_document`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class TestSoledadDocument(          TestWithScenarios, diff --git a/common/src/leap/soledad/common/tests/test_sqlcipher.py b/common/src/leap/soledad/common/tests/test_sqlcipher.py index ceb095b8..e1b92fb4 100644 --- a/common/src/leap/soledad/common/tests/test_sqlcipher.py +++ b/common/src/leap/soledad/common/tests/test_sqlcipher.py @@ -62,9 +62,9 @@ def sqlcipher_open(path, passphrase, create=True, document_factory=None):          SQLCipherOptions(path, passphrase, create=create)) -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_common_backend`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class TestSQLCipherBackendImpl(tests.TestCase): @@ -78,9 +78,9 @@ class TestSQLCipherBackendImpl(tests.TestCase):          db.close() -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_backends`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  def make_document_for_test(test, doc_id, rev, content, has_conflicts=False):      return SoledadDocument(doc_id, rev, content, has_conflicts=has_conflicts) @@ -102,19 +102,19 @@ class SQLCipherDatabaseTests(TestWithScenarios, test_backends.LocalDatabaseTests  class SQLCipherValidateGenNTransIdTests( -        TestWithScenarios,  +        TestWithScenarios,          test_backends.LocalDatabaseValidateGenNTransIdTests):      scenarios = SQLCIPHER_SCENARIOS  class SQLCipherValidateSourceGenTests( -        TestWithScenarios,  +        TestWithScenarios,          test_backends.LocalDatabaseValidateSourceGenTests):      scenarios = SQLCIPHER_SCENARIOS  class SQLCipherWithConflictsTests( -        TestWithScenarios,  +        TestWithScenarios,          test_backends.LocalDatabaseWithConflictsTests):      scenarios = SQLCIPHER_SCENARIOS @@ -124,9 +124,9 @@ class SQLCipherIndexTests(      scenarios = SQLCIPHER_SCENARIOS -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_sqlite_backend`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class TestSQLCipherDatabase(TestWithScenarios, test_sqlite_backend.TestSQLiteDatabase): @@ -280,7 +280,7 @@ class TestSQLCipherPartialExpandDatabase(          pass      def test_open_database_with_factory(self): -        # SQLCipherDatabase's constructor has no factory parameter.  +        # SQLCipherDatabase's constructor has no factory parameter.          pass      def test_open_database_create(self): @@ -322,9 +322,9 @@ class TestSQLCipherPartialExpandDatabase(          self.assertEqual(True, self.db.get_doc(doc.doc_id).syncable) -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_open`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class SQLCipherOpen(test_open.TestU1DBOpen): @@ -344,7 +344,7 @@ class SQLCipherOpen(test_open.TestU1DBOpen):      def test_open_with_factory(self):          db = sqlcipher_open(self.db_path, PASSWORD, create=True, -                       document_factory=TestAlternativeDocument) +                            document_factory=TestAlternativeDocument)          self.addCleanup(db.close)          doc = db.create_doc({})          self.assertTrue(isinstance(doc, SoledadDocument)) @@ -367,9 +367,9 @@ class SQLCipherOpen(test_open.TestU1DBOpen):          self.assertIsInstance(db2, SQLCipherDatabase) -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # Tests for actual encryption of the database -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class SQLCipherEncryptionTest(BaseSoledadTest):      """ 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 83c3449e..869ecf9a 100644 --- a/common/src/leap/soledad/common/tests/test_sqlcipher_sync.py +++ b/common/src/leap/soledad/common/tests/test_sqlcipher_sync.py @@ -45,12 +45,12 @@ from leap.soledad.common.tests.util import (  ) -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_sync`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  def sync_via_synchronizer_and_soledad(test, db_source, db_target, -                                   trace_hook=None, trace_hook_shallow=None): +                                      trace_hook=None, trace_hook_shallow=None):      if trace_hook:          test.skipTest("full trace hook unsupported over http")      path = test._http_at[db_target] @@ -82,8 +82,8 @@ class SQLCipherDatabaseSyncTests(      scenarios = sync_scenarios -    #def setUp(self): -    #    test_sync.DatabaseSyncTests.setUp(self) +    # def setUp(self): +    #     test_sync.DatabaseSyncTests.setUp(self)      def tearDown(self):          test_sync.DatabaseSyncTests.tearDown(self) @@ -123,7 +123,7 @@ class SQLCipherDatabaseSyncTests(          self.assertFalse(doc.has_conflicts)          # if remote content is in conflicted state, then document revisions          # will be different. -        #self.assertEqual(doc.rev, self.db2.get_doc('doc').rev) +        # self.assertEqual(doc.rev, self.db2.get_doc('doc').rev)          v = vectorclock.VectorClockRev(doc.rev)          self.assertTrue(v.is_newer(vectorclock.VectorClockRev(rev1)))          self.assertTrue(v.is_newer(vectorclock.VectorClockRev(rev2))) @@ -245,7 +245,7 @@ class SQLCipherDatabaseSyncTests(          # update on 1          doc1.set_json('{"a": 3}')          self.db1.put_doc(doc1) -       # conflicts +        # conflicts          self.sync(self.db2, self.db1)          self.sync(db3, self.db1)          self.assertTrue(self.db2.get_doc('the-doc').has_conflicts) @@ -307,7 +307,7 @@ def _make_local_db_and_token_http_target(test, path='test'):  target_scenarios = [      ('leap', {          'create_db_and_target': _make_local_db_and_token_http_target, -#        'make_app_with_state': tests.test_remote_sync_target.make_http_app, +        # 'make_app_with_state': tests.test_remote_sync_target.make_http_app,          'make_app_with_state': make_soledad_app,          'do_sync': sync_via_synchronizer_and_soledad}),  ] diff --git a/common/src/leap/soledad/common/tests/test_sync.py b/common/src/leap/soledad/common/tests/test_sync.py index 92c601dc..9449f269 100644 --- a/common/src/leap/soledad/common/tests/test_sync.py +++ b/common/src/leap/soledad/common/tests/test_sync.py @@ -80,7 +80,7 @@ class InterruptableSyncTestCase(              """              A thread meant to interrupt the sync process.              """ -             +              def __init__(self, soledad, couchdb):                  self._soledad = soledad                  self._couchdb = couchdb @@ -88,7 +88,7 @@ class InterruptableSyncTestCase(              def run(self):                  while db._get_generation() < 2: -                    #print "WAITING %d" % db._get_generation() +                    # print "WAITING %d" % db._get_generation()                      time.sleep(0.1)                  self._soledad.stop_sync()                  time.sleep(1) @@ -171,16 +171,18 @@ class TestSoledadDbSync(          """          Need to explicitely invoke inicialization on all bases.          """ -        #tests.TestCaseWithServer.setUp(self) -        #self.main_test_class = test_sync.TestDbSync +        # tests.TestCaseWithServer.setUp(self) +        # self.main_test_class = test_sync.TestDbSync          SoledadWithCouchServerMixin.setUp(self)          self.startServer()          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) +                'http://localhost:' + str(self.wrapper.port), +                'test' +            ), +            create=True, +            ensure_ddocs=True)      def tearDown(self):          """ @@ -188,7 +190,7 @@ class TestSoledadDbSync(          """          self.db2.delete_database()          SoledadWithCouchServerMixin.tearDown(self) -        #tests.TestCaseWithServer.tearDown(self) +        # tests.TestCaseWithServer.tearDown(self)      def do_sync(self, target_name):          """ 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 010f5492..33c54641 100644 --- a/common/src/leap/soledad/common/tests/test_sync_deferred.py +++ b/common/src/leap/soledad/common/tests/test_sync_deferred.py @@ -85,9 +85,11 @@ class BaseSoledadDeferredEncTest(SoledadWithCouchServerMixin):          self.db2 = couch.CouchDatabase.open_database(              urljoin( -                'http://localhost:' + str(self.wrapper.port), 'test'), -                create=True, -                ensure_ddocs=True) +                'http://localhost:' + str(self.wrapper.port), +                'test' +            ), +            create=True, +            ensure_ddocs=True)      def tearDown(self):          self.db1.close() @@ -154,7 +156,7 @@ class TestSoledadDbSyncDeferredEncDecr(          and Token auth.          """          if self.token: -            creds={'token': { +            creds = {'token': {                  'uuid': 'user-uuid',                  'token': 'auth-token',              }} @@ -163,11 +165,17 @@ class TestSoledadDbSyncDeferredEncDecr(              # get a u1db syncer              crypto = self._soledad._crypto              replica_uid = self.db1._replica_uid -            dbsyncer = SQLCipherU1DBSync(self.opts, crypto, replica_uid, +            dbsyncer = SQLCipherU1DBSync( +                self.opts, +                crypto, +                replica_uid,                  defer_encryption=True)              self.dbsyncer = dbsyncer -            return dbsyncer.sync(target_url, creds=creds, -                autocreate=True,defer_decryption=DEFER_DECRYPTION) +            return dbsyncer.sync( +                target_url, +                creds=creds, +                autocreate=True, +                defer_decryption=DEFER_DECRYPTION)          else:              return test_sync.TestDbSync.do_sync(self, target_name) 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 941dc37c..65c7a2f2 100644 --- a/common/src/leap/soledad/common/tests/test_sync_target.py +++ b/common/src/leap/soledad/common/tests/test_sync_target.py @@ -51,9 +51,9 @@ from leap.soledad.common.tests.u1db_tests import test_remote_sync_target  from leap.soledad.common.tests.u1db_tests import test_sync -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_remote_sync_target`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  class TestSoledadSyncTargetBasics(          test_remote_sync_target.TestHTTPSyncTargetBasics): @@ -195,7 +195,7 @@ class TestSoledadSyncTarget(          self.db2 = self.request_state._create_database('test2')      def tearDown(self): -        #db2, _ = self.request_state.ensure_database('test2') +        # db2, _ = self.request_state.ensure_database('test2')          self.db2.delete_database()          self.db1.close()          SoledadWithCouchServerMixin.tearDown(self) @@ -326,9 +326,9 @@ class TestSoledadSyncTarget(          pass -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # The following tests come from `u1db.tests.test_sync`. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  target_scenarios = [      ('token_leap', {'create_db_and_target': @@ -468,7 +468,6 @@ class TestSoledadDbSync(      oauth = False      token = False -      def make_app(self):          self.request_state = couch.CouchServerState(self._couch_url)          return self.make_app_with_state(self.request_state) @@ -510,9 +509,11 @@ class TestSoledadDbSync(          self.db2 = couch.CouchDatabase.open_database(              urljoin( -                'http://localhost:' + str(self.wrapper.port), 'test'), -                create=True, -                ensure_ddocs=True) +                'http://localhost:' + str(self.wrapper.port), +                'test' +            ), +            create=True, +            ensure_ddocs=True)      def tearDown(self):          """ @@ -535,7 +536,7 @@ class TestSoledadDbSync(          and Token auth.          """          if self.token: -            creds={'token': { +            creds = {'token': {                  'uuid': 'user-uuid',                  'token': 'auth-token',              }} @@ -545,10 +546,12 @@ class TestSoledadDbSync(              crypto = self._soledad._crypto              replica_uid = self.db1._replica_uid              dbsyncer = SQLCipherU1DBSync(self.opts, crypto, replica_uid, -                defer_encryption=True) +                                         defer_encryption=True)              self.dbsyncer = dbsyncer -            return dbsyncer.sync(target_url, creds=creds, -                autocreate=True,defer_decryption=DEFER_DECRYPTION) +            return dbsyncer.sync(target_url, +                                 creds=creds, +                                 autocreate=True, +                                 defer_decryption=DEFER_DECRYPTION)          else:              return test_sync.TestDbSync.do_sync(self, target_name) diff --git a/common/src/leap/soledad/common/tests/u1db_tests/__init__.py b/common/src/leap/soledad/common/tests/u1db_tests/__init__.py index 6efeb87f..787494d3 100644 --- a/common/src/leap/soledad/common/tests/u1db_tests/__init__.py +++ b/common/src/leap/soledad/common/tests/u1db_tests/__init__.py @@ -156,7 +156,7 @@ def copy_sqlite_partial_expanded_for_test(test, db):      new_db = sqlite_backend.SQLitePartialExpandDatabase(':memory:')      tmpfile = StringIO()      for line in db._db_handle.iterdump(): -        if not 'sqlite_sequence' in line:  # work around bug in iterdump +        if 'sqlite_sequence' not in line:  # work around bug in iterdump              tmpfile.write('%s\n' % line)      tmpfile.seek(0)      new_db._db_handle = dbapi2.connect(':memory:') @@ -185,8 +185,9 @@ LOCAL_DATABASES_SCENARIOS = [  class DatabaseBaseTests(TestCase): -    accept_fixed_trans_id = False  # set to True assertTransactionLog -                                   # is happy with all trans ids = '' +    # set to True assertTransactionLog +    # is happy with all trans ids = '' +    accept_fixed_trans_id = False      scenarios = LOCAL_DATABASES_SCENARIOS diff --git a/common/src/leap/soledad/common/tests/u1db_tests/test_backends.py b/common/src/leap/soledad/common/tests/u1db_tests/test_backends.py index 27fc50dc..f26a4474 100644 --- a/common/src/leap/soledad/common/tests/u1db_tests/test_backends.py +++ b/common/src/leap/soledad/common/tests/u1db_tests/test_backends.py @@ -28,9 +28,6 @@ from u1db import (  from leap.soledad.common.tests import u1db_tests as tests -simple_doc = tests.simple_doc -nested_doc = tests.nested_doc -  from leap.soledad.common.tests.u1db_tests.test_remote_sync_target import (      make_http_app,      make_oauth_http_app, @@ -42,6 +39,9 @@ from u1db.remote import (  from unittest import skip +simple_doc = tests.simple_doc +nested_doc = tests.nested_doc +  def make_http_database_for_test(test, replica_uid, path='test', *args):      test.startServer() diff --git a/common/src/leap/soledad/common/tests/u1db_tests/test_document.py b/common/src/leap/soledad/common/tests/u1db_tests/test_document.py index d8a27f51..23502b4b 100644 --- a/common/src/leap/soledad/common/tests/u1db_tests/test_document.py +++ b/common/src/leap/soledad/common/tests/u1db_tests/test_document.py @@ -26,7 +26,7 @@ class TestDocument(tests.TestCase):      scenarios = ([(          'py', {'make_document_for_test': tests.make_document_for_test})])  # + -        #tests.C_DATABASE_SCENARIOS) +    # tests.C_DATABASE_SCENARIOS)      def test_create_doc(self):          doc = self.make_document('doc-id', 'uid:1', tests.simple_doc) diff --git a/common/src/leap/soledad/common/tests/u1db_tests/test_http_app.py b/common/src/leap/soledad/common/tests/u1db_tests/test_http_app.py index 522eb476..c545aa55 100644 --- a/common/src/leap/soledad/common/tests/u1db_tests/test_http_app.py +++ b/common/src/leap/soledad/common/tests/u1db_tests/test_http_app.py @@ -24,7 +24,7 @@ except ImportError:      import json  # noqa  import StringIO -from unittest import skip  +from unittest import skip  from u1db import (      __version__ as _u1db_version, diff --git a/common/src/leap/soledad/common/tests/u1db_tests/test_sync.py b/common/src/leap/soledad/common/tests/u1db_tests/test_sync.py index bac1f177..a7b05c9a 100644 --- a/common/src/leap/soledad/common/tests/u1db_tests/test_sync.py +++ b/common/src/leap/soledad/common/tests/u1db_tests/test_sync.py @@ -82,7 +82,7 @@ class DatabaseSyncTargetTests(tests.DatabaseBaseTests,      scenarios = (tests.multiply_scenarios(tests.DatabaseBaseTests.scenarios,                                            target_scenarios)) -                 #+ c_db_scenarios) +    # + c_db_scenarios)      # whitebox true means self.db is the actual local db object      # against which the sync is performed      whitebox = True @@ -373,8 +373,7 @@ class DatabaseSyncTargetTests(tests.DatabaseBaseTests,                           called)      def test__set_trace_hook_shallow(self): -        if (self.st._set_trace_hook_shallow == self.st._set_trace_hook -            or +        if (self.st._set_trace_hook_shallow == self.st._set_trace_hook or              self.st._set_trace_hook_shallow.im_func ==                  SyncTarget._set_trace_hook_shallow.im_func):              # shallow same as full @@ -493,8 +492,8 @@ class DatabaseSyncTests(tests.DatabaseBaseTests,          # NINJA TO YOUR HOUSE.          db_copy = super(DatabaseSyncTests, self).copy_database(db)          name, orig_sync_role = self._use_tracking[db] -        self._use_tracking[db_copy] = (name + '(copy)', sync_role -                                       or orig_sync_role) +        self._use_tracking[db_copy] = (name + '(copy)', sync_role or +                                       orig_sync_role)          return db_copy      def sync(self, db_from, db_to, trace_hook=None, diff --git a/common/src/leap/soledad/common/tests/util.py b/common/src/leap/soledad/common/tests/util.py index 60bab81c..d8d86850 100644 --- a/common/src/leap/soledad/common/tests/util.py +++ b/common/src/leap/soledad/common/tests/util.py @@ -83,7 +83,7 @@ def copy_sqlcipher_database_for_test(test, db):      new_db = make_sqlcipher_database_for_test(test, None)      tmpfile = StringIO()      for line in db._db_handle.iterdump(): -        if not 'sqlite_sequence' in line:  # work around bug in iterdump +        if 'sqlite_sequence' not in line:  # work around bug in iterdump              tmpfile.write('%s\n' % line)      tmpfile.seek(0)      new_db._db_handle = dbapi2.connect(':memory:') @@ -117,7 +117,7 @@ def make_token_soledad_app(state):  def make_soledad_document_for_test(test, doc_id, rev, content, -                                has_conflicts=False): +                                   has_conflicts=False):      return SoledadDocument(          doc_id, rev, content, has_conflicts=has_conflicts) @@ -155,7 +155,7 @@ def copy_token_http_database_for_test(test, db):  class MockedSharedDBTest(object):      def get_default_shared_mock(self, put_doc_side_effect=None, -            get_doc_return_value=None): +                                get_doc_return_value=None):          """          Get a default class for mocking the shared DB          """ @@ -235,7 +235,7 @@ class BaseSoledadTest(unittest.TestCase, MockedSharedDBTest):          def _delete_temporary_dirs():              # XXX should not access "private" attrs              for f in [self._soledad.local_db_path, -                    self._soledad.secrets.secrets_path]: +                      self._soledad.secrets.secrets_path]:                  if os.path.isfile(f):                      os.unlink(f)              # The following snippet comes from BaseLeapTest.setUpClass, but we @@ -251,7 +251,6 @@ class BaseSoledadTest(unittest.TestCase, MockedSharedDBTest):          reactor.addSystemEventTrigger(              "after", "shutdown", _delete_temporary_dirs) -      def _soledad_instance(self, user=ADDRESS, passphrase=u'123',                            prefix='',                            secrets_path='secrets.json', @@ -306,9 +305,9 @@ class BaseSoledadTest(unittest.TestCase, MockedSharedDBTest):          self.assertEqual(exp_doc.content, doc.content) -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # A wrapper for running couchdb locally. -#----------------------------------------------------------------------------- +# -----------------------------------------------------------------------------  # from: https://github.com/smcq/paisley/blob/master/paisley/test/util.py  # TODO: include license of above project. @@ -427,7 +426,7 @@ class CouchDBTestCase(unittest.TestCase, MockedSharedDBTest):          """          self.wrapper = CouchDBWrapper()          self.wrapper.start() -        #self.db = self.wrapper.db +        # self.db = self.wrapper.db      def tearDown(self):          """ @@ -435,6 +434,7 @@ class CouchDBTestCase(unittest.TestCase, MockedSharedDBTest):          """          self.wrapper.stop() +  class CouchServerStateForTests(CouchServerState):      """      This is a slightly modified CouchDB server state that allows for creating | 
