mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-26 21:33:02 +00:00
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>
166 lines
4.7 KiB
Python
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
|