|
1 | 1 | import pytest
|
| 2 | +from settings import TEST_DATA |
2 | 3 | from suite.resources_utils import (
|
| 4 | + create_example_app, |
| 5 | + create_items_from_yaml, |
| 6 | + create_secret_from_yaml, |
| 7 | + delete_common_app, |
| 8 | + delete_items_from_yaml, |
| 9 | + delete_secret, |
| 10 | + ensure_connection_to_public_endpoint, |
3 | 11 | get_first_pod_name,
|
| 12 | + get_ingress_nginx_template_conf, |
4 | 13 | get_nginx_template_conf,
|
5 | 14 | get_ts_nginx_template_conf,
|
6 | 15 | wait_before_test,
|
| 16 | + wait_until_all_pods_are_ready, |
7 | 17 | )
|
8 | 18 | from suite.vs_vsr_resources_utils import get_vs_nginx_template_conf
|
| 19 | +from suite.yaml_utils import get_name_from_yaml |
9 | 20 |
|
10 | 21 |
|
11 | 22 | @pytest.mark.vs
|
| 23 | +@pytest.mark.ts |
12 | 24 | @pytest.mark.parametrize(
|
13 | 25 | "crd_ingress_controller, virtual_server_setup, transport_server_setup",
|
14 | 26 | [
|
|
27 | 39 | ],
|
28 | 40 | indirect=True,
|
29 | 41 | )
|
30 |
| -class TestDisableIpv6: |
31 |
| - def test_ipv6_is_disabled( |
| 42 | +class TestDisableIpv6VsTs: |
| 43 | + def test_ipv6_listeners_not_in_config( |
32 | 44 | self,
|
33 | 45 | kube_apis,
|
34 | 46 | ingress_controller_prerequisites,
|
@@ -56,3 +68,81 @@ def test_ipv6_is_disabled(
|
56 | 68 | assert "listen [::]:" not in nginx_config
|
57 | 69 | assert "listen [::]:" not in vs_config
|
58 | 70 | assert "listen [::]:" not in ts_config
|
| 71 | + |
| 72 | + |
| 73 | +class IngressSetup: |
| 74 | + """ |
| 75 | + Encapsulate the ingress_setup details. |
| 76 | +
|
| 77 | + Attributes: |
| 78 | + ingress_name (str): |
| 79 | + ingress_pod_name (str): |
| 80 | + namespace (str): |
| 81 | + """ |
| 82 | + |
| 83 | + def __init__(self, ingress_name, ingress_pod_name, namespace): |
| 84 | + self.ingress_name = ingress_name |
| 85 | + self.ingress_pod_name = ingress_pod_name |
| 86 | + self.namespace = namespace |
| 87 | + |
| 88 | + |
| 89 | +@pytest.fixture(scope="class") |
| 90 | +def ingress_setup( |
| 91 | + request, |
| 92 | + kube_apis, |
| 93 | + ingress_controller_prerequisites, |
| 94 | + ingress_controller_endpoint, |
| 95 | + ingress_controller, |
| 96 | + test_namespace, |
| 97 | +) -> IngressSetup: |
| 98 | + print("------------------------- Deploy Disable IPV6 Example -----------------------------------") |
| 99 | + secret_name = create_secret_from_yaml(kube_apis.v1, test_namespace, f"{TEST_DATA}/smoke/smoke-secret.yaml") |
| 100 | + create_items_from_yaml(kube_apis, f"{TEST_DATA}/smoke/standard/smoke-ingress.yaml", test_namespace) |
| 101 | + ingress_name = get_name_from_yaml(f"{TEST_DATA}/smoke/standard/smoke-ingress.yaml") |
| 102 | + create_example_app(kube_apis, "simple", test_namespace) |
| 103 | + wait_until_all_pods_are_ready(kube_apis.v1, test_namespace) |
| 104 | + |
| 105 | + ensure_connection_to_public_endpoint( |
| 106 | + ingress_controller_endpoint.public_ip, |
| 107 | + ingress_controller_endpoint.port, |
| 108 | + ingress_controller_endpoint.port_ssl, |
| 109 | + ) |
| 110 | + ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) |
| 111 | + |
| 112 | + def fin(): |
| 113 | + print("Clean up the Disable IPV6 Application:") |
| 114 | + delete_common_app(kube_apis, "simple", test_namespace) |
| 115 | + delete_items_from_yaml(kube_apis, f"{TEST_DATA}/smoke/standard/smoke-ingress.yaml", test_namespace) |
| 116 | + delete_secret(kube_apis.v1, secret_name, test_namespace) |
| 117 | + |
| 118 | + request.addfinalizer(fin) |
| 119 | + |
| 120 | + return IngressSetup(ingress_name, ic_pod_name, test_namespace) |
| 121 | + |
| 122 | + |
| 123 | +@pytest.mark.ingresses |
| 124 | +@pytest.mark.parametrize( |
| 125 | + "ingress_controller", |
| 126 | + [ |
| 127 | + pytest.param({"extra_args": ["-disable-ipv6=true"]}), |
| 128 | + ], |
| 129 | + indirect=True, |
| 130 | +) |
| 131 | +class TestDisableIPV6Ingress: |
| 132 | + def test_ipv6_listeners_not_in_config( |
| 133 | + self, |
| 134 | + kube_apis, |
| 135 | + ingress_setup, |
| 136 | + ingress_controller_prerequisites, |
| 137 | + ): |
| 138 | + wait_before_test() |
| 139 | + nginx_config = get_nginx_template_conf(kube_apis.v1, ingress_controller_prerequisites.namespace) |
| 140 | + upstream_conf = get_ingress_nginx_template_conf( |
| 141 | + kube_apis.v1, |
| 142 | + ingress_setup.namespace, |
| 143 | + ingress_setup.ingress_name, |
<
3E14
code> | 144 | + ingress_setup.ingress_pod_name, |
| 145 | + ingress_controller_prerequisites.namespace, |
| 146 | + ) |
| 147 | + assert "listen [::]:" not in nginx_config |
| 148 | + assert "listen [::]:" not in upstream_conf |
0 commit comments