| |
@@ -0,0 +1,259 @@
|
| |
+ import mock
|
| |
+ from utils import DBQueryTestCase
|
| |
+
|
| |
+ import koji
|
| |
+ import kojihub
|
| |
+
|
| |
+
|
| |
+ class TestListArchives(DBQueryTestCase):
|
| |
+ maxDiff = None
|
| |
+
|
| |
+ def test_list_archives_simple(self):
|
| |
+ rv = kojihub.list_archives()
|
| |
+
|
| |
+ self.assertEqual(len(self.queries), 1)
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id'],
|
| |
+ clauses=[],
|
| |
+ values={})
|
| |
+ self.assertEqual(rv, [])
|
| |
+
|
| |
+ def test_list_archives_strict(self):
|
| |
+ with self.assertRaises(koji.GenericError) as cm:
|
| |
+ kojihub.list_archives(strict=True)
|
| |
+ self.assertEqual(cm.exception.args[0], 'No archives found.')
|
| |
+
|
| |
+ def test_list_archives_buildid(self):
|
| |
+ kojihub.list_archives(buildID=1)
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id'],
|
| |
+ clauses=['build_id = %(build_id)i'],
|
| |
+ values={'build_id': 1})
|
| |
+
|
| |
+ def test_list_archives_buildrootid(self):
|
| |
+ kojihub.list_archives(buildrootID=1)
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id'],
|
| |
+ clauses=['buildroot_id = %(buildroot_id)i'],
|
| |
+ values={'buildroot_id': 1})
|
| |
+
|
| |
+ def test_list_archives_componentbuildrootid(self):
|
| |
+ kojihub.list_archives(componentBuildrootID=1)
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id',
|
| |
+ 'buildroot_archives on archiveinfo.id = buildroot_archives.archive_id'],
|
| |
+ clauses=['buildroot_archives.buildroot_id = %(component_buildroot_id)i'],
|
| |
+ values={'component_buildroot_id': 1},
|
| |
+ colsByAlias={'build_id': 'archiveinfo.build_id',
|
| |
+ 'type_name': 'archivetypes.name',
|
| |
+ 'component_buildroot_id': 'buildroot_archives.buildroot_id',
|
| |
+ 'type_id': 'archiveinfo.type_id',
|
| |
+ 'checksum': 'archiveinfo.checksum',
|
| |
+ 'extra': 'archiveinfo.extra',
|
| |
+ 'filename': 'archiveinfo.filename',
|
| |
+ 'project': 'buildroot_archives.project_dep',
|
| |
+ 'type_description': 'archivetypes.description',
|
| |
+ 'metadata_only': 'archiveinfo.metadata_only',
|
| |
+ 'type_extensions': 'archivetypes.extensions',
|
| |
+ 'btype': 'btype.name',
|
| |
+ 'checksum_type': 'archiveinfo.checksum_type',
|
| |
+ 'btype_id': 'archiveinfo.btype_id',
|
| |
+ 'buildroot_id': 'archiveinfo.buildroot_id',
|
| |
+ 'id': 'archiveinfo.id',
|
| |
+ 'size': 'archiveinfo.size'})
|
| |
+
|
| |
+ def test_list_archives_imageid(self):
|
| |
+ kojihub.list_archives(imageID=1)
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id',
|
| |
+ 'archive_components ON archiveinfo.id = archive_components.component_id'],
|
| |
+ clauses=['archive_components.archive_id = %(imageID)i'],
|
| |
+ values={'imageID': 1})
|
| |
+
|
| |
+ def test_list_archives_hostid(self):
|
| |
+ kojihub.list_archives(hostID=1)
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id',
|
| |
+ 'standard_buildroot on archiveinfo.buildroot_id = standard_buildroot.buildroot_id'],
|
| |
+ clauses=['standard_buildroot.host_id = %(host_id)i'],
|
| |
+ values={'host_id': 1},
|
| |
+ colsByAlias={'host_id': 'standard_buildroot.host_id',
|
| |
+ 'build_id': 'archiveinfo.build_id',
|
| |
+ 'type_name': 'archivetypes.name',
|
| |
+ 'type_id': 'archiveinfo.type_id',
|
| |
+ 'checksum': 'archiveinfo.checksum',
|
| |
+ 'extra': 'archiveinfo.extra',
|
| |
+ 'filename': 'archiveinfo.filename',
|
| |
+ 'type_description': 'archivetypes.description',
|
| |
+ 'metadata_only': 'archiveinfo.metadata_only',
|
| |
+ 'type_extensions': 'archivetypes.extensions',
|
| |
+ 'btype': 'btype.name',
|
| |
+ 'checksum_type': 'archiveinfo.checksum_type',
|
| |
+ 'btype_id': 'archiveinfo.btype_id',
|
| |
+ 'buildroot_id': 'archiveinfo.buildroot_id',
|
| |
+ 'id': 'archiveinfo.id',
|
| |
+ 'size': 'archiveinfo.size'})
|
| |
+
|
| |
+ def test_list_archives_filename(self):
|
| |
+ kojihub.list_archives(filename='somefile.txt')
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id'],
|
| |
+ clauses=['filename = %(filename)s'],
|
| |
+ values={'filename': 'somefile.txt'})
|
| |
+
|
| |
+ def test_list_archives_size(self):
|
| |
+ kojihub.list_archives(size=1231831)
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id'],
|
| |
+ clauses=['size = %(size)i'],
|
| |
+ values={'size': 1231831})
|
| |
+
|
| |
+ def test_list_archives_checksum(self):
|
| |
+ kojihub.list_archives(checksum='7873f0a6dbf3abc07724e000ac9b3941')
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id'],
|
| |
+ clauses=['checksum = %(checksum)s'],
|
| |
+ values={'checksum': '7873f0a6dbf3abc07724e000ac9b3941'})
|
| |
+
|
| |
+ def test_list_archives_archiveid(self):
|
| |
+ kojihub.list_archives(archiveID=1)
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id'],
|
| |
+ clauses=['archiveinfo.id = %(archive_id)s'],
|
| |
+ values={'archive_id': 1})
|
| |
+
|
| |
+ def test_list_archives_type_maven(self):
|
| |
+ kojihub.list_archives(type='maven', typeInfo={'group_id': 'gid',
|
| |
+ 'artifact_id': 'aid',
|
| |
+ 'version': '1.0.1'})
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id',
|
| |
+ 'maven_archives ON archiveinfo.id = maven_archives.archive_id'],
|
| |
+ clauses=['maven_archives.group_id = %(group_id)s',
|
| |
+ 'maven_archives.artifact_id = %(artifact_id)s',
|
| |
+ 'maven_archives.version = %(version)s'],
|
| |
+ values={'group_id': 'gid',
|
| |
+ 'artifact_id': 'aid',
|
| |
+ 'version': '1.0.1'},
|
| |
+ colsByAlias={'group_id': 'maven_archives.group_id',
|
| |
+ 'artifact_id': 'maven_archives.artifact_id',
|
| |
+ 'version': 'maven_archives.version',
|
| |
+ 'build_id': 'archiveinfo.build_id',
|
| |
+ 'type_name': 'archivetypes.name',
|
| |
+ 'type_id': 'archiveinfo.type_id',
|
| |
+ 'checksum': 'archiveinfo.checksum',
|
| |
+ 'extra': 'archiveinfo.extra',
|
| |
+ 'filename': 'archiveinfo.filename',
|
| |
+ 'type_description': 'archivetypes.description',
|
| |
+ 'metadata_only': 'archiveinfo.metadata_only',
|
| |
+ 'type_extensions': 'archivetypes.extensions',
|
| |
+ 'btype': 'btype.name',
|
| |
+ 'checksum_type': 'archiveinfo.checksum_type',
|
| |
+ 'btype_id': 'archiveinfo.btype_id',
|
| |
+ 'buildroot_id': 'archiveinfo.buildroot_id',
|
| |
+ 'id': 'archiveinfo.id',
|
| |
+ 'size': 'archiveinfo.size'})
|
| |
+
|
| |
+ def test_list_archives_type_win(self):
|
| |
+ kojihub.list_archives(type='win', typeInfo={'relpath': 'somerelpath',
|
| |
+ 'platforms': 'all',
|
| |
+ 'flags': ['A', 'B']})
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id',
|
| |
+ 'win_archives ON archiveinfo.id = win_archives.archive_id'],
|
| |
+ clauses=['win_archives.relpath = %(relpath)s',
|
| |
+ r"platforms ~ E'\\mall\\M'",
|
| |
+ r"flags ~ E'\\mA\\M'",
|
| |
+ r"flags ~ E'\\mB\\M'"],
|
| |
+ values={'relpath': 'somerelpath'},
|
| |
+ colsByAlias={'relpath': 'win_archives.relpath',
|
| |
+ 'platforms': 'win_archives.platforms',
|
| |
+ 'flags': 'win_archives.flags',
|
| |
+ 'build_id': 'archiveinfo.build_id',
|
| |
+ 'type_name': 'archivetypes.name',
|
| |
+ 'type_id': 'archiveinfo.type_id',
|
| |
+ 'checksum': 'archiveinfo.checksum',
|
| |
+ 'extra': 'archiveinfo.extra',
|
| |
+ 'filename': 'archiveinfo.filename',
|
| |
+ 'type_description': 'archivetypes.description',
|
| |
+ 'metadata_only': 'archiveinfo.metadata_only',
|
| |
+ 'type_extensions': 'archivetypes.extensions',
|
| |
+ 'btype': 'btype.name',
|
| |
+ 'checksum_type': 'archiveinfo.checksum_type',
|
| |
+ 'btype_id': 'archiveinfo.btype_id',
|
| |
+ 'buildroot_id': 'archiveinfo.buildroot_id',
|
| |
+ 'id': 'archiveinfo.id',
|
| |
+ 'size': 'archiveinfo.size'})
|
| |
+
|
| |
+ def test_list_archives_type_image(self):
|
| |
+ kojihub.list_archives(type='image', typeInfo={'arch': 'i386'})
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id',
|
| |
+ 'image_archives ON archiveinfo.id = image_archives.archive_id'],
|
| |
+ clauses=['image_archives.arch = %(arch)s'],
|
| |
+ values={'arch': 'i386'},
|
| |
+ colsByAlias={'arch': 'image_archives.arch',
|
| |
+ 'build_id': 'archiveinfo.build_id',
|
| |
+ 'type_name': 'archivetypes.name',
|
| |
+ 'type_id': 'archiveinfo.type_id',
|
| |
+ 'checksum': 'archiveinfo.checksum',
|
| |
+ 'extra': 'archiveinfo.extra',
|
| |
+ 'filename': 'archiveinfo.filename',
|
| |
+ 'type_description': 'archivetypes.description',
|
| |
+ 'metadata_only': 'archiveinfo.metadata_only',
|
| |
+ 'type_extensions': 'archivetypes.extensions',
|
| |
+ 'btype': 'btype.name',
|
| |
+ 'checksum_type': 'archiveinfo.checksum_type',
|
| |
+ 'btype_id': 'archiveinfo.btype_id',
|
| |
+ 'buildroot_id': 'archiveinfo.buildroot_id',
|
| |
+ 'id': 'archiveinfo.id',
|
| |
+ 'size': 'archiveinfo.size'})
|
| |
+
|
| |
+ @mock.patch('kojihub.lookup_name', return_value={'id': 111, 'name': 'other'})
|
| |
+ def test_list_archives_type_others(self, lookup_name):
|
| |
+ kojihub.list_archives(type='other')
|
| |
+ self.assertLastQueryEqual(tables=['archiveinfo'],
|
| |
+ joins=['archivetypes on archiveinfo.type_id = archivetypes.id',
|
| |
+ 'btype ON archiveinfo.btype_id = btype.id'],
|
| |
+ clauses=['archiveinfo.btype_id = %(btype_id)s'],
|
| |
+ values={'btype_id': 111},
|
| |
+ colsByAlias={'build_id': 'archiveinfo.build_id',
|
| |
+ 'type_name': 'archivetypes.name',
|
| |
+ 'type_id': 'archiveinfo.type_id',
|
| |
+ 'checksum': 'archiveinfo.checksum',
|
| |
+ 'extra': 'archiveinfo.extra',
|
| |
+ 'filename': 'archiveinfo.filename',
|
| |
+ 'type_description': 'archivetypes.description',
|
| |
+ 'metadata_only': 'archiveinfo.metadata_only',
|
| |
+ 'type_extensions': 'archivetypes.extensions',
|
| |
+ 'btype': 'btype.name',
|
| |
+ 'checksum_type': 'archiveinfo.checksum_type',
|
| |
+ 'btype_id': 'archiveinfo.btype_id',
|
| |
+ 'buildroot_id': 'archiveinfo.buildroot_id',
|
| |
+ 'id': 'archiveinfo.id',
|
| |
+ 'size': 'archiveinfo.size'})
|
| |
+
|
| |
+ @mock.patch('kojihub.lookup_name', return_value=None)
|
| |
+ def test_list_archives_type_not_found(self, lookup_name):
|
| |
+ with self.assertRaises(koji.GenericError) as cm:
|
| |
+ kojihub.list_archives(type='other')
|
| |
+ self.assertEqual(cm.exception.args[0], 'unsupported archive type: other')
|
| |
+
|
| |
+ @mock.patch('kojihub.lookup_name', return_value={'id': 111, 'name': 'other'})
|
| |
+ def test_list_archives_type_other_with_typeinfo(self, lookup_name):
|
| |
+ with self.assertRaises(koji.GenericError) as cm:
|
| |
+ kojihub.list_archives(type='other', typeInfo={'somekey': 'somevalue'})
|
| |
+ self.assertEqual(cm.exception.args[0], 'typeInfo queries not supported for type other')
|
| |
It looks variable
key
is not defined here. So fix it