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          )