Exemple #1
0
def virtual_server_setup(request, kube_apis, crd_ingress_controller, ingress_controller_endpoint,
                         test_namespace) -> VirtualServerSetup:
    """
    Prepare Virtual Server Example.

    :param request: internal pytest fixture to parametrize this method:
        {example: virtual-server|virtual-server-tls|..., app_type: simple|split|...}
        'example' is a directory name in TEST_DATA,
        'app_type' is a directory name in TEST_DATA/common/app
    :param kube_apis: client apis
    :param crd_ingress_controller:
    :param ingress_controller_endpoint:
    :param test_namespace:
    :return: VirtualServerSetup
    """
    print("------------------------- Deploy Virtual Server Example -----------------------------------")
    vs_source = f"{TEST_DATA}/{request.param['example']}/standard/virtual-server.yaml"
    vs_name = create_virtual_server_from_yaml(kube_apis.custom_objects,
                                              vs_source,
                                              test_namespace)
    vs_host = get_first_vs_host_from_yaml(vs_source)
    vs_paths = get_paths_from_vs_yaml(vs_source)
    if request.param['app_type']:
        create_example_app(kube_apis, request.param['app_type'], test_namespace)
        wait_until_all_pods_are_ready(kube_apis.v1, test_namespace)

    def fin():
        print("Clean up Virtual Server Example:")
        delete_virtual_server(kube_apis.custom_objects, vs_name, test_namespace)
        if request.param['app_type']:
            delete_common_app(kube_apis, request.param['app_type'], test_namespace)

    request.addfinalizer(fin)

    return VirtualServerSetup(ingress_controller_endpoint, test_namespace, vs_host, vs_name, vs_paths)
def ap_vs_setup(kube_apis, test_namespace, policy_method) -> tuple:
    src_pol_name, vs_name = ap_generic_setup(kube_apis, test_namespace,
                                             test_namespace, policy_method,
                                             waf_spec_vs_src)
    vs_host = get_first_host_from_yaml(waf_spec_vs_src)
    vs_paths = get_paths_from_vs_yaml(waf_spec_vs_src)
    return (src_pol_name, vs_name, vs_host, vs_paths)
Exemple #3
0
    def test_responses_after_virtual_server_update(self, kube_apis,
                                                   crd_ingress_controller,
                                                   virtual_server_setup):
        print("Step 2: update host and paths in the VS and check")
        patch_virtual_server_from_yaml(
            kube_apis.custom_objects, virtual_server_setup.vs_name,
            f"{TEST_DATA}/virtual-server/standard/virtual-server-updated.yaml",
            virtual_server_setup.namespace)
        new_paths = get_paths_from_vs_yaml(
            f"{TEST_DATA}/virtual-server/standard/virtual-server-updated.yaml")
        new_backend_1_url = f"http://{virtual_server_setup.public_endpoint.public_ip}" \
            f":{virtual_server_setup.public_endpoint.port}/{new_paths[0]}"
        new_backend_2_url = f"http://{virtual_server_setup.public_endpoint.public_ip}" \
            f":{virtual_server_setup.public_endpoint.port}/{new_paths[1]}"
        new_host = get_first_vs_host_from_yaml(
            f"{TEST_DATA}/virtual-server/standard/virtual-server-updated.yaml")
        wait_before_test(1)
        resp = requests.get(virtual_server_setup.backend_1_url,
                            headers={"host": virtual_server_setup.vs_host})
        assert resp.status_code == 404
        resp = requests.get(virtual_server_setup.backend_2_url,
                            headers={"host": virtual_server_setup.vs_host})
        assert resp.status_code == 404
        resp = requests.get(new_backend_1_url, headers={"host": new_host})
        assert resp.status_code == 200
        resp = requests.get(new_backend_2_url, headers={"host": new_host})
        assert resp.status_code == 200

        print("Step 3: restore VS and check")
        patch_virtual_server_from_yaml(
            kube_apis.custom_objects, virtual_server_setup.vs_name,
            f"{TEST_DATA}/virtual-server/standard/virtual-server.yaml",
            virtual_server_setup.namespace)
        wait_before_test(1)
        resp = requests.get(new_backend_1_url, headers={"host": new_host})
        assert resp.status_code == 404
        resp = requests.get(new_backend_2_url, headers={"host": new_host})
        assert resp.status_code == 404
        resp = requests.get(virtual_server_setup.backend_1_url,
                            headers={"host": virtual_server_setup.vs_host})
        assert resp.status_code == 200
        resp = requests.get(virtual_server_setup.backend_2_url,
                            headers={"host": virtual_server_setup.vs_host})
        assert resp.status_code == 200