2015-10-06 01:21:38 +08:00
|
|
|
# -*- coding: utf-8 -*-
|
2015-10-06 01:41:00 +08:00
|
|
|
import os
|
|
|
|
|
import sqlite3
|
|
|
|
|
import tempfile
|
2015-10-06 01:21:38 +08:00
|
|
|
import unittest
|
2020-08-29 02:06:15 +08:00
|
|
|
from unittest.mock import MagicMock, Mock
|
2015-10-06 01:21:38 +08:00
|
|
|
|
2020-08-29 02:06:15 +08:00
|
|
|
from ankisyncd.sync import SYNC_VER
|
2015-10-06 01:21:38 +08:00
|
|
|
from ankisyncd.sync_app import SyncCollectionHandler
|
2015-10-06 01:41:00 +08:00
|
|
|
from ankisyncd.sync_app import SyncUserSession
|
2015-10-06 01:21:38 +08:00
|
|
|
|
2017-10-31 02:28:29 +08:00
|
|
|
from collection_test_base import CollectionTestBase
|
2015-10-06 01:21:38 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class SyncCollectionHandlerTest(CollectionTestBase):
|
|
|
|
|
def setUp(self):
|
2020-08-29 02:06:15 +08:00
|
|
|
super().setUp()
|
|
|
|
|
self.session = MagicMock()
|
|
|
|
|
self.session.name = 'test'
|
|
|
|
|
self.syncCollectionHandler = SyncCollectionHandler(
|
|
|
|
|
self.collection,
|
|
|
|
|
self.session
|
|
|
|
|
)
|
2015-10-06 01:21:38 +08:00
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
|
CollectionTestBase.tearDown(self)
|
|
|
|
|
self.syncCollectionHandler = None
|
|
|
|
|
|
2017-11-01 23:41:41 +08:00
|
|
|
def test_old_client(self):
|
|
|
|
|
old = (
|
|
|
|
|
','.join(('ankidesktop', '2.0.12', 'lin::')),
|
|
|
|
|
','.join(('ankidesktop', '2.0.26', 'lin::')),
|
|
|
|
|
','.join(('ankidroid', '2.1', '')),
|
|
|
|
|
','.join(('ankidroid', '2.2', '')),
|
2017-11-02 00:43:47 +08:00
|
|
|
','.join(('ankidroid', '2.2.2', '')),
|
|
|
|
|
','.join(('ankidroid', '2.3alpha3', '')),
|
2017-11-01 23:41:41 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
current = (
|
|
|
|
|
None,
|
|
|
|
|
','.join(('ankidesktop', '2.0.27', 'lin::')),
|
|
|
|
|
','.join(('ankidesktop', '2.0.32', 'lin::')),
|
|
|
|
|
','.join(('ankidesktop', '2.1.0', 'lin::')),
|
2018-12-11 03:23:02 +08:00
|
|
|
','.join(('ankidesktop', '2.1.6-beta2', 'lin::')),
|
2019-02-19 07:44:26 +08:00
|
|
|
','.join(('ankidesktop', '2.1.9 (dev)', 'lin::')),
|
2020-12-17 09:18:31 +08:00
|
|
|
','.join(('ankidesktop', '2.1.26 (arch-linux-2.1.26-1)', 'lin:arch:')),
|
2017-11-01 23:41:41 +08:00
|
|
|
','.join(('ankidroid', '2.2.3', '')),
|
|
|
|
|
','.join(('ankidroid', '2.3alpha4', '')),
|
2017-11-02 00:45:16 +08:00
|
|
|
','.join(('ankidroid', '2.3alpha5', '')),
|
2017-11-02 01:06:13 +08:00
|
|
|
','.join(('ankidroid', '2.3beta1', '')),
|
|
|
|
|
','.join(('ankidroid', '2.3', '')),
|
2017-11-01 23:41:41 +08:00
|
|
|
','.join(('ankidroid', '2.9', '')),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
for cv in old:
|
2018-12-11 03:17:53 +08:00
|
|
|
if not SyncCollectionHandler._old_client(cv):
|
2017-11-02 02:47:22 +08:00
|
|
|
raise AssertionError("old_client(\"%s\") is False" % cv)
|
2017-11-01 23:41:41 +08:00
|
|
|
|
|
|
|
|
for cv in current:
|
2018-12-11 03:17:53 +08:00
|
|
|
if SyncCollectionHandler._old_client(cv):
|
2017-11-02 02:47:22 +08:00
|
|
|
raise AssertionError("old_client(\"%s\") is True" % cv)
|
2017-11-01 23:41:41 +08:00
|
|
|
|
2015-10-06 01:21:38 +08:00
|
|
|
def test_meta(self):
|
2018-12-11 03:17:53 +08:00
|
|
|
meta = self.syncCollectionHandler.meta(v=SYNC_VER)
|
2015-10-06 01:21:38 +08:00
|
|
|
self.assertEqual(meta['scm'], self.collection.scm)
|
|
|
|
|
self.assertTrue((type(meta['ts']) == int) and meta['ts'] > 0)
|
|
|
|
|
self.assertEqual(meta['mod'], self.collection.mod)
|
|
|
|
|
self.assertEqual(meta['usn'], self.collection._usn)
|
2020-08-29 02:06:15 +08:00
|
|
|
self.assertEqual(meta['uname'], self.session.name)
|
2017-11-02 01:12:38 +08:00
|
|
|
self.assertEqual(meta['musn'], self.collection.media.lastUsn())
|
2015-10-06 01:21:38 +08:00
|
|
|
self.assertEqual(meta['msg'], '')
|
|
|
|
|
self.assertEqual(meta['cont'], True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SyncAppTest(unittest.TestCase):
|
|
|
|
|
pass
|