github.com/nginxinc/kubernetes-ingress@v1.12.5/tests/suite/test_virtual_server_rewrites.py (about) 1 import pytest 2 import requests 3 from kubernetes.client.rest import ApiException 4 from suite.resources_utils import wait_before_test 5 from suite.custom_resources_utils import ( 6 read_custom_resource, 7 patch_virtual_server_from_yaml, 8 ) 9 from settings import TEST_DATA 10 11 @pytest.mark.vs 12 @pytest.mark.parametrize( 13 "crd_ingress_controller, virtual_server_setup", 14 [ 15 ( 16 {"type": "complete", "extra_args": [f"-enable-custom-resources"],}, 17 {"example": "virtual-server-status", "app_type": "simple",}, 18 ) 19 ], 20 indirect=True, 21 ) 22 @pytest.mark.rewrite 23 class TestVirtualServerRewrites: 24 25 def patch_standard_vs(self, kube_apis, virtual_server_setup) -> None: 26 """ 27 Deploy standard virtual-server 28 """ 29 patch_src = f"{TEST_DATA}/virtual-server-rewrites/standard/virtual-server.yaml" 30 patch_virtual_server_from_yaml( 31 kube_apis.custom_objects, 32 virtual_server_setup.vs_name, 33 patch_src, 34 virtual_server_setup.namespace, 35 ) 36 37 def test_prefix_rewrite( 38 self, kube_apis, crd_ingress_controller, virtual_server_setup, 39 ): 40 """ 41 Test VirtualServer URI rewrite using prefix 42 """ 43 patch_src = f"{TEST_DATA}/virtual-server-rewrites/virtual-server-rewrite-prefix.yaml" 44 patch_virtual_server_from_yaml( 45 kube_apis.custom_objects, 46 virtual_server_setup.vs_name, 47 patch_src, 48 virtual_server_setup.namespace, 49 ) 50 wait_before_test() 51 resp1 = requests.get(virtual_server_setup.backend_1_url+"/", 52 headers={"host": virtual_server_setup.vs_host}) 53 resp2 = requests.get(virtual_server_setup.backend_1_url+"/abc", 54 headers={"host": virtual_server_setup.vs_host}) 55 resp3 = requests.get(virtual_server_setup.backend_2_url, 56 headers={"host": virtual_server_setup.vs_host}) 57 resp4 = requests.get(virtual_server_setup.backend_2_url+"/", 58 headers={"host": virtual_server_setup.vs_host}) 59 resp5 = requests.get(virtual_server_setup.backend_2_url+"/abc", 60 headers={"host": virtual_server_setup.vs_host}) 61 self.patch_standard_vs(kube_apis, virtual_server_setup) 62 63 assert ("URI: /\nRequest" in resp1.text 64 and "URI: /abc\nRequest" in resp2.text 65 and "URI: /backend2_1\nRequest" in resp3.text 66 and "URI: /backend2_1/\nRequest" in resp4.text 67 and "URI: /backend2_1/abc\nRequest" in resp5.text) 68 69 def test_regex_rewrite( 70 self, kube_apis, crd_ingress_controller, virtual_server_setup, 71 ): 72 """ 73 Test VirtualServer URI rewrite using regex 74 """ 75 patch_src = f"{TEST_DATA}/virtual-server-rewrites/virtual-server-rewrite-regex.yaml" 76 patch_virtual_server_from_yaml( 77 kube_apis.custom_objects, 78 virtual_server_setup.vs_name, 79 patch_src, 80 virtual_server_setup.namespace, 81 ) 82 wait_before_test() 83 resp1 = requests.get(virtual_server_setup.backend_1_url, 84 headers={"host": virtual_server_setup.vs_host}) 85 resp2 = requests.get(virtual_server_setup.backend_1_url+"/", 86 headers={"host": virtual_server_setup.vs_host}) 87 resp3 = requests.get(virtual_server_setup.backend_2_url+"/abc", 88 headers={"host": virtual_server_setup.vs_host}) 89 self.patch_standard_vs(kube_apis, virtual_server_setup) 90 91 assert ("URI: /\nRequest" in resp1.text 92 and "URI: /\nRequest" in resp2.text 93 and "URI: /abc\nRequest" in resp3.text)