github.com/nginxinc/kubernetes-ingress@v1.12.5/tests/suite/test_virtual_server_advanced_routing.py (about) 1 import pytest 2 import requests 3 4 from settings import TEST_DATA 5 from suite.custom_resources_utils import patch_virtual_server_from_yaml 6 from suite.resources_utils import wait_before_test, ensure_response_from_backend 7 8 9 def execute_assertions(resp_1, resp_2, resp_3): 10 assert resp_1.status_code == 200 11 assert "Server name: backend1-" in resp_1.text 12 assert resp_2.status_code == 200 13 assert "Server name: backend3-" in resp_2.text 14 assert resp_3.status_code == 200 15 assert "Server name: backend4-" in resp_3.text 16 17 18 def ensure_responses_from_backends(req_url, host) -> None: 19 ensure_response_from_backend(req_url, host, {"x-version": "future"}) 20 ensure_response_from_backend(req_url, host, {"x-version": "deprecated"}) 21 ensure_response_from_backend(req_url, host, {"x-version-invalid": "deprecated"}) 22 23 24 @pytest.mark.vs 25 @pytest.mark.smoke 26 @pytest.mark.parametrize('crd_ingress_controller, virtual_server_setup', 27 [({"type": "complete", "extra_args": [f"-enable-custom-resources"]}, 28 {"example": "virtual-server-advanced-routing", "app_type": "advanced-routing"})], 29 indirect=True) 30 class TestAdvancedRouting: 31 def test_flow_with_header(self, kube_apis, crd_ingress_controller, virtual_server_setup): 32 ensure_responses_from_backends(virtual_server_setup.backend_1_url, virtual_server_setup.vs_host) 33 34 resp_1 = requests.get(virtual_server_setup.backend_1_url, 35 headers={"host": virtual_server_setup.vs_host, "x-version": "future"}) 36 resp_2 = requests.get(virtual_server_setup.backend_1_url, 37 headers={"host": virtual_server_setup.vs_host, "x-version": "deprecated"}) 38 resp_3 = requests.get(virtual_server_setup.backend_1_url, 39 headers={"host": virtual_server_setup.vs_host, "x-version-invalid": "deprecated"}) 40 execute_assertions(resp_1, resp_2, resp_3) 41 42 def test_flow_with_argument(self, kube_apis, crd_ingress_controller, virtual_server_setup): 43 patch_virtual_server_from_yaml(kube_apis.custom_objects, 44 virtual_server_setup.vs_name, 45 f"{TEST_DATA}/virtual-server-advanced-routing/virtual-server-argument.yaml", 46 virtual_server_setup.namespace) 47 wait_before_test(1) 48 49 resp_1 = requests.get(virtual_server_setup.backend_1_url + "?arg1=v1", 50 headers={"host": virtual_server_setup.vs_host}) 51 resp_2 = requests.get(virtual_server_setup.backend_1_url + "?arg1=v2", 52 headers={"host": virtual_server_setup.vs_host}) 53 resp_3 = requests.get(virtual_server_setup.backend_1_url + "?argument1=v1", 54 headers={"host": virtual_server_setup.vs_host}) 55 execute_assertions(resp_1, resp_2, resp_3) 56 57 def test_flow_with_cookie(self, kube_apis, crd_ingress_controller, virtual_server_setup): 58 patch_virtual_server_from_yaml(kube_apis.custom_objects, 59 virtual_server_setup.vs_name, 60 f"{TEST_DATA}/virtual-server-advanced-routing/virtual-server-cookie.yaml", 61 virtual_server_setup.namespace) 62 wait_before_test(1) 63 64 resp_1 = requests.get(virtual_server_setup.backend_1_url, 65 headers={"host": virtual_server_setup.vs_host}, cookies={"user": "some"}) 66 resp_2 = requests.get(virtual_server_setup.backend_1_url, 67 headers={"host": virtual_server_setup.vs_host}, cookies={"user": "bad"}) 68 resp_3 = requests.get(virtual_server_setup.backend_1_url, 69 headers={"host": virtual_server_setup.vs_host}, cookies={"user": "anonymous"}) 70 execute_assertions(resp_1, resp_2, resp_3) 71 72 def test_flow_with_variable(self, kube_apis, crd_ingress_controller, virtual_server_setup): 73 patch_virtual_server_from_yaml(kube_apis.custom_objects, 74 virtual_server_setup.vs_name, 75 f"{TEST_DATA}/virtual-server-advanced-routing/virtual-server-variable.yaml", 76 virtual_server_setup.namespace) 77 wait_before_test(1) 78 79 resp_1 = requests.get(virtual_server_setup.backend_1_url, headers={"host": virtual_server_setup.vs_host}) 80 resp_2 = requests.post(virtual_server_setup.backend_1_url, headers={"host": virtual_server_setup.vs_host}) 81 resp_3 = requests.put(virtual_server_setup.backend_1_url, headers={"host": virtual_server_setup.vs_host}) 82 execute_assertions(resp_1, resp_2, resp_3) 83 84 def test_flow_with_complex_conditions(self, kube_apis, crd_ingress_controller, virtual_server_setup): 85 patch_virtual_server_from_yaml(kube_apis.custom_objects, 86 virtual_server_setup.vs_name, 87 f"{TEST_DATA}/virtual-server-advanced-routing/virtual-server-complex.yaml", 88 virtual_server_setup.namespace) 89 wait_before_test(1) 90 91 resp_1 = requests.get(virtual_server_setup.backend_1_url + "?arg1=v1", 92 headers={"host": virtual_server_setup.vs_host, 93 "x-version": "future"}, cookies={"user": "some"}) 94 resp_2 = requests.post(virtual_server_setup.backend_1_url + "?arg1=v2", 95 headers={"host": virtual_server_setup.vs_host, 96 "x-version": "deprecated"}, cookies={"user": "bad"}) 97 resp_3 = requests.get(virtual_server_setup.backend_1_url + "?arg1=v2", 98 headers={"host": virtual_server_setup.vs_host, 99 "x-version": "deprecated"}, cookies={"user": "bad"}) 100 execute_assertions(resp_1, resp_2, resp_3)