diff options
| -rw-r--r-- | client/src/leap/soledad/client/http_target.py | 2 | ||||
| -rw-r--r-- | common/src/leap/soledad/common/tests/test_sync_target.py | 45 | 
2 files changed, 28 insertions, 19 deletions
diff --git a/client/src/leap/soledad/client/http_target.py b/client/src/leap/soledad/client/http_target.py index f7f50af6..f5d8ef1c 100644 --- a/client/src/leap/soledad/client/http_target.py +++ b/client/src/leap/soledad/client/http_target.py @@ -534,7 +534,7 @@ class SoledadHTTPSyncTarget(SyncTarget):              new_generation = metadata['new_generation']              new_transaction_id = metadata['new_transaction_id']              number_of_changes = metadata['number_of_changes'] -        except (json.JSONDecodeError, KeyError): +        except (ValueError, KeyError):              raise errors.BrokenSyncStream          # make sure we have replica_uid from fresh new dbs          if self._ensure_callback and 'replica_uid' in metadata: 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 be765152..070ead3e 100644 --- a/common/src/leap/soledad/common/tests/test_sync_target.py +++ b/common/src/leap/soledad/common/tests/test_sync_target.py @@ -65,6 +65,19 @@ class TestSoledadParsingSyncStream(      target.      """ +    def setUp(self): +        super(test_remote_sync_target.TestParsingSyncStream, self).setUp() +        creds = {'token': { +            'uuid': 'user-uuid', +            'token': 'auth-token', +        }} +        self.target = target.SoledadHTTPSyncTarget( +            "http://foo/foo", +            uuid4().hex, +            creds, +            self._soledad._crypto, +            None) +      def test_extra_comma(self):          """          Test adapted to use encrypted content. @@ -78,29 +91,25 @@ class TestSoledadParsingSyncStream(          enc_json = crypto.encrypt_docstr(              doc.get_json(), doc.doc_id, doc.rev,              key, secret) -        tgt = target.SoledadHTTPSyncTarget( -            "http://foo/foo", crypto=self._soledad._crypto) -        self.assertRaises(u1db.errors.BrokenSyncStream, -                          tgt._parse_sync_stream, "[\r\n{},\r\n]", None) -        self.assertRaises(u1db.errors.BrokenSyncStream, -                          tgt._parse_sync_stream, -                          '[\r\n{},\r\n{"id": "i", "rev": "r", ' -                          '"content": %s, "gen": 3, "trans_id": "T-sid"}' -                          ',\r\n]' % json.dumps(enc_json), -                          lambda doc, gen, trans_id: None) +        with self.assertRaises(u1db.errors.BrokenSyncStream): +            self.target._parse_received_doc_response("[\r\n{},\r\n]") -    def test_wrong_start(self): -        tgt = target.SoledadHTTPSyncTarget("http://foo/foo") +        with self.assertRaises(u1db.errors.BrokenSyncStream): +            self.target._parse_received_doc_response( +                ('[\r\n{},\r\n{"id": "i", "rev": "r", ' + +                 '"content": %s, "gen": 3, "trans_id": "T-sid"}' + +                 ',\r\n]') % json.dumps(enc_json)) -        self.assertRaises(u1db.errors.BrokenSyncStream, -                          tgt._parse_sync_stream, "{}\r\n]", None) +    def test_wrong_start(self): +        with self.assertRaises(u1db.errors.BrokenSyncStream): +            self.target._parse_received_doc_response("{}\r\n]") -        self.assertRaises(u1db.errors.BrokenSyncStream, -                          tgt._parse_sync_stream, "\r\n{}\r\n]", None) +        with self.assertRaises(u1db.errors.BrokenSyncStream): +            self.target._parse_received_doc_response("\r\n{}\r\n]") -        self.assertRaises(u1db.errors.BrokenSyncStream, -                          tgt._parse_sync_stream, "", None) +        with self.assertRaises(u1db.errors.BrokenSyncStream): +            self.target._parse_received_doc_response("")      def test_wrong_end(self):          tgt = target.SoledadHTTPSyncTarget("http://foo/foo")  | 
