Files
kubernetes.core/tests/unit/module_utils/test_discoverer.py
Abhijeet Kasurde 91b80b1d1d Enable black formatting test (#259)
Enable black formatting test

SUMMARY
Signed-off-by: Abhijeet Kasurde akasurde@redhat.com
ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME
plugins/action/k8s_info.py
plugins/connection/kubectl.py
plugins/doc_fragments/helm_common_options.py
plugins/doc_fragments/k8s_auth_options.py
plugins/doc_fragments/k8s_delete_options.py
plugins/doc_fragments/k8s_name_options.py
plugins/doc_fragments/k8s_resource_options.py
plugins/doc_fragments/k8s_scale_options.py
plugins/doc_fragments/k8s_state_options.py
plugins/doc_fragments/k8s_wait_options.py
plugins/filter/k8s.py
plugins/inventory/k8s.py
plugins/lookup/k8s.py
plugins/lookup/kustomize.py
plugins/module_utils/ansiblemodule.py
plugins/module_utils/apply.py
plugins/module_utils/args_common.py
plugins/module_utils/client/discovery.py
plugins/module_utils/client/resource.py
plugins/module_utils/common.py
plugins/module_utils/exceptions.py
plugins/module_utils/hashes.py
plugins/module_utils/helm.py
plugins/module_utils/k8sdynamicclient.py
plugins/module_utils/selector.py
plugins/modules/helm.py
plugins/modules/helm_info.py
plugins/modules/helm_plugin.py
plugins/modules/helm_plugin_info.py
plugins/modules/helm_repository.py
plugins/modules/helm_template.py
plugins/modules/k8s.py
plugins/modules/k8s_cluster_info.py
plugins/modules/k8s_cp.py
plugins/modules/k8s_drain.py
plugins/modules/k8s_exec.py
plugins/modules/k8s_info.py
plugins/modules/k8s_json_patch.py
plugins/modules/k8s_log.py
plugins/modules/k8s_rollback.py
plugins/modules/k8s_scale.py
plugins/modules/k8s_service.py
tests/integration/targets/kubernetes/library/test_tempfile.py
tests/unit/module_utils/test_apply.py
tests/unit/module_utils/test_common.py
tests/unit/module_utils/test_discoverer.py
tests/unit/module_utils/test_hashes.py
tests/unit/module_utils/test_marshal.py
tests/unit/module_utils/test_selector.py
tox.ini

Reviewed-by: None <None>
Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: None <None>
2021-10-18 15:32:05 +00:00

166 lines
4.7 KiB
Python

# Copyright [2017] [Red Hat, Inc.]
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import pytest
from kubernetes.client import ApiClient
from kubernetes.dynamic import Resource
from ansible_collections.kubernetes.core.plugins.module_utils.k8sdynamicclient import (
K8SDynamicClient,
)
from ansible_collections.kubernetes.core.plugins.module_utils.client.discovery import (
LazyDiscoverer,
)
from ansible_collections.kubernetes.core.plugins.module_utils.client.resource import (
ResourceList,
)
@pytest.fixture(scope="module")
def mock_namespace():
return Resource(
api_version="v1",
kind="Namespace",
name="namespaces",
namespaced=False,
preferred=True,
prefix="api",
shorter_names=["ns"],
shortNames=["ns"],
singularName="namespace",
verbs=["create", "delete", "get", "list", "patch", "update", "watch"],
)
@pytest.fixture(scope="module")
def mock_templates():
return Resource(
api_version="v1",
kind="Template",
name="templates",
namespaced=True,
preferred=True,
prefix="api",
shorter_names=[],
shortNames=[],
verbs=["create", "delete", "get", "list", "patch", "update", "watch"],
)
@pytest.fixture(scope="module")
def mock_processedtemplates():
return Resource(
api_version="v1",
kind="Template",
name="processedtemplates",
namespaced=True,
preferred=True,
prefix="api",
shorter_names=[],
shortNames=[],
verbs=["create", "delete", "get", "list", "patch", "update", "watch"],
)
@pytest.fixture(scope="module")
def mock_namespace_list(mock_namespace):
ret = ResourceList(
mock_namespace.client,
mock_namespace.group,
mock_namespace.api_version,
mock_namespace.kind,
)
ret._ResourceList__base_resource = mock_namespace
return ret
@pytest.fixture(scope="function", autouse=True)
def setup_client_monkeypatch(
monkeypatch,
mock_namespace,
mock_namespace_list,
mock_templates,
mock_processedtemplates,
):
def mock_load_server_info(self):
self.__version = {"kubernetes": "mock-k8s-version"}
def mock_parse_api_groups(self, request_resources=False):
return {
"api": {
"": {
"v1": {
"Namespace": [mock_namespace],
"NamespaceList": [mock_namespace_list],
"Template": [mock_templates, mock_processedtemplates],
}
}
}
}
monkeypatch.setattr(LazyDiscoverer, "_load_server_info", mock_load_server_info)
monkeypatch.setattr(LazyDiscoverer, "parse_api_groups", mock_parse_api_groups)
@pytest.fixture
def client(request):
return K8SDynamicClient(ApiClient(), discoverer=LazyDiscoverer)
@pytest.mark.parametrize(
("attribute", "value"),
[("name", "namespaces"), ("singular_name", "namespace"), ("short_names", ["ns"])],
)
def test_search_returns_single_and_list(
client, mock_namespace, mock_namespace_list, attribute, value
):
resources = client.resources.search(**{"api_version": "v1", attribute: value})
assert len(resources) == 2
assert mock_namespace in resources
assert mock_namespace_list in resources
@pytest.mark.parametrize(
("attribute", "value"),
[
("kind", "Namespace"),
("name", "namespaces"),
("singular_name", "namespace"),
("short_names", ["ns"]),
],
)
def test_get_returns_only_single(client, mock_namespace, attribute, value):
resource = client.resources.get(**{"api_version": "v1", attribute: value})
assert resource == mock_namespace
def test_get_namespace_list_kind(client, mock_namespace_list):
resource = client.resources.get(api_version="v1", kind="NamespaceList")
assert resource == mock_namespace_list
def test_search_multiple_resources_for_template(
client, mock_templates, mock_processedtemplates
):
resources = client.resources.search(api_version="v1", kind="Template")
assert len(resources) == 2
assert mock_templates in resources
assert mock_processedtemplates in resources