debian-koji-osbuild/test/unit/test_hub.py
Tomas Hozza c725265081 Drop support for specifying more than one image type
While it is technically possible to build more than one image type
as part of a Koji compose in osbuild-composer, this option is not used
in reality and it also makes very little sense. If the user wants to
build more than one image type, they should submit multiple Koji builds.

Adjust affected unit tests.
2022-08-22 09:58:06 +02:00

75 lines
2 KiB
Python

#
# koji hub plugin unit tests
#
import jsonschema
import koji
from flexmock import flexmock
from plugintest import PluginTest
@PluginTest.load_plugin("hub")
class TestHubPlugin(PluginTest):
@staticmethod
def mock_koji_context(*, admin=False):
session = flexmock()
session.should_receive("hasPerm") \
.with_args("admin") \
.and_return(admin)
session.should_receive("assertPerm") \
.with_args("image") \
.once()
context = flexmock(session=session)
return context
@staticmethod
def mock_kojihub(args, task):
kojihub = flexmock()
kojihub.should_receive("make_task") \
.with_args("osbuildImage", args, **task)
return kojihub
def test_plugin_jsonschema(self):
# Make sure the schema used to validate the input is
# itself correct jsonschema
schema = self.plugin.OSBUILD_IMAGE_SCHEMA
jsonschema.Draft4Validator.check_schema(schema)
def test_basic(self):
context = self.mock_koji_context()
opts = {"repo": ["repo1", "repo2"],
"release": "1.2.3",
"skip_tag": True}
args = ["name", "version", "distro",
"image_type",
"target",
["arches"],
opts]
task = {"channel": "image"}
kojihub = self.mock_kojihub(args, task)
setattr(self.plugin, "context", context)
setattr(self.plugin, "kojihub", kojihub)
self.plugin.osbuildImage(*args, {})
def test_input_validation(self):
context = self.mock_koji_context()
setattr(self.plugin, "context", context)
opts = {}
args = ["name", "version", "distro",
["image_type"], # image type not an array
"target",
["arches"],
opts]
with self.assertRaises(koji.ParameterError):
self.plugin.osbuildImage(*args, opts)