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          )