summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrebs <drebs@leap.se>2013-04-30 15:37:37 -0300
committerdrebs <drebs@leap.se>2013-04-30 15:37:37 -0300
commit1b9009c0b67e6209abbb7047b1edea7961bd3256 (patch)
tree5059da0cdee2bb5ad7177cdc3b703bfdd02774df
parentb567343c7b4daa54a05ed31592078fc69966f421 (diff)
Update tests with monkey patching to always use our SyncTarget.
-rw-r--r--src/leap/soledad/auth.py5
-rw-r--r--src/leap/soledad/tests/test_couch.py22
-rw-r--r--src/leap/soledad/tests/test_leap_backend.py103
-rw-r--r--src/leap/soledad/tests/test_sqlcipher.py26
4 files changed, 83 insertions, 73 deletions
diff --git a/src/leap/soledad/auth.py b/src/leap/soledad/auth.py
index 44755d58..35f4700f 100644
--- a/src/leap/soledad/auth.py
+++ b/src/leap/soledad/auth.py
@@ -21,6 +21,9 @@ Methods for token-based authentication.
"""
+from u1db.remote.http_client import HTTPClientBase
+
+
def set_token_credentials(self, address, token):
self._creds = {'token': (address, token)}
@@ -30,3 +33,5 @@ def _sign_request(self, method, url_query, params):
address, token = self._creds['token']
auth = '%s:%s' % (address, token)
return [('Authorization', 'Token %s' % auth.encode('base64'))]
+ else:
+ return HTTPClientBase._sign_request(self, method, url_query, params)
diff --git a/src/leap/soledad/tests/test_couch.py b/src/leap/soledad/tests/test_couch.py
index 456bc080..b0352782 100644
--- a/src/leap/soledad/tests/test_couch.py
+++ b/src/leap/soledad/tests/test_couch.py
@@ -1,7 +1,23 @@
-"""Test ObjectStore backend bits.
+# -*- coding: utf-8 -*-
+# test_couch.py
+# Copyright (C) 2013 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/>.
-For these tests to run, a couch server has to be running on (default) port
-5984.
+
+"""
+Test ObjectStore and Couch backend bits.
"""
import re
diff --git a/src/leap/soledad/tests/test_leap_backend.py b/src/leap/soledad/tests/test_leap_backend.py
index 7509af0e..4c76bbb9 100644
--- a/src/leap/soledad/tests/test_leap_backend.py
+++ b/src/leap/soledad/tests/test_leap_backend.py
@@ -1,7 +1,23 @@
-"""Test ObjectStore backend bits.
+# -*- coding: utf-8 -*-
+# test_leap_backend.py
+# Copyright (C) 2013 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/>.
-For these tests to run, a leap server has to be running on (default) port
-5984.
+
+"""
+Test Leap backend bits.
"""
import u1db
@@ -12,9 +28,11 @@ except ImportError:
from leap.soledad.backends import leap_backend
+from leap.soledad.server import SoledadApp
+
+
from leap.soledad.tests import u1db_tests as tests
from leap.soledad.tests.u1db_tests.test_remote_sync_target import (
- make_http_app,
make_oauth_http_app,
)
from leap.soledad.tests import BaseSoledadTest
@@ -36,12 +54,16 @@ def make_leap_document_for_test(test, doc_id, rev, content,
doc_id, rev, content, has_conflicts=has_conflicts)
+def make_soledad_app(state):
+ return SoledadApp(state)
+
+
LEAP_SCENARIOS = [
('http', {
'make_database_for_test': test_backends.make_http_database_for_test,
'copy_database_for_test': test_backends.copy_http_database_for_test,
'make_document_for_test': make_leap_document_for_test,
- 'make_app_with_state': make_http_app}),
+ 'make_app_with_state': make_soledad_app}),
]
@@ -55,6 +77,9 @@ class LeapTests(test_backends.AllDatabaseTests, BaseSoledadTest):
#-----------------------------------------------------------------------------
class TestLeapClientBase(test_http_client.TestHTTPClientBase):
+ """
+ This class should be used to test Token auth.
+ """
pass
@@ -89,6 +114,9 @@ class TestLeapSyncTargetBasics(
self.assertEqual('/', remote_target._url.path)
+# Monkey patch test class so it uses our sync target.
+test_remote_sync_target.http_target.HTTPSyncTarget = leap_backend.LeapSyncTarget
+
class TestLeapParsingSyncStream(
test_remote_sync_target.TestParsingSyncStream,
BaseSoledadTest):
@@ -101,53 +129,6 @@ class TestLeapParsingSyncStream(
test_remote_sync_target.TestParsingSyncStream.tearDown(self)
BaseSoledadTest.tearDown(self)
- def test_wrong_start(self):
- """
- Test adapted to use a LeapSyncTarget.
- """
- tgt = leap_backend.LeapSyncTarget("http://foo/foo")
-
- self.assertRaises(u1db.errors.BrokenSyncStream,
- tgt._parse_sync_stream, "{}\r\n]", None)
-
- self.assertRaises(u1db.errors.BrokenSyncStream,
- tgt._parse_sync_stream, "\r\n{}\r\n]", None)
-
- self.assertRaises(u1db.errors.BrokenSyncStream,
- tgt._parse_sync_stream, "", None)
-
- def test_wrong_end(self):
- """
- Test adapted to use a LeapSyncTarget.
- """
- tgt = leap_backend.LeapSyncTarget("http://foo/foo")
-
- self.assertRaises(u1db.errors.BrokenSyncStream,
- tgt._parse_sync_stream, "[\r\n{}", None)
-
- self.assertRaises(u1db.errors.BrokenSyncStream,
- tgt._parse_sync_stream, "[\r\n", None)
-
- def test_missing_comma(self):
- """
- Test adapted to use a LeapSyncTarget.
- """
- tgt = leap_backend.LeapSyncTarget("http://foo/foo")
-
- self.assertRaises(u1db.errors.BrokenSyncStream,
- tgt._parse_sync_stream,
- '[\r\n{}\r\n{"id": "i", "rev": "r", '
- '"content": "c", "gen": 3}\r\n]', None)
-
- def test_no_entries(self):
- """
- Test adapted to use a LeapSyncTarget.
- """
- tgt = leap_backend.LeapSyncTarget("http://foo/foo")
-
- self.assertRaises(u1db.errors.BrokenSyncStream,
- tgt._parse_sync_stream, "[\r\n]", None)
-
def test_extra_comma(self):
"""
Test adapted to use encrypted content.
@@ -168,22 +149,6 @@ class TestLeapParsingSyncStream(
',\r\n]' % json.dumps(enc_json),
lambda doc, gen, trans_id: None)
- def test_error_in_stream(self):
- tgt = leap_backend.LeapSyncTarget("http://foo/foo")
-
- self.assertRaises(u1db.errors.Unavailable,
- tgt._parse_sync_stream,
- '[\r\n{"new_generation": 0},'
- '\r\n{"error": "unavailable"}\r\n', None)
-
- self.assertRaises(u1db.errors.Unavailable,
- tgt._parse_sync_stream,
- '[\r\n{"error": "unavailable"}\r\n', None)
-
- self.assertRaises(u1db.errors.BrokenSyncStream,
- tgt._parse_sync_stream,
- '[\r\n{"error": "?"}\r\n', None)
-
def leap_sync_target(test, path):
return leap_backend.LeapSyncTarget(test.getURL(path))
@@ -199,7 +164,7 @@ def oauth_leap_sync_target(test, path):
class TestRemoteSyncTargets(tests.TestCaseWithServer):
scenarios = [
- ('http', {'make_app_with_state': make_http_app,
+ ('http', {'make_app_with_state': make_soledad_app,
'make_document_for_test': make_leap_document_for_test,
'sync_target': leap_sync_target}),
('oauth_http', {'make_app_with_state': make_oauth_http_app,
diff --git a/src/leap/soledad/tests/test_sqlcipher.py b/src/leap/soledad/tests/test_sqlcipher.py
index 6b2889d6..b937b634 100644
--- a/src/leap/soledad/tests/test_sqlcipher.py
+++ b/src/leap/soledad/tests/test_sqlcipher.py
@@ -1,4 +1,25 @@
-"""Test sqlcipher backend internals."""
+# -*- coding: utf-8 -*-
+# test_sqlcipher.py
+# Copyright (C) 2013 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/>.
+
+
+"""
+Test sqlcipher backend internals.
+"""
+
import os
import time
@@ -11,6 +32,7 @@ import threading
from pysqlcipher import dbapi2
from StringIO import StringIO
+
# u1db stuff.
from u1db import (
errors,
@@ -20,6 +42,7 @@ from u1db import (
)
from u1db.backends.sqlite_backend import SQLitePartialExpandDatabase
+
# soledad stuff.
from leap.soledad.backends.sqlcipher import (
SQLCipherDatabase,
@@ -36,6 +59,7 @@ from leap.soledad.backends.leap_backend import (
MAC_KEY,
)
+
# u1db tests stuff.
from leap.soledad.tests import u1db_tests as tests, BaseSoledadTest
from leap.soledad.tests.u1db_tests import test_sqlite_backend