github.com/nginxinc/kubernetes-ingress@v1.12.5/tests/suite/test_virtual_server_status.py (about) 1 import pytest 2 from kubernetes.client.rest import ApiException 3 from suite.resources_utils import wait_before_test 4 from suite.custom_resources_utils import ( 5 read_custom_resource, 6 patch_virtual_server_from_yaml, 7 ) 8 from settings import TEST_DATA 9 10 @pytest.mark.vs 11 @pytest.mark.parametrize( 12 "crd_ingress_controller, virtual_server_setup", 13 [ 14 ( 15 {"type": "complete", "extra_args": [f"-enable-custom-resources", f"-enable-leader-election=false"],}, 16 {"example": "virtual-server-status", "app_type": "simple",}, 17 ) 18 ], 19 indirect=True, 20 ) 21 class TestVirtualServerStatus: 22 23 def patch_valid_vs(self, kube_apis, virtual_server_setup) -> None: 24 """ 25 Function to revert vs deployment to valid state 26 """ 27 patch_src = f"{TEST_DATA}/virtual-server-status/standard/virtual-server.yaml" 28 patch_virtual_server_from_yaml( 29 kube_apis.custom_objects, 30 virtual_server_setup.vs_name, 31 patch_src, 32 virtual_server_setup.namespace, 33 ) 34 35 @pytest.mark.smoke 36 def test_status_valid( 37 self, kube_apis, crd_ingress_controller, virtual_server_setup, 38 ): 39 """ 40 Test VirtualServer status with a valid fields in yaml 41 """ 42 response = read_custom_resource( 43 kube_apis.custom_objects, 44 virtual_server_setup.namespace, 45 "virtualservers", 46 virtual_server_setup.vs_name, 47 ) 48 assert ( 49 response["status"] 50 and response["status"]["reason"] == "AddedOrUpdated" 51 and response["status"]["state"] == "Valid" 52 ) 53 54 def test_status_invalid( 55 self, kube_apis, crd_ingress_controller, virtual_server_setup, 56 ): 57 """ 58 Test VirtualServer status with a invalid path pattern 59 """ 60 patch_src = f"{TEST_DATA}/virtual-server-status/invalid-state.yaml" 61 patch_virtual_server_from_yaml( 62 kube_apis.custom_objects, 63 virtual_server_setup.vs_name, 64 patch_src, 65 virtual_server_setup.namespace, 66 ) 67 wait_before_test() 68 response = read_custom_resource( 69 kube_apis.custom_objects, 70 virtual_server_setup.namespace, 71 "virtualservers", 72 virtual_server_setup.vs_name, 73 ) 74 self.patch_valid_vs(kube_apis, virtual_server_setup) 75 assert ( 76 response["status"] 77 and response["status"]["reason"] == "Rejected" 78 and response["status"]["state"] == "Invalid" 79 ) 80 81 @pytest.mark.skip_for_nginx_oss 82 def test_status_warning( 83 self, kube_apis, crd_ingress_controller, virtual_server_setup, 84 ): 85 """ 86 Test VirtualServer status with conflicting Upstream fields 87 Only for N+ since Slow-start isn 88 """ 89 patch_src = f"{TEST_DATA}/virtual-server-status/warning-state.yaml" 90 patch_virtual_server_from_yaml( 91 kube_apis.custom_objects, 92 virtual_server_setup.vs_name, 93 patch_src, 94 virtual_server_setup.namespace, 95 ) 96 wait_before_test() 97 response = read_custom_resource( 98 kube_apis.custom_objects, 99 virtual_server_setup.namespace, 100 "virtualservers", 101 virtual_server_setup.vs_name, 102 ) 103 self.patch_valid_vs(kube_apis, virtual_server_setup) 104 assert ( 105 response["status"] 106 and response["status"]["reason"] == "AddedOrUpdatedWithWarning" 107 and response["status"]["state"] == "Warning" 108 )