github.com/nginxinc/kubernetes-ingress@v1.12.5/tests/suite/test_transport_server_status.py (about) 1 import pytest 2 3 from suite.resources_utils import wait_before_test 4 from suite.custom_resources_utils import ( 5 read_ts, 6 patch_ts, 7 ) 8 from settings import TEST_DATA 9 10 11 @pytest.mark.ts 12 @pytest.mark.parametrize( 13 "crd_ingress_controller, transport_server_setup", 14 [ 15 ( 16 { 17 "type": "complete", 18 "extra_args": 19 [ 20 "-global-configuration=nginx-ingress/nginx-configuration", 21 "-enable-leader-election=false" 22 ] 23 }, 24 {"example": "transport-server-status", "app_type": "simple"}, 25 ) 26 ], 27 indirect=True, 28 ) 29 class TestTransportServerStatus: 30 31 def restore_ts(self, kube_apis, transport_server_setup) -> None: 32 """ 33 Function to revert a TransportServer resource to a valid state. 34 """ 35 patch_src = f"{TEST_DATA}/transport-server-status/standard/transport-server.yaml" 36 patch_ts( 37 kube_apis.custom_objects, 38 transport_server_setup.name, 39 patch_src, 40 transport_server_setup.namespace, 41 ) 42 43 @pytest.mark.smoke 44 def test_status_valid( 45 self, kube_apis, crd_ingress_controller, transport_server_setup, 46 ): 47 """ 48 Test TransportServer status with valid fields in yaml. 49 """ 50 response = read_ts( 51 kube_apis.custom_objects, 52 transport_server_setup.namespace, 53 transport_server_setup.name, 54 ) 55 assert ( 56 response["status"] 57 and response["status"]["reason"] == "AddedOrUpdated" 58 and response["status"]["state"] == "Valid" 59 ) 60 61 def test_status_warning( 62 self, kube_apis, crd_ingress_controller, transport_server_setup, 63 ): 64 """ 65 Test TransportServer status with a missing listener. 66 """ 67 patch_src = f"{TEST_DATA}/transport-server-status/rejected-warning.yaml" 68 patch_ts( 69 kube_apis.custom_objects, 70 transport_server_setup.name, 71 patch_src, 72 transport_server_setup.namespace, 73 ) 74 wait_before_test() 75 response = read_ts( 76 kube_apis.custom_objects, 77 transport_server_setup.namespace, 78 transport_server_setup.name, 79 ) 80 self.restore_ts(kube_apis, transport_server_setup) 81 assert ( 82 response["status"] 83 and response["status"]["reason"] == "Rejected" 84 and response["status"]["state"] == "Warning" 85 ) 86 87 def test_status_invalid( 88 self, kube_apis, crd_ingress_controller, transport_server_setup, 89 ): 90 """ 91 Test TransportServer status with an invalid protocol. 92 """ 93 patch_src = f"{TEST_DATA}/transport-server-status/rejected-invalid.yaml" 94 patch_ts( 95 kube_apis.custom_objects, 96 transport_server_setup.name, 97 patch_src, 98 transport_server_setup.namespace, 99 ) 100 wait_before_test() 101 response = read_ts( 102 kube_apis.custom_objects, 103 transport_server_setup.namespace, 104 transport_server_setup.name, 105 ) 106 self.restore_ts(kube_apis, transport_server_setup) 107 assert ( 108 response["status"] 109 and response["status"]["reason"] == "Rejected" 110 and response["status"]["state"] == "Invalid" 111 )