summaryrefslogtreecommitdiffstats
path: root/ansible_collections/community/okd/tests
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 16:03:42 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 16:03:42 +0000
commit66cec45960ce1d9c794e9399de15c138acb18aed (patch)
tree59cd19d69e9d56b7989b080da7c20ef1a3fe2a5a /ansible_collections/community/okd/tests
parentInitial commit. (diff)
downloadansible-66cec45960ce1d9c794e9399de15c138acb18aed.tar.xz
ansible-66cec45960ce1d9c794e9399de15c138acb18aed.zip
Adding upstream version 7.3.0+dfsg.upstream/7.3.0+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/community/okd/tests')
-rw-r--r--ansible_collections/community/okd/tests/config.yml2
-rw-r--r--ansible_collections/community/okd/tests/sanity/ignore-2.10.txt4
-rw-r--r--ansible_collections/community/okd/tests/sanity/ignore-2.11.txt169
-rw-r--r--ansible_collections/community/okd/tests/sanity/ignore-2.12.txt3
-rw-r--r--ansible_collections/community/okd/tests/sanity/ignore-2.13.txt3
-rw-r--r--ansible_collections/community/okd/tests/sanity/ignore-2.14.txt3
-rw-r--r--ansible_collections/community/okd/tests/sanity/ignore-2.15.txt3
-rw-r--r--ansible_collections/community/okd/tests/sanity/ignore-2.9.txt3
-rw-r--r--ansible_collections/community/okd/tests/unit/plugins/module_utils/test_ldap_dn.py32
-rw-r--r--ansible_collections/community/okd/tests/unit/plugins/module_utils/test_ldap_sync_config.py63
-rw-r--r--ansible_collections/community/okd/tests/unit/plugins/module_utils/test_openshift_docker_image.py152
-rw-r--r--ansible_collections/community/okd/tests/unit/plugins/modules/test_openshift_adm_migrate_template_instances.py236
-rw-r--r--ansible_collections/community/okd/tests/unit/requirements.txt1
13 files changed, 674 insertions, 0 deletions
diff --git a/ansible_collections/community/okd/tests/config.yml b/ansible_collections/community/okd/tests/config.yml
new file mode 100644
index 00000000..9e402bda
--- /dev/null
+++ b/ansible_collections/community/okd/tests/config.yml
@@ -0,0 +1,2 @@
+modules:
+ python_requires: ">=3.6"
diff --git a/ansible_collections/community/okd/tests/sanity/ignore-2.10.txt b/ansible_collections/community/okd/tests/sanity/ignore-2.10.txt
new file mode 100644
index 00000000..54e1d304
--- /dev/null
+++ b/ansible_collections/community/okd/tests/sanity/ignore-2.10.txt
@@ -0,0 +1,4 @@
+plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
+plugins/modules/k8s.py validate-modules:return-syntax-error
+plugins/module_utils/k8s.py pylint:bad-option-value
+plugins/modules/openshift_process.py validate-modules:parameter-type-not-in-doc
diff --git a/ansible_collections/community/okd/tests/sanity/ignore-2.11.txt b/ansible_collections/community/okd/tests/sanity/ignore-2.11.txt
new file mode 100644
index 00000000..0ade1e27
--- /dev/null
+++ b/ansible_collections/community/okd/tests/sanity/ignore-2.11.txt
@@ -0,0 +1,169 @@
+plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
+plugins/modules/k8s.py validate-modules:return-syntax-error
+plugins/module_utils/k8s.py pylint:bad-option-value
+plugins/modules/openshift_process.py validate-modules:parameter-type-not-in-doc
+plugins/connection/oc.py import-2.6!skip
+plugins/connection/oc.py import-2.7!skip
+plugins/connection/oc.py import-3.5!skip
+plugins/connection/oc.py compile-2.6!skip
+plugins/connection/oc.py compile-2.7!skip
+plugins/connection/oc.py compile-3.5!skip
+plugins/inventory/openshift.py import-2.6!skip
+plugins/inventory/openshift.py import-2.7!skip
+plugins/inventory/openshift.py import-3.5!skip
+plugins/inventory/openshift.py compile-2.6!skip
+plugins/inventory/openshift.py compile-2.7!skip
+plugins/inventory/openshift.py compile-3.5!skip
+plugins/modules/openshift_route.py import-2.6!skip
+plugins/modules/openshift_route.py import-2.7!skip
+plugins/modules/openshift_route.py import-3.5!skip
+plugins/modules/openshift_route.py compile-2.6!skip
+plugins/modules/openshift_route.py compile-2.7!skip
+plugins/modules/openshift_route.py compile-3.5!skip
+plugins/modules/k8s.py import-2.6!skip
+plugins/modules/k8s.py import-2.7!skip
+plugins/modules/k8s.py import-3.5!skip
+plugins/modules/k8s.py compile-2.6!skip
+plugins/modules/k8s.py compile-2.7!skip
+plugins/modules/k8s.py compile-3.5!skip
+plugins/modules/openshift_process.py import-2.6!skip
+plugins/modules/openshift_process.py import-2.7!skip
+plugins/modules/openshift_process.py import-3.5!skip
+plugins/modules/openshift_process.py compile-2.6!skip
+plugins/modules/openshift_process.py compile-2.7!skip
+plugins/modules/openshift_process.py compile-3.5!skip
+plugins/modules/openshift_adm_groups_sync.py import-2.6!skip
+plugins/modules/openshift_adm_groups_sync.py import-2.7!skip
+plugins/modules/openshift_adm_groups_sync.py import-3.5!skip
+plugins/modules/openshift_adm_groups_sync.py compile-2.6!skip
+plugins/modules/openshift_adm_groups_sync.py compile-2.7!skip
+plugins/modules/openshift_adm_groups_sync.py compile-3.5!skip
+plugins/modules/openshift_adm_migrate_template_instances.py import-2.6!skip
+plugins/modules/openshift_adm_migrate_template_instances.py import-2.7!skip
+plugins/modules/openshift_adm_migrate_template_instances.py import-3.5!skip
+plugins/modules/openshift_adm_migrate_template_instances.py compile-2.6!skip
+plugins/modules/openshift_adm_migrate_template_instances.py compile-2.7!skip
+plugins/modules/openshift_adm_migrate_template_instances.py compile-3.5!skip
+plugins/modules/openshift_adm_prune_auth.py import-2.6!skip
+plugins/modules/openshift_adm_prune_auth.py import-2.7!skip
+plugins/modules/openshift_adm_prune_auth.py import-3.5!skip
+plugins/modules/openshift_adm_prune_auth.py compile-2.6!skip
+plugins/modules/openshift_adm_prune_auth.py compile-2.7!skip
+plugins/modules/openshift_adm_prune_auth.py compile-3.5!skip
+plugins/modules/openshift_adm_prune_deployments.py import-2.6!skip
+plugins/modules/openshift_adm_prune_deployments.py import-2.7!skip
+plugins/modules/openshift_adm_prune_deployments.py import-3.5!skip
+plugins/modules/openshift_adm_prune_deployments.py compile-2.6!skip
+plugins/modules/openshift_adm_prune_deployments.py compile-2.7!skip
+plugins/modules/openshift_adm_prune_deployments.py compile-3.5!skip
+plugins/modules/openshift_adm_prune_images.py import-2.6!skip
+plugins/modules/openshift_adm_prune_images.py import-2.7!skip
+plugins/modules/openshift_adm_prune_images.py import-3.5!skip
+plugins/modules/openshift_adm_prune_images.py compile-2.6!skip
+plugins/modules/openshift_adm_prune_images.py compile-2.7!skip
+plugins/modules/openshift_adm_prune_images.py compile-3.5!skip
+plugins/modules/openshift_auth.py import-2.6!skip
+plugins/modules/openshift_auth.py import-2.7!skip
+plugins/modules/openshift_auth.py import-3.5!skip
+plugins/modules/openshift_auth.py compile-2.6!skip
+plugins/modules/openshift_auth.py compile-2.7!skip
+plugins/modules/openshift_auth.py compile-3.5!skip
+plugins/modules/openshift_import_image.py import-2.6!skip
+plugins/modules/openshift_import_image.py import-2.7!skip
+plugins/modules/openshift_import_image.py import-3.5!skip
+plugins/modules/openshift_import_image.py compile-2.6!skip
+plugins/modules/openshift_import_image.py compile-2.7!skip
+plugins/modules/openshift_import_image.py compile-3.5!skip
+plugins/modules/openshift_registry_info.py import-2.6!skip
+plugins/modules/openshift_registry_info.py import-2.7!skip
+plugins/modules/openshift_registry_info.py import-3.5!skip
+plugins/modules/openshift_registry_info.py compile-2.6!skip
+plugins/modules/openshift_registry_info.py compile-2.7!skip
+plugins/modules/openshift_registry_info.py compile-3.5!skip
+plugins/module_utils/k8s.py import-2.6!skip
+plugins/module_utils/k8s.py import-2.7!skip
+plugins/module_utils/k8s.py import-3.5!skip
+plugins/module_utils/k8s.py compile-2.6!skip
+plugins/module_utils/k8s.py compile-2.7!skip
+plugins/module_utils/k8s.py compile-3.5!skip
+plugins/module_utils/openshift_process.py import-2.6!skip
+plugins/module_utils/openshift_process.py import-2.7!skip
+plugins/module_utils/openshift_process.py import-3.5!skip
+plugins/module_utils/openshift_process.py compile-2.6!skip
+plugins/module_utils/openshift_process.py compile-2.7!skip
+plugins/module_utils/openshift_process.py compile-3.5!skip
+plugins/module_utils/openshift_adm_prune_auth.py import-2.6!skip
+plugins/module_utils/openshift_adm_prune_auth.py import-2.7!skip
+plugins/module_utils/openshift_adm_prune_auth.py import-3.5!skip
+plugins/module_utils/openshift_adm_prune_auth.py compile-2.6!skip
+plugins/module_utils/openshift_adm_prune_auth.py compile-2.7!skip
+plugins/module_utils/openshift_adm_prune_auth.py compile-3.5!skip
+plugins/module_utils/openshift_adm_prune_deployments.py import-2.6!skip
+plugins/module_utils/openshift_adm_prune_deployments.py import-2.7!skip
+plugins/module_utils/openshift_adm_prune_deployments.py import-3.5!skip
+plugins/module_utils/openshift_adm_prune_deployments.py compile-2.6!skip
+plugins/module_utils/openshift_adm_prune_deployments.py compile-2.7!skip
+plugins/module_utils/openshift_adm_prune_deployments.py compile-3.5!skip
+plugins/module_utils/openshift_ldap.py import-2.6!skip
+plugins/module_utils/openshift_ldap.py import-2.7!skip
+plugins/module_utils/openshift_ldap.py import-3.5!skip
+plugins/module_utils/openshift_ldap.py compile-2.6!skip
+plugins/module_utils/openshift_ldap.py compile-2.7!skip
+plugins/module_utils/openshift_ldap.py compile-3.5!skip
+plugins/module_utils/openshift_adm_prune_images.py import-2.6!skip
+plugins/module_utils/openshift_adm_prune_images.py import-2.7!skip
+plugins/module_utils/openshift_adm_prune_images.py import-3.5!skip
+plugins/module_utils/openshift_adm_prune_images.py compile-2.6!skip
+plugins/module_utils/openshift_adm_prune_images.py compile-2.7!skip
+plugins/module_utils/openshift_adm_prune_images.py compile-3.5!skip
+plugins/module_utils/openshift_docker_image.py import-2.6!skip
+plugins/module_utils/openshift_docker_image.py import-2.7!skip
+plugins/module_utils/openshift_docker_image.py import-3.5!skip
+plugins/module_utils/openshift_docker_image.py compile-2.6!skip
+plugins/module_utils/openshift_docker_image.py compile-2.7!skip
+plugins/module_utils/openshift_docker_image.py compile-3.5!skip
+plugins/module_utils/openshift_import_image.py import-2.6!skip
+plugins/module_utils/openshift_import_image.py import-2.7!skip
+plugins/module_utils/openshift_import_image.py import-3.5!skip
+plugins/module_utils/openshift_import_image.py compile-2.6!skip
+plugins/module_utils/openshift_import_image.py compile-2.7!skip
+plugins/module_utils/openshift_import_image.py compile-3.5!skip
+plugins/module_utils/openshift_groups.py import-2.6!skip
+plugins/module_utils/openshift_groups.py import-2.7!skip
+plugins/module_utils/openshift_groups.py import-3.5!skip
+plugins/module_utils/openshift_groups.py compile-2.6!skip
+plugins/module_utils/openshift_groups.py compile-2.7!skip
+plugins/module_utils/openshift_groups.py compile-3.5!skip
+plugins/module_utils/openshift_images_common.py import-2.6!skip
+plugins/module_utils/openshift_images_common.py import-2.7!skip
+plugins/module_utils/openshift_images_common.py import-3.5!skip
+plugins/module_utils/openshift_images_common.py compile-2.6!skip
+plugins/module_utils/openshift_images_common.py compile-2.7!skip
+plugins/module_utils/openshift_images_common.py compile-3.5!skip
+plugins/module_utils/openshift_registry.py import-2.6!skip
+plugins/module_utils/openshift_registry.py import-2.7!skip
+plugins/module_utils/openshift_registry.py import-3.5!skip
+plugins/module_utils/openshift_registry.py compile-2.6!skip
+plugins/module_utils/openshift_registry.py compile-2.7!skip
+plugins/module_utils/openshift_registry.py compile-3.5!skip
+plugins/module_utils/openshift_builds.py import-2.6!skip
+plugins/module_utils/openshift_builds.py import-2.7!skip
+plugins/module_utils/openshift_builds.py import-3.5!skip
+plugins/module_utils/openshift_builds.py compile-2.6!skip
+plugins/module_utils/openshift_builds.py compile-2.7!skip
+plugins/module_utils/openshift_builds.py compile-3.5!skip
+plugins/modules/openshift_build.py import-2.6!skip
+plugins/modules/openshift_build.py import-2.7!skip
+plugins/modules/openshift_build.py import-3.5!skip
+plugins/modules/openshift_build.py compile-2.6!skip
+plugins/modules/openshift_build.py compile-2.7!skip
+plugins/modules/openshift_build.py compile-3.5!skip
+plugins/modules/openshift_adm_prune_builds.py import-2.6!skip
+plugins/modules/openshift_adm_prune_builds.py import-2.7!skip
+plugins/modules/openshift_adm_prune_builds.py import-3.5!skip
+plugins/modules/openshift_adm_prune_builds.py compile-2.6!skip
+plugins/modules/openshift_adm_prune_builds.py compile-2.7!skip
+plugins/modules/openshift_adm_prune_builds.py compile-3.5!skip
+plugins/module_utils/openshift_common.py import-2.6!skip
+plugins/module_utils/openshift_common.py import-2.7!skip
+plugins/module_utils/openshift_common.py import-3.5!skip \ No newline at end of file
diff --git a/ansible_collections/community/okd/tests/sanity/ignore-2.12.txt b/ansible_collections/community/okd/tests/sanity/ignore-2.12.txt
new file mode 100644
index 00000000..2fd2bdc9
--- /dev/null
+++ b/ansible_collections/community/okd/tests/sanity/ignore-2.12.txt
@@ -0,0 +1,3 @@
+plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
+plugins/modules/k8s.py validate-modules:return-syntax-error
+plugins/modules/openshift_process.py validate-modules:parameter-type-not-in-doc \ No newline at end of file
diff --git a/ansible_collections/community/okd/tests/sanity/ignore-2.13.txt b/ansible_collections/community/okd/tests/sanity/ignore-2.13.txt
new file mode 100644
index 00000000..2fd2bdc9
--- /dev/null
+++ b/ansible_collections/community/okd/tests/sanity/ignore-2.13.txt
@@ -0,0 +1,3 @@
+plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
+plugins/modules/k8s.py validate-modules:return-syntax-error
+plugins/modules/openshift_process.py validate-modules:parameter-type-not-in-doc \ No newline at end of file
diff --git a/ansible_collections/community/okd/tests/sanity/ignore-2.14.txt b/ansible_collections/community/okd/tests/sanity/ignore-2.14.txt
new file mode 100644
index 00000000..2fd2bdc9
--- /dev/null
+++ b/ansible_collections/community/okd/tests/sanity/ignore-2.14.txt
@@ -0,0 +1,3 @@
+plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
+plugins/modules/k8s.py validate-modules:return-syntax-error
+plugins/modules/openshift_process.py validate-modules:parameter-type-not-in-doc \ No newline at end of file
diff --git a/ansible_collections/community/okd/tests/sanity/ignore-2.15.txt b/ansible_collections/community/okd/tests/sanity/ignore-2.15.txt
new file mode 100644
index 00000000..2fd2bdc9
--- /dev/null
+++ b/ansible_collections/community/okd/tests/sanity/ignore-2.15.txt
@@ -0,0 +1,3 @@
+plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
+plugins/modules/k8s.py validate-modules:return-syntax-error
+plugins/modules/openshift_process.py validate-modules:parameter-type-not-in-doc \ No newline at end of file
diff --git a/ansible_collections/community/okd/tests/sanity/ignore-2.9.txt b/ansible_collections/community/okd/tests/sanity/ignore-2.9.txt
new file mode 100644
index 00000000..a4699707
--- /dev/null
+++ b/ansible_collections/community/okd/tests/sanity/ignore-2.9.txt
@@ -0,0 +1,3 @@
+plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
+plugins/module_utils/k8s.py pylint:bad-option-value
+plugins/modules/openshift_process.py validate-modules:parameter-type-not-in-doc
diff --git a/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_ldap_dn.py b/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_ldap_dn.py
new file mode 100644
index 00000000..5835f36d
--- /dev/null
+++ b/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_ldap_dn.py
@@ -0,0 +1,32 @@
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+
+from ansible_collections.community.okd.plugins.module_utils.openshift_ldap import (
+ openshift_equal_dn,
+ openshift_ancestorof_dn
+)
+import pytest
+
+try:
+ import ldap
+except ImportError:
+ pytestmark = pytest.mark.skip("This test requires the python-ldap library")
+
+
+def test_equal_dn():
+
+ assert openshift_equal_dn("cn=unit,ou=users,dc=ansible,dc=com", "cn=unit,ou=users,dc=ansible,dc=com")
+ assert not openshift_equal_dn("cn=unit,ou=users,dc=ansible,dc=com", "cn=units,ou=users,dc=ansible,dc=com")
+ assert not openshift_equal_dn("cn=unit,ou=users,dc=ansible,dc=com", "cn=unit,ou=user,dc=ansible,dc=com")
+ assert not openshift_equal_dn("cn=unit,ou=users,dc=ansible,dc=com", "cn=unit,ou=users,dc=ansible,dc=org")
+
+
+def test_ancestor_of_dn():
+
+ assert not openshift_ancestorof_dn("cn=unit,ou=users,dc=ansible,dc=com", "cn=unit,ou=users,dc=ansible,dc=com")
+ assert not openshift_ancestorof_dn("cn=unit,ou=users,dc=ansible,dc=com", "cn=units,ou=users,dc=ansible,dc=com")
+ assert openshift_ancestorof_dn("ou=users,dc=ansible,dc=com", "cn=john,ou=users,dc=ansible,dc=com")
+ assert openshift_ancestorof_dn("ou=users,dc=ansible,dc=com", "cn=mathew,ou=users,dc=ansible,dc=com")
+ assert not openshift_ancestorof_dn("ou=users,dc=ansible,dc=com", "cn=mathew,ou=users,dc=ansible,dc=org")
diff --git a/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_ldap_sync_config.py b/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_ldap_sync_config.py
new file mode 100644
index 00000000..1a8ef67e
--- /dev/null
+++ b/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_ldap_sync_config.py
@@ -0,0 +1,63 @@
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+
+from ansible_collections.community.okd.plugins.module_utils.openshift_ldap import (
+ validate_ldap_sync_config,
+)
+
+
+def test_missing_url():
+ config = dict(
+ kind="LDAPSyncConfig",
+ apiVersion="v1",
+ insecure=True
+ )
+ err = validate_ldap_sync_config(config)
+ assert err == "url should be non empty attribute."
+
+
+def test_binddn_and_bindpwd_linked():
+ """
+ one of bind_dn and bind_pwd cannot be set alone
+ """
+ config = dict(
+ kind="LDAPSyncConfig",
+ apiVersion="v1",
+ url="ldap://LDAP_SERVICE_IP:389",
+ insecure=True,
+ bindDN="cn=admin,dc=example,dc=org"
+ )
+
+ credentials_error = "bindDN and bindPassword must both be specified, or both be empty."
+
+ assert validate_ldap_sync_config(config) == credentials_error
+
+ config = dict(
+ kind="LDAPSyncConfig",
+ apiVersion="v1",
+ url="ldap://LDAP_SERVICE_IP:389",
+ insecure=True,
+ bindPassword="testing1223"
+ )
+
+ assert validate_ldap_sync_config(config) == credentials_error
+
+
+def test_insecure_connection():
+ config = dict(
+ kind="LDAPSyncConfig",
+ apiVersion="v1",
+ url="ldaps://LDAP_SERVICE_IP:389",
+ insecure=True,
+ )
+
+ assert validate_ldap_sync_config(config) == "Cannot use ldaps scheme with insecure=true."
+
+ config.update(dict(
+ url="ldap://LDAP_SERVICE_IP:389",
+ ca="path/to/ca/file"
+ ))
+
+ assert validate_ldap_sync_config(config) == "Cannot specify a ca with insecure=true."
diff --git a/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_openshift_docker_image.py b/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_openshift_docker_image.py
new file mode 100644
index 00000000..99cf15cc
--- /dev/null
+++ b/ansible_collections/community/okd/tests/unit/plugins/module_utils/test_openshift_docker_image.py
@@ -0,0 +1,152 @@
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+
+from ansible_collections.community.okd.plugins.module_utils.openshift_docker_image import (
+ convert_storage_to_bytes,
+ parse_docker_image_ref,
+)
+import pytest
+
+
+def test_convert_storage_to_bytes():
+
+ data = [
+ ("1000", 1000),
+ ("1000Ki", 1000 * 1024),
+ ("890Ki", 890 * 1024),
+ ("890Mi", 890 * 1024 * 1024),
+ ("90Gi", 90 * 1024 * 1024 * 1024),
+ ("192Ti", 192 * 1024 * 1024 * 1024 * 1024),
+ ("452Pi", 452 * 1024 * 1024 * 1024 * 1024 * 1024),
+ ("23Ei", 23 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024),
+ ]
+
+ for x in data:
+ result = convert_storage_to_bytes(x[0])
+ assert result == x[1]
+
+ failed = "123ki"
+ with pytest.raises(ValueError):
+ convert_storage_to_bytes(failed)
+
+
+def validate_docker_response(resp, **kwargs):
+ assert isinstance(resp, dict)
+ for key in ("hostname", "digest", "tag", "name", "namespace"):
+ assert key in resp
+
+ hostname = kwargs.get("hostname", "docker.io")
+ assert resp["hostname"] == hostname
+
+ namespace = kwargs.get("namespace")
+ assert resp["namespace"] == namespace
+
+ name = kwargs.get("name")
+ assert resp["name"] == name
+
+ digest = kwargs.get("digest")
+ assert resp["digest"] == digest
+
+ tag = kwargs.get("tag")
+ assert resp["tag"] == tag
+
+
+def test_parse_docker_image_ref_valid_image_with_digest():
+
+ image = "registry.access.redhat.com/ubi8/dotnet-21@sha256:f7718f5efd3436e781ee4322c92ab0c4ae63e61f5b36f1473a57874cc3522669"
+ response, err = parse_docker_image_ref(image)
+ assert err is None
+
+ validate_docker_response(response,
+ hostname="registry.access.redhat.com",
+ namespace="ubi8",
+ name="dotnet-21",
+ digest="sha256:f7718f5efd3436e781ee4322c92ab0c4ae63e61f5b36f1473a57874cc3522669")
+
+
+def test_parse_docker_image_ref_valid_image_with_tag_latest():
+
+ image = "registry.access.redhat.com/ubi8/dotnet-21:latest"
+ response, err = parse_docker_image_ref(image)
+ assert err is None
+
+ validate_docker_response(response,
+ hostname="registry.access.redhat.com",
+ namespace="ubi8",
+ name="dotnet-21",
+ tag="latest")
+
+
+def test_parse_docker_image_ref_valid_image_with_tag_int():
+
+ image = "registry.access.redhat.com/ubi8/dotnet-21:0.0.1"
+ response, err = parse_docker_image_ref(image)
+ assert err is None
+
+ validate_docker_response(response,
+ hostname="registry.access.redhat.com",
+ namespace="ubi8",
+ name="dotnet-21",
+ tag="0.0.1")
+
+
+def test_parse_docker_image_ref_invalid_image():
+
+ # The hex value of the sha256 is not valid
+ image = "registry.access.redhat.com/dotnet-21@sha256:f7718f5efd3436e781ee4322c92ab0c4ae63e61f5b36f1473a57874cc3522"
+ response, err = parse_docker_image_ref(image)
+ assert err and err.startswith("Invalid length for digest hex")
+
+
+def test_parse_docker_image_ref_valid_image_without_hostname():
+
+ image = "ansible:2.10.0"
+ response, err = parse_docker_image_ref(image)
+ assert err is None
+
+ validate_docker_response(response, name="ansible", tag="2.10.0")
+
+
+def test_parse_docker_image_ref_valid_image_without_hostname_and_with_digest():
+
+ image = "ansible@sha256:f7718f5efd3436e781ee4322c92ab0c4ae63e61f5b36f1473a57874cc3522669"
+ response, err = parse_docker_image_ref(image)
+ assert err is None
+
+ validate_docker_response(response, name="ansible", digest="sha256:f7718f5efd3436e781ee4322c92ab0c4ae63e61f5b36f1473a57874cc3522669")
+
+
+def test_parse_docker_image_ref_valid_image_with_name_only():
+
+ image = "ansible"
+ response, err = parse_docker_image_ref(image)
+ assert err is None
+
+ validate_docker_response(response, name="ansible")
+
+
+def test_parse_docker_image_ref_valid_image_without_hostname_with_namespace_and_name():
+
+ image = "ibmcom/pause@sha256:fcaff905397ba63fd376d0c3019f1f1cb6e7506131389edbcb3d22719f1ae54d"
+ response, err = parse_docker_image_ref(image)
+ assert err is None
+
+ validate_docker_response(response,
+ name="pause",
+ namespace="ibmcom",
+ digest="sha256:fcaff905397ba63fd376d0c3019f1f1cb6e7506131389edbcb3d22719f1ae54d")
+
+
+def test_parse_docker_image_ref_valid_image_with_complex_namespace_name():
+
+ image = "registry.redhat.io/jboss-webserver-5/webserver54-openjdk11-tomcat9-openshift-rhel7:1.0"
+ response, err = parse_docker_image_ref(image)
+ assert err is None
+
+ validate_docker_response(response,
+ hostname="registry.redhat.io",
+ name="webserver54-openjdk11-tomcat9-openshift-rhel7",
+ namespace="jboss-webserver-5",
+ tag="1.0")
diff --git a/ansible_collections/community/okd/tests/unit/plugins/modules/test_openshift_adm_migrate_template_instances.py b/ansible_collections/community/okd/tests/unit/plugins/modules/test_openshift_adm_migrate_template_instances.py
new file mode 100644
index 00000000..256bef0a
--- /dev/null
+++ b/ansible_collections/community/okd/tests/unit/plugins/modules/test_openshift_adm_migrate_template_instances.py
@@ -0,0 +1,236 @@
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+
+import pytest
+
+from ansible_collections.community.okd.plugins.modules.openshift_adm_migrate_template_instances import (
+ OpenShiftMigrateTemplateInstances,
+)
+
+
+testdata = [
+ ("input", "output"),
+ [
+ (
+ {
+ "status": {
+ "objects": [
+ {"ref": {"kind": "DeploymentConfig", "apiVersion": "v1"}}
+ ]
+ }
+ },
+ [
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "DeploymentConfig",
+ "apiVersion": "apps.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ),
+ (
+ {"status": {"objects": [{"ref": {"kind": "DeploymentConfig"}}]}},
+ [
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "DeploymentConfig",
+ "apiVersion": "apps.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ),
+ (
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "DeploymentConfig",
+ "apiVersion": "apps.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ },
+ [],
+ ),
+ (
+ {
+ "status": {
+ "objects": [{"ref": {"kind": "BuildConfig", "apiVersion": "v1"}}]
+ }
+ },
+ [
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "BuildConfig",
+ "apiVersion": "build.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ),
+ (
+ {"status": {"objects": [{"ref": {"kind": "BuildConfig"}}]}},
+ [
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "BuildConfig",
+ "apiVersion": "build.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ),
+ (
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "BuildConfig",
+ "apiVersion": "build.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ },
+ [],
+ ),
+ (
+ {"status": {"objects": [{"ref": {"kind": "Build", "apiVersion": "v1"}}]}},
+ [
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "Build",
+ "apiVersion": "build.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ),
+ (
+ {"status": {"objects": [{"ref": {"kind": "Build"}}]}},
+ [
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "Build",
+ "apiVersion": "build.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ),
+ (
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "Build",
+ "apiVersion": "build.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ },
+ [],
+ ),
+ (
+ {"status": {"objects": [{"ref": {"kind": "Route", "apiVersion": "v1"}}]}},
+ [
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "Route",
+ "apiVersion": "route.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ),
+ (
+ {"status": {"objects": [{"ref": {"kind": "Route"}}]}},
+ [
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "Route",
+ "apiVersion": "route.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ),
+ (
+ {
+ "status": {
+ "objects": [
+ {
+ "ref": {
+ "kind": "Route",
+ "apiVersion": "route.openshift.io/v1",
+ }
+ }
+ ]
+ }
+ },
+ [],
+ ),
+ (
+ {
+ "status": {
+ "objects": [{"ref": {"kind": "FakeKind", "apiVersion": "v1"}}]
+ }
+ },
+ [],
+ ),
+ ],
+]
+
+
+@pytest.mark.parametrize(*testdata)
+def test_templateinstance_migrations(input, output):
+ assert OpenShiftMigrateTemplateInstances.perform_migrations(input) == output
diff --git a/ansible_collections/community/okd/tests/unit/requirements.txt b/ansible_collections/community/okd/tests/unit/requirements.txt
new file mode 100644
index 00000000..e079f8a6
--- /dev/null
+++ b/ansible_collections/community/okd/tests/unit/requirements.txt
@@ -0,0 +1 @@
+pytest