From 272d7591efe351c29cc725c1fc3517df627db797 Mon Sep 17 00:00:00 2001 From: Christian Kellner Date: Sun, 13 Sep 2020 11:55:20 +0200 Subject: [PATCH] test: add koji hub plugin unit test skeleton Load the module, mock session and kojihub, check basic calling osbuildImage will result in `kojihub.make_task` with the right parameters. --- test/unit/test_hub.py | 63 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 test/unit/test_hub.py diff --git a/test/unit/test_hub.py b/test/unit/test_hub.py new file mode 100644 index 0000000..cd036d1 --- /dev/null +++ b/test/unit/test_hub.py @@ -0,0 +1,63 @@ +# +# koji hub plugin unit tests +# + + +import unittest +import os +import imp +from flexmock import flexmock + + +class TestHubPlugin(unittest.TestCase): + def setUp(self): + """Loads the plugin to self.plugin""" + root = os.getenv("GITHUB_WORKSPACE", os.getcwd()) + + haystack = os.path.join(root, "plugins", "hub") + + fp, path, desc = imp.find_module("osbuild", [haystack]) + try: + self.plugin = imp.load_module("osbuild", fp, path, desc) + finally: + fp.close() + + @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_basic(self): + context = self.mock_koji_context() + + opts = {} + 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, opts)