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)