def test_format_sync_url_escapes(self): # The base_url should not get munged (we assume it is already a # properly formed URL), but the replica-uid should get properly escaped target = c_backend_wrapper.create_http_sync_target( "http://host/base%2Ctest/") self.assertEqual("http://host/base%2Ctest/sync-from/replica%2Cuid", c_backend_wrapper._format_sync_url(target, "replica,uid"))
def test_format_sync_url_escapes(self): # The base_url should not get munged (we assume it is already a # properly formed URL), but the replica-uid should get properly escaped target = c_backend_wrapper.create_http_sync_target( "http://host/base%2Ctest/") self.assertEqual( "http://host/base%2Ctest/sync-from/replica%2Cuid", c_backend_wrapper._format_sync_url(target, "replica,uid"))
def test_trivial_sync(self): mem_db = self.request_state._create_database('test.db') mem_doc = mem_db.create_doc_from_json(tests.nested_doc) url = self.getURL('test.db') target = c_backend_wrapper.create_http_sync_target(url) db = c_backend_wrapper.CDatabase(':memory:') doc = db.create_doc_from_json(tests.simple_doc) c_backend_wrapper.sync_db_to_target(db, target) self.assertGetDoc(mem_db, doc.doc_id, doc.rev, doc.get_json(), False) self.assertGetDoc(db, mem_doc.doc_id, mem_doc.rev, mem_doc.get_json(), False)
def test_trivial_sync(self): mem_db = self.request_state._create_database('test.db') mem_doc = mem_db.create_doc_from_json(tests.nested_doc) url = self.getURL('test.db') target = c_backend_wrapper.create_http_sync_target(url) db = c_backend_wrapper.CDatabase(':memory:') doc = db.create_doc_from_json(tests.simple_doc) c_backend_wrapper.sync_db_to_target(db, target) self.assertGetDoc(mem_db, doc.doc_id, doc.rev, doc.get_json(), False) self.assertGetDoc(db, mem_doc.doc_id, mem_doc.rev, mem_doc.get_json(), False)
def test_unavailable(self): mem_db = self.request_state._create_database('test.db') mem_db.create_doc_from_json(tests.nested_doc) tries = [] def wrapper(instance, *args, **kwargs): tries.append(None) raise errors.Unavailable mem_db.whats_changed = wrapper url = self.getURL('test.db') target = c_backend_wrapper.create_http_sync_target(url) db = c_backend_wrapper.CDatabase(':memory:') db.create_doc_from_json(tests.simple_doc) self.assertRaises(errors.Unavailable, c_backend_wrapper.sync_db_to_target, db, target) self.assertEqual(5, len(tries))
def test_unavailable(self): mem_db = self.request_state._create_database('test.db') mem_db.create_doc_from_json(tests.nested_doc) tries = [] def wrapper(instance, *args, **kwargs): tries.append(None) raise errors.Unavailable mem_db.whats_changed = wrapper url = self.getURL('test.db') target = c_backend_wrapper.create_http_sync_target(url) db = c_backend_wrapper.CDatabase(':memory:') db.create_doc_from_json(tests.simple_doc) self.assertRaises( errors.Unavailable, c_backend_wrapper.sync_db_to_target, db, target) self.assertEqual(5, len(tries))
def test_unavailable_then_available(self): mem_db = self.request_state._create_database('test.db') mem_doc = mem_db.create_doc_from_json(tests.nested_doc) orig_whatschanged = mem_db.whats_changed tries = [] def wrapper(instance, *args, **kwargs): if len(tries) < 1: tries.append(None) raise errors.Unavailable return orig_whatschanged(instance, *args, **kwargs) mem_db.whats_changed = wrapper url = self.getURL('test.db') target = c_backend_wrapper.create_http_sync_target(url) db = c_backend_wrapper.CDatabase(':memory:') doc = db.create_doc_from_json(tests.simple_doc) c_backend_wrapper.sync_db_to_target(db, target) self.assertEqual(1, len(tries)) self.assertGetDoc(mem_db, doc.doc_id, doc.rev, doc.get_json(), False) self.assertGetDoc(db, mem_doc.doc_id, mem_doc.rev, mem_doc.get_json(), False)
def test_unavailable_then_available(self): mem_db = self.request_state._create_database('test.db') mem_doc = mem_db.create_doc_from_json(tests.nested_doc) orig_whatschanged = mem_db.whats_changed tries = [] def wrapper(instance, *args, **kwargs): if len(tries) < 1: tries.append(None) raise errors.Unavailable return orig_whatschanged(instance, *args, **kwargs) mem_db.whats_changed = wrapper url = self.getURL('test.db') target = c_backend_wrapper.create_http_sync_target(url) db = c_backend_wrapper.CDatabase(':memory:') doc = db.create_doc_from_json(tests.simple_doc) c_backend_wrapper.sync_db_to_target(db, target) self.assertEqual(1, len(tries)) self.assertGetDoc(mem_db, doc.doc_id, doc.rev, doc.get_json(), False) self.assertGetDoc(db, mem_doc.doc_id, mem_doc.rev, mem_doc.get_json(), False)
def test_format_sync_url(self): target = c_backend_wrapper.create_http_sync_target("http://base_url") self.assertEqual("http://base_url/sync-from/replica-uid", c_backend_wrapper._format_sync_url(target, "replica-uid"))
def test_format_sync_url(self): target = c_backend_wrapper.create_http_sync_target("http://base_url") self.assertEqual( "http://base_url/sync-from/replica-uid", c_backend_wrapper._format_sync_url(target, "replica-uid"))