示例#1
0
 def setUp(self):
     self.connector = MockConnector(urlparse.urlparse('/baseurl/repo/'))
     self.connector.connect()
     self.pi = index.PictureIndex()
     self.pi.add(MockPicture.create_many(10))
     self.conf = repo.new_repo_config()
     self.conf['index.file'] = 'mock-index-path'
示例#2
0
class LoadTests(unittest.TestCase):

    def setUp(self):
        self.connector = MockConnector(urlparse.urlparse('/baseurl/repo/'))
        self.connector.connect()
        self.pi = index.PictureIndex()
        self.pi.add(MockPicture.create_many(10))
        self.conf = repo.new_repo_config()
        self.conf['index.file'] = 'mock-index-path'
        Repo.create_on_disk(self.connector, self.conf, self.pi)

    def tearDown(self):
        self.connector.disconnect()

    def test_load_config_from_disk(self):
        r = Repo(index={}, config={}, connector=self.connector)
        r.load_config_from_disk()

        self.assertEqual(r.config, self.conf)
        self.assertIsNot(r.config, self.conf)
        self.assertEqual(r.index, {})

    def test_load_index_from_disk(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)
        r.load_index_from_disk()

        self.assertEqual(r.index, self.pi)
        self.assertIsNot(r.index, self.pi)

    def test_load_index_version_current(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)
        r.load_index_from_disk(repo.INDEX_FORMAT_VERSION)

        self.assertEqual(r.index, self.pi)
        self.assertIsNot(r.index, self.pi)

    def test_load_index_version_1(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)
        r.load_index_from_disk(1)

        self.assertEqual(r.index, self.pi)
        self.assertIsNot(r.index, self.pi)

    def test_load_index_version_too_low(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)

        self.assertRaises(KeyError, r.load_index_from_disk, 0)

    def test_load_version_mismatch_error(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)

        with self.assertRaises(VersionMismatchError) as cm:
            r.load_index_from_disk(99)
        self.assertEqual(cm.exception.actual, 99)
        self.assertEqual(cm.exception.expected, repo.INDEX_FORMAT_VERSION)
示例#3
0
class LoadTests(unittest.TestCase):
    def setUp(self):
        self.connector = MockConnector(urlparse.urlparse('/baseurl/repo/'))
        self.connector.connect()
        self.pi = index.PictureIndex()
        self.pi.add(MockPicture.create_many(10))
        self.conf = repo.new_repo_config()
        self.conf['index.file'] = 'mock-index-path'
        Repo.create_on_disk(self.connector, self.conf, self.pi)

    def tearDown(self):
        self.connector.disconnect()

    def test_load_config_from_disk(self):
        r = Repo(index={}, config={}, connector=self.connector)
        r.load_config_from_disk()

        self.assertEqual(r.config, self.conf)
        self.assertIsNot(r.config, self.conf)
        self.assertEqual(r.index, {})

    def test_load_index_from_disk(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)
        r.load_index_from_disk()

        self.assertEqual(r.index, self.pi)
        self.assertIsNot(r.index, self.pi)

    def test_load_index_version_current(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)
        r.load_index_from_disk(repo.INDEX_FORMAT_VERSION)

        self.assertEqual(r.index, self.pi)
        self.assertIsNot(r.index, self.pi)

    def test_load_index_version_1(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)
        r.load_index_from_disk(1)

        self.assertEqual(r.index, self.pi)
        self.assertIsNot(r.index, self.pi)

    def test_load_index_version_too_low(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)

        self.assertRaises(KeyError, r.load_index_from_disk, 0)

    def test_load_version_mismatch_error(self):
        r = Repo(index={}, config=self.conf, connector=self.connector)

        with self.assertRaises(VersionMismatchError) as cm:
            r.load_index_from_disk(99)
        self.assertEqual(cm.exception.actual, 99)
        self.assertEqual(cm.exception.expected, repo.INDEX_FORMAT_VERSION)
示例#4
0
class SaveTests(unittest.TestCase):
    def setUp(self):
        self.connector = MockConnector(urlparse.urlparse('/baseurl/repo/'))
        self.connector.connect()
        self.pi = index.PictureIndex()
        self.pi.add(MockPicture.create_many(10))
        self.conf = repo.new_repo_config()
        self.conf['index.file'] = 'mock-index-path'

    def tearDown(self):
        self.connector.disconnect()

    def test_save_config_to_disk(self):
        r = Repo(self.pi, self.conf, self.connector)
        r.save_config_to_disk()

        self.assertTrue(self.connector.opened(repo.CONFIG_FILE))
        config_on_disk = config.Config()
        config_on_disk.read(self.connector.get_file(repo.CONFIG_FILE))
        self.assertEqual(config_on_disk, self.conf)
        self.assertIsNot(config_on_disk, self.conf)

    def test_save_index_to_disk(self):
        r = Repo(self.pi, self.conf, self.connector)
        r.save_index_to_disk()

        self.assertTrue(self.connector.opened('mock-index-path'))
        index_on_disk = index.PictureIndex()
        index_on_disk.read(self.connector.get_file('mock-index-path'))
        self.assertEqual(index_on_disk, self.pi)
        self.assertIsNot(index_on_disk, self.pi)
示例#5
0
    def test_clone(self):
        src_repo = Repo.create_on_disk(self.connector, self.conf, self.pi)
        dest_connector = MockConnector(urlparse.urlparse('/destrepo/baseurl/'))
        dest_connector.connect()
        dest_repo = Repo.clone(repo=src_repo, dest=dest_connector)

        self.assertIsInstance(dest_repo, Repo)
        self.assertEqual(dest_repo.config, src_repo.config)
        self.assertIsNot(dest_repo.config, src_repo.config)
        self.assertEqual(dest_repo.index, src_repo.index)
        self.assertIsNot(dest_repo.index, src_repo.index)
        self.assertIsNot(dest_repo, src_repo)
        self.assertTrue(dest_connector.opened(repo.CONFIG_FILE))
        self.assertTrue(dest_connector.opened('mock-index-path'))
示例#6
0
class SaveTests(unittest.TestCase):

    def setUp(self):
        self.connector = MockConnector(urlparse.urlparse('/baseurl/repo/'))
        self.connector.connect()
        self.pi = index.PictureIndex()
        self.pi.add(MockPicture.create_many(10))
        self.conf = repo.new_repo_config()
        self.conf['index.file'] = 'mock-index-path'

    def tearDown(self):
        self.connector.disconnect()

    def test_save_config_to_disk(self):
        r = Repo(self.pi, self.conf, self.connector)
        r.save_config_to_disk()

        self.assertTrue(self.connector.opened(repo.CONFIG_FILE))
        config_on_disk = config.Config()
        config_on_disk.read(self.connector.get_file(repo.CONFIG_FILE))
        self.assertEqual(config_on_disk, self.conf)
        self.assertIsNot(config_on_disk, self.conf)

    def test_save_index_to_disk(self):
        r = Repo(self.pi, self.conf, self.connector)
        r.save_index_to_disk()

        self.assertTrue(self.connector.opened('mock-index-path'))
        index_on_disk = index.PictureIndex()
        index_on_disk.read(self.connector.get_file('mock-index-path'))
        self.assertEqual(index_on_disk, self.pi)
        self.assertIsNot(index_on_disk, self.pi)
示例#7
0
 def setUp(self):
     self.connector = MockConnector(urlparse.urlparse('/baseurl/repo/'))
     self.connector.connect()
     self.pi = index.PictureIndex()
     self.pi.add(MockPicture.create_many(10))
     self.conf = repo.new_repo_config()
     self.conf['index.file'] = 'mock-index-path'
示例#8
0
    def test_migrate_repo(self):
        path = '/basedir/repo/'
        repo_old = new_mock_repo(path, num_pics=10)
        repo_old.config['index.format_version'] = 0
        with MockConnector.from_string(path).connected():
            repo_old.save_config_to_disk()
        repo_new = app.migrate_repo(repo_old)

        self.assertEqual(repo_new.config['index.format_version'],
                         repo.INDEX_FORMAT_VERSION)#
示例#9
0
    def test_clone(self):
        src_repo = Repo.create_on_disk(self.connector, self.conf, self.pi)
        dest_connector = MockConnector(urlparse.urlparse('/destrepo/baseurl/'))
        dest_connector.connect()
        dest_repo = Repo.clone(repo=src_repo, dest=dest_connector)

        self.assertIsInstance(dest_repo, Repo)
        self.assertEqual(dest_repo.config, src_repo.config)
        self.assertIsNot(dest_repo.config, src_repo.config)
        self.assertEqual(dest_repo.index, src_repo.index)
        self.assertIsNot(dest_repo.index, src_repo.index)
        self.assertIsNot(dest_repo, src_repo)
        self.assertTrue(dest_connector.opened(repo.CONFIG_FILE))
        self.assertTrue(dest_connector.opened('mock-index-path'))
示例#10
0
 def setUp(self):
     self.path = "/testpath/to/repo"
     self.connector = MockConnector.from_string(self.path)
示例#11
0
class FactoryTests(unittest.TestCase):
    def setUp(self):
        self.connector = MockConnector(urlparse.urlparse('/baseurl/repo/'))
        self.connector.connect()
        self.pi = index.PictureIndex()
        self.pi.add(MockPicture.create_many(10))
        self.conf = repo.new_repo_config()
        self.conf['index.file'] = 'mock-index-path'

    def test_create_on_disk_empty(self):
        r = Repo.create_on_disk(self.connector, self.conf)

        # test repo
        self.assertIsInstance(r, Repo)
        self.assertIs(r.connector, self.connector)
        self.assertIs(r.config, self.conf)
        self.assertEqual(r.index, PictureIndex())

        # test conf on disk
        self.assertTrue(self.connector.opened(repo.CONFIG_FILE))
        conf_on_disk = config.Config()
        conf_on_disk.read(self.connector.get_file(repo.CONFIG_FILE))
        self.assertEqual(conf_on_disk, self.conf)

        # test picture index on disk
        self.assertTrue(self.connector.opened('mock-index-path'))
        index_on_disk = index.PictureIndex()
        index_on_disk.read(self.connector.get_file('mock-index-path'))
        self.assertEqual(index_on_disk, index.PictureIndex())

    def test_create_on_disk_with_index(self):
        r = Repo.create_on_disk(self.connector, self.conf, self.pi)

        # test repo
        self.assertIsInstance(r, Repo)
        self.assertIs(r.connector, self.connector)
        self.assertIs(r.config, self.conf)
        self.assertEqual(r.index, self.pi)

        # test conf on disk
        self.assertTrue(self.connector.opened(repo.CONFIG_FILE))
        conf_on_disk = config.Config()
        conf_on_disk.read(self.connector.get_file(repo.CONFIG_FILE))
        self.assertEqual(conf_on_disk, self.conf)

        # test picture index on disk
        self.assertTrue(self.connector.opened('mock-index-path'))
        index_on_disk = index.PictureIndex()
        index_on_disk.read(self.connector.get_file('mock-index-path'))
        self.assertEqual(index_on_disk, self.pi)

    def test_load_from_disk(self):
        repo_created = Repo.create_on_disk(self.connector, self.conf, self.pi)
        repo_loaded = Repo.load_from_disk(self.connector)

        self.assertIsInstance(repo_loaded, Repo)
        self.assertEqual(repo_loaded.config, repo_created.config)
        self.assertIsNot(repo_loaded.config, repo_created.config)
        self.assertEqual(repo_loaded.index, repo_created.index)
        self.assertIsNot(repo_loaded.index, repo_created.index)
        self.assertIsNot(repo_loaded, repo_created)
        self.assertIs(repo_loaded.connector, self.connector)

    def test_load_notfound_error(self):
        self.connector.exists = mock.Mock(return_value=False)
        with self.assertRaises(NotFoundError) as cm:
            Repo.load_from_disk(self.connector)
        self.assertEqual(cm.exception.url, self.connector.url)

    def test_load_version_mismatch_error(self):
        self.conf['index.format_version'] = 99
        Repo.create_on_disk(self.connector, self.conf, self.pi)

        with self.assertRaises(VersionMismatchError) as cm:
            Repo.load_from_disk(self.connector)
        self.assertEqual(cm.exception.actual, 99)
        self.assertEqual(cm.exception.expected, repo.INDEX_FORMAT_VERSION)

    def test_clone(self):
        src_repo = Repo.create_on_disk(self.connector, self.conf, self.pi)
        dest_connector = MockConnector(urlparse.urlparse('/destrepo/baseurl/'))
        dest_connector.connect()
        dest_repo = Repo.clone(repo=src_repo, dest=dest_connector)

        self.assertIsInstance(dest_repo, Repo)
        self.assertEqual(dest_repo.config, src_repo.config)
        self.assertIsNot(dest_repo.config, src_repo.config)
        self.assertEqual(dest_repo.index, src_repo.index)
        self.assertIsNot(dest_repo.index, src_repo.index)
        self.assertIsNot(dest_repo, src_repo)
        self.assertTrue(dest_connector.opened(repo.CONFIG_FILE))
        self.assertTrue(dest_connector.opened('mock-index-path'))
示例#12
0
class FactoryTests(unittest.TestCase):

    def setUp(self):
        self.connector = MockConnector(urlparse.urlparse('/baseurl/repo/'))
        self.connector.connect()
        self.pi = index.PictureIndex()
        self.pi.add(MockPicture.create_many(10))
        self.conf = repo.new_repo_config()
        self.conf['index.file'] = 'mock-index-path'

    def test_create_on_disk_empty(self):
        r = Repo.create_on_disk(self.connector, self.conf)

        # test repo
        self.assertIsInstance(r, Repo)
        self.assertIs(r.connector, self.connector)
        self.assertIs(r.config, self.conf)
        self.assertEqual(r.index, PictureIndex())

        # test conf on disk
        self.assertTrue(self.connector.opened(repo.CONFIG_FILE))
        conf_on_disk = config.Config()
        conf_on_disk.read(self.connector.get_file(repo.CONFIG_FILE))
        self.assertEqual(conf_on_disk, self.conf)

        # test picture index on disk
        self.assertTrue(self.connector.opened('mock-index-path'))
        index_on_disk = index.PictureIndex()
        index_on_disk.read(self.connector.get_file('mock-index-path'))
        self.assertEqual(index_on_disk, index.PictureIndex())

    def test_create_on_disk_with_index(self):
        r = Repo.create_on_disk(self.connector, self.conf, self.pi)

        # test repo
        self.assertIsInstance(r, Repo)
        self.assertIs(r.connector, self.connector)
        self.assertIs(r.config, self.conf)
        self.assertEqual(r.index, self.pi)

        # test conf on disk
        self.assertTrue(self.connector.opened(repo.CONFIG_FILE))
        conf_on_disk = config.Config()
        conf_on_disk.read(self.connector.get_file(repo.CONFIG_FILE))
        self.assertEqual(conf_on_disk, self.conf)

        # test picture index on disk
        self.assertTrue(self.connector.opened('mock-index-path'))
        index_on_disk = index.PictureIndex()
        index_on_disk.read(self.connector.get_file('mock-index-path'))
        self.assertEqual(index_on_disk, self.pi)

    def test_load_from_disk(self):
        repo_created = Repo.create_on_disk(self.connector, self.conf, self.pi)
        repo_loaded = Repo.load_from_disk(self.connector)

        self.assertIsInstance(repo_loaded, Repo)
        self.assertEqual(repo_loaded.config, repo_created.config)
        self.assertIsNot(repo_loaded.config, repo_created.config)
        self.assertEqual(repo_loaded.index, repo_created.index)
        self.assertIsNot(repo_loaded.index, repo_created.index)
        self.assertIsNot(repo_loaded, repo_created)
        self.assertIs(repo_loaded.connector, self.connector)

    def test_load_notfound_error(self):
        self.connector.exists = mock.Mock(return_value=False)
        with self.assertRaises(NotFoundError) as cm:
            Repo.load_from_disk(self.connector)
        self.assertEqual(cm.exception.url, self.connector.url)

    def test_load_version_mismatch_error(self):
        self.conf['index.format_version'] = 99
        Repo.create_on_disk(self.connector, self.conf, self.pi)

        with self.assertRaises(VersionMismatchError) as cm:
            Repo.load_from_disk(self.connector)
        self.assertEqual(cm.exception.actual, 99)
        self.assertEqual(cm.exception.expected, repo.INDEX_FORMAT_VERSION)

    def test_clone(self):
        src_repo = Repo.create_on_disk(self.connector, self.conf, self.pi)
        dest_connector = MockConnector(urlparse.urlparse('/destrepo/baseurl/'))
        dest_connector.connect()
        dest_repo = Repo.clone(repo=src_repo, dest=dest_connector)

        self.assertIsInstance(dest_repo, Repo)
        self.assertEqual(dest_repo.config, src_repo.config)
        self.assertIsNot(dest_repo.config, src_repo.config)
        self.assertEqual(dest_repo.index, src_repo.index)
        self.assertIsNot(dest_repo.index, src_repo.index)
        self.assertIsNot(dest_repo, src_repo)
        self.assertTrue(dest_connector.opened(repo.CONFIG_FILE))
        self.assertTrue(dest_connector.opened('mock-index-path'))