From c30f16da996c930fc835af11d54c462e2f487c0c Mon Sep 17 00:00:00 2001 From: Yanks Yoon <37652070+yanksyoon@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:38:05 +0800 Subject: [PATCH] test: matrix-combinations plugin integration test (#38) * test: matrix-combinations plugin integration test * fix: linting * fix: autoscape xss --- .../matrix_combinations_plugin_job_xml.j2 | 85 +++++++++++++++++++ tests/integration/requirements.txt | 1 + tests/integration/test_plugins.py | 40 +++++++++ tox.ini | 1 + 4 files changed, 127 insertions(+) create mode 100644 tests/integration/files/matrix_combinations_plugin_job_xml.j2 create mode 100644 tests/integration/requirements.txt diff --git a/tests/integration/files/matrix_combinations_plugin_job_xml.j2 b/tests/integration/files/matrix_combinations_plugin_job_xml.j2 new file mode 100644 index 00000000..89f1b2b0 --- /dev/null +++ b/tests/integration/files/matrix_combinations_plugin_job_xml.j2 @@ -0,0 +1,85 @@ + + +false + + + + + test1 + + + Successful + false + + SUCCESS + + + + Failed + false + + FAILURE + + + + + + + + test2 + + + Successful + false + + SUCCESS + + + + Failed + false + + FAILURE + + + + + + + + + + +true +false +false +false + +false + + + test axis 1 + + A + B + C + + + + test axis 2 + + D + E + F + + + + + + + + false + + diff --git a/tests/integration/requirements.txt b/tests/integration/requirements.txt new file mode 100644 index 00000000..28d79770 --- /dev/null +++ b/tests/integration/requirements.txt @@ -0,0 +1 @@ +Jinja2>=3,<4 diff --git a/tests/integration/test_plugins.py b/tests/integration/test_plugins.py index ec1d215e..801e8a47 100644 --- a/tests/integration/test_plugins.py +++ b/tests/integration/test_plugins.py @@ -5,7 +5,9 @@ import typing +import jenkinsapi.plugin import pytest +from jinja2 import Environment, FileSystemLoader from pytest_operator.plugin import OpsTest from .constants import ALLOWED_PLUGINS, INSTALLED_PLUGINS, REMOVED_PLUGINS @@ -142,3 +144,41 @@ async def test_ldap_plugin( assert "User lookup: successful" in str( res.content, encoding="utf-8" ), f"User lookup unsuccessful, {res.content}" + + +@pytest.mark.usefixtures("app_with_allowed_plugins") +async def test_matrix_combinations_parameter_plugin( + ops_test: OpsTest, unit_web_client: UnitWebClient +): + """ + arrange: given a jenkins server with matrix-combinations-parameter plugin installed. + act: when a multi-configuration job is created. + assert: a matrix based test is created. + """ + await install_plugins( + ops_test, unit_web_client.unit, unit_web_client.client, ("matrix-combinations-parameter",) + ) + matrix_project_plugin: jenkinsapi.plugin.Plugin = unit_web_client.client.plugins[ + "matrix-project" + ] + matrix_combinations_plugin: jenkinsapi.plugin.Plugin = unit_web_client.client.plugins[ + "matrix-combinations-parameter" + ] + environment = Environment(loader=FileSystemLoader("tests/integration/files/"), autoescape=True) + template = environment.get_template("matrix_combinations_plugin_job_xml.j2") + job_xml = template.render( + matrix_project_plugin_version=matrix_project_plugin.version, + matrix_combinations_plugin_version=matrix_combinations_plugin.version, + ) + test_name = "matrix-combinations-parameter-test" + unit_web_client.client.create_job(test_name, job_xml) + + test_page = str( + unit_web_client.client.requester.get_url( + f"{unit_web_client.client.baseurl}/job/{test_name}/" + ).content, + encoding="utf-8", + ) + assert ( + "Configuration Matrix" in test_page + ), f"Configuration matrix table not found, {test_page}" diff --git a/tox.ini b/tox.ini index b124975c..197c95da 100644 --- a/tox.ini +++ b/tox.ini @@ -108,6 +108,7 @@ deps = pytest-operator pytest-asyncio -r{toxinidir}/requirements.txt + -r{[vars]tst_path}integration/requirements.txt commands = pytest --tb native --ignore={[vars]tst_path}unit --log-cli-level=INFO -s {posargs}