def test_when_option_in_v_s_only(self, kube_apis, ingress_controller_prerequisites,
                                     crd_ingress_controller, virtual_server_setup,
                                     options, expected_strings):
        text = f"{virtual_server_setup.namespace}/{virtual_server_setup.vs_name}"
        vs_event_text = f"Configuration for {text} was added or updated"
        events_vs = get_events(kube_apis.v1, virtual_server_setup.namespace)
        initial_count = assert_event_and_get_count(vs_event_text, events_vs)
        print(f"Case 2: no key in ConfigMap , option specified in VS")
        new_body = generate_item_with_upstream_options(
            f"{TEST_DATA}/virtual-server-upstream-options/standard/virtual-server.yaml",
            options)
        patch_virtual_server(kube_apis.custom_objects,
                             virtual_server_setup.vs_name, virtual_server_setup.namespace, new_body)
        wait_before_test(1)
        ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace)
        config = get_vs_nginx_template_conf(kube_apis.v1,
                                            virtual_server_setup.namespace,
                                            virtual_server_setup.vs_name,
                                            ic_pod_name,
                                            ingress_controller_prerequisites.namespace)
        resp_1 = requests.get(virtual_server_setup.backend_1_url,
                              headers={"host": virtual_server_setup.vs_host})
        resp_2 = requests.get(virtual_server_setup.backend_2_url,
                              headers={"host": virtual_server_setup.vs_host})
        vs_events = get_events(kube_apis.v1, virtual_server_setup.namespace)

        assert_event_count_increased(vs_event_text, initial_count, vs_events)
        for _ in expected_strings:
            assert _ in config
        assert_response_codes(resp_1, resp_2)
Пример #2
0
    def test_update(self, kube_apis, crd_ingress_controller,
                    virtual_server_setup):
        wait_before_test(1)
        text = f"{virtual_server_setup.namespace}/{virtual_server_setup.vs_name}"
        vs_event_text = f"Configuration for {text} was added or updated"
        events_vs = get_events(kube_apis.v1, virtual_server_setup.namespace)
        initial_count = assert_event_and_get_count(vs_event_text, events_vs)
        vs_src = f"{TEST_DATA}/virtual-server-canned-responses/virtual-server-updated.yaml"
        patch_virtual_server_from_yaml(kube_apis.custom_objects,
                                       virtual_server_setup.vs_name, vs_src,
                                       virtual_server_setup.namespace)
        wait_and_assert_status_code(501, virtual_server_setup.backend_1_url,
                                    virtual_server_setup.vs_host)
        resp = requests.get(virtual_server_setup.backend_1_url,
                            headers={"host": virtual_server_setup.vs_host})
        resp_content = resp.content.decode('utf-8')
        assert resp.headers[
            'content-type'] == 'some/type' and resp_content == "{}"

        wait_and_assert_status_code(201, virtual_server_setup.backend_2_url,
                                    virtual_server_setup.vs_host)
        resp = requests.get(virtual_server_setup.backend_2_url,
                            headers={"host": virtual_server_setup.vs_host})
        resp_content = resp.content.decode('utf-8')
        assert resp.headers[
            'content-type'] == 'user-type' and resp_content == "line1\nline2"

        vs_events = get_events(kube_apis.v1, virtual_server_setup.namespace)
        assert_event_count_increased(vs_event_text, initial_count, vs_events)
    def test_responses_and_config_after_disable_tls(
            self, kube_apis, ingress_controller_prerequisites,
            crd_ingress_controller, virtual_server_setup):
        ic_pod_name = get_first_pod_name(
            kube_apis.v1, ingress_controller_prerequisites.namespace)
        text = f"{virtual_server_setup.namespace}/{virtual_server_setup.vs_name}"
        vs_event_text = f"Configuration for {text} was added or updated"
        initial_events_vs = get_events(kube_apis.v1,
                                       virtual_server_setup.namespace)
        initial_count = assert_event_and_get_count(vs_event_text,
                                                   initial_events_vs)
        patch_virtual_server_from_yaml(
            kube_apis.custom_objects, virtual_server_setup.vs_name,
            f"{TEST_DATA}/virtual-server-upstream-tls/virtual-server-disable-tls.yaml",
            virtual_server_setup.namespace)
        wait_before_test(1)
        config = get_vs_nginx_template_conf(
            kube_apis.v1, virtual_server_setup.namespace,
            virtual_server_setup.vs_name, ic_pod_name,
            ingress_controller_prerequisites.namespace)
        resp_1 = requests.get(virtual_server_setup.backend_1_url,
                              headers={"host": virtual_server_setup.vs_host})
        resp_2 = requests.get(virtual_server_setup.backend_2_url,
                              headers={"host": virtual_server_setup.vs_host})
        new_events_vs = get_events(kube_apis.v1,
                                   virtual_server_setup.namespace)

        assert 'proxy_pass https://' not in config
        assert_response_codes(resp_1, resp_2, 200, 400)
        assert_event_count_increased(vs_event_text, initial_count,
                                     new_events_vs)
Пример #4
0
    def test_grpc_flow(self, kube_apis, annotations_grpc_setup,
                       ingress_controller_prerequisites, annotations,
                       expected_strings, unexpected_strings):
        initial_events = get_events(kube_apis.v1,
                                    annotations_grpc_setup.namespace)
        initial_count = get_event_count(
            annotations_grpc_setup.ingress_event_text, initial_events)
        print("Case 5: grpc annotations override http ones")
        new_ing = generate_ingresses_with_annotation(
            annotations_grpc_setup.ingress_src_file, annotations)
        for ing in new_ing:
            if ing['metadata']['name'] == annotations_grpc_setup.ingress_name:
                replace_ingress(kube_apis.extensions_v1_beta1,
                                annotations_grpc_setup.ingress_name,
                                annotations_grpc_setup.namespace, ing)
        wait_before_test(1)
        result_conf = get_ingress_nginx_template_conf(
            kube_apis.v1, annotations_grpc_setup.namespace,
            annotations_grpc_setup.ingress_name,
            annotations_grpc_setup.ingress_pod_name,
            ingress_controller_prerequisites.namespace)
        new_events = get_events(kube_apis.v1, annotations_grpc_setup.namespace)

        assert_event_count_increased(annotations_grpc_setup.ingress_event_text,
                                     initial_count, new_events)
        for _ in expected_strings:
            assert _ in result_conf
        for _ in unexpected_strings:
            assert _ not in result_conf
    def test_update(self, kube_apis, crd_ingress_controller,
                    virtual_server_setup):
        wait_before_test(1)
        text = f"{virtual_server_setup.namespace}/{virtual_server_setup.vs_name}"
        vs_event_text = f"Configuration for {text} was added or updated"
        events_vs = get_events(kube_apis.v1, virtual_server_setup.namespace)
        initial_count = assert_event_and_get_count(vs_event_text, events_vs)
        vs_src = f"{TEST_DATA}/virtual-server-redirects/virtual-server-updated.yaml"
        patch_virtual_server_from_yaml(kube_apis.custom_objects,
                                       virtual_server_setup.vs_name, vs_src,
                                       virtual_server_setup.namespace)
        wait_and_assert_status_code(301,
                                    virtual_server_setup.backend_1_url,
                                    virtual_server_setup.vs_host,
                                    allow_redirects=False)
        resp = requests.get(virtual_server_setup.backend_1_url,
                            headers={"host": virtual_server_setup.vs_host},
                            allow_redirects=False)
        assert resp.headers['location'] == "http://demo.nginx.com"
        wait_and_assert_status_code(302,
                                    virtual_server_setup.backend_2_url,
                                    virtual_server_setup.vs_host,
                                    allow_redirects=False)
        resp = requests.get(virtual_server_setup.backend_2_url,
                            headers={"host": virtual_server_setup.vs_host},
                            allow_redirects=False)
        assert resp.headers['location'] == "http://demo.nginx.com"

        vs_events = get_events(kube_apis.v1, virtual_server_setup.namespace)
        assert_event_count_increased(vs_event_text, initial_count, vs_events)
Пример #6
0
    def test_upstream_zone_size_0(self, cli_arguments, kube_apis,
                                  annotations_setup,
                                  ingress_controller_prerequisites,
                                  annotations):
        initial_events = get_events(kube_apis.v1, annotations_setup.namespace)
        initial_count = get_event_count(annotations_setup.ingress_event_text,
                                        initial_events)
        print("Edge Case: upstream-zone-size is 0")
        new_ing = generate_ingresses_with_annotation(
            annotations_setup.ingress_src_file, annotations)
        for ing in new_ing:
            # in mergeable case this will update master ingress only
            if ing['metadata']['name'] == annotations_setup.ingress_name:
                replace_ingress(kube_apis.extensions_v1_beta1,
                                annotations_setup.ingress_name,
                                annotations_setup.namespace, ing)
        wait_before_test(1)
        result_conf = get_ingress_nginx_template_conf(
            kube_apis.v1, annotations_setup.namespace,
            annotations_setup.ingress_name, annotations_setup.ingress_pod_name,
            ingress_controller_prerequisites.namespace)
        new_events = get_events(kube_apis.v1, annotations_setup.namespace)

        assert_event_count_increased(annotations_setup.ingress_event_text,
                                     initial_count, new_events)
        if cli_arguments["ic-type"] == "nginx-plus-ingress":
            print("Run assertions for Nginx Plus case")
            assert "zone " in result_conf
            assert " 256k;" in result_conf
        elif cli_arguments["ic-type"] == "nginx-ingress":
            print("Run assertions for Nginx OSS case")
            assert "zone " not in result_conf
            assert " 256k;" not in result_conf
Пример #7
0
    def test_validation(self, kube_apis, annotations_setup,
                        ingress_controller_prerequisites, annotations,
                        expected_strings, unexpected_strings):
        initial_events = get_events(kube_apis.v1, annotations_setup.namespace)
        print("Case 6: IC doesn't validate, only nginx validates")
        initial_count = get_event_count(
            annotations_setup.ingress_error_event_text, initial_events)
        new_ing = generate_ingresses_with_annotation(
            annotations_setup.ingress_src_file, annotations)
        for ing in new_ing:
            # in mergeable case this will update master ingress only
            if ing['metadata']['name'] == annotations_setup.ingress_name:
                replace_ingress(kube_apis.extensions_v1_beta1,
                                annotations_setup.ingress_name,
                                annotations_setup.namespace, ing)
        wait_before_test(1)
        result_conf = get_ingress_nginx_template_conf(
            kube_apis.v1, annotations_setup.namespace,
            annotations_setup.ingress_name, annotations_setup.ingress_pod_name,
            ingress_controller_prerequisites.namespace)
        new_events = get_events(kube_apis.v1, annotations_setup.namespace)

        assert_event_count_increased(
            annotations_setup.ingress_error_event_text, initial_count,
            new_events)
        for _ in expected_strings:
            assert _ in result_conf
        for _ in unexpected_strings:
            assert _ not in result_conf
Пример #8
0
    def test_when_annotation_in_configmap_only(
            self, kube_apis, annotations_setup,
            ingress_controller_prerequisites, configmap_file, expected_strings,
            unexpected_strings):
        initial_events = get_events(kube_apis.v1, annotations_setup.namespace)
        initial_count = get_event_count(annotations_setup.ingress_event_text,
                                        initial_events)
        print("Case 3: keys in ConfigMap, no annotations in Ingress")
        replace_ingresses_from_yaml(kube_apis.extensions_v1_beta1,
                                    annotations_setup.namespace,
                                    annotations_setup.ingress_src_file)
        replace_configmap_from_yaml(
            kube_apis.v1,
            ingress_controller_prerequisites.config_map['metadata']['name'],
            ingress_controller_prerequisites.namespace, configmap_file)
        wait_before_test(1)
        result_conf = get_ingress_nginx_template_conf(
            kube_apis.v1, annotations_setup.namespace,
            annotations_setup.ingress_name, annotations_setup.ingress_pod_name,
            ingress_controller_prerequisites.namespace)
        new_events = get_events(kube_apis.v1, annotations_setup.namespace)

        assert_event_count_increased(annotations_setup.ingress_event_text,
                                     initial_count, new_events)
        for _ in expected_strings:
            assert _ in result_conf
        for _ in unexpected_strings:
            assert _ not in result_conf
Пример #9
0
    def test_ing_overrides_configmap(self, kube_apis, annotations_setup,
                                     ingress_controller_prerequisites,
                                     annotations, configmap_file,
                                     expected_strings, unexpected_strings):
        initial_events = get_events(kube_apis.v1, annotations_setup.namespace)
        initial_count = get_event_count(annotations_setup.ingress_event_text,
                                        initial_events)
        print("Case 4: keys in ConfigMap, annotations in Ingress")
        new_ing = generate_ingresses_with_annotation(
            annotations_setup.ingress_src_file, annotations)
        for ing in new_ing:
            # in mergeable case this will update master ingress only
            if ing['metadata']['name'] == annotations_setup.ingress_name:
                replace_ingress(kube_apis.extensions_v1_beta1,
                                annotations_setup.ingress_name,
                                annotations_setup.namespace, ing)
        replace_configmap_from_yaml(
            kube_apis.v1,
            ingress_controller_prerequisites.config_map['metadata']['name'],
            ingress_controller_prerequisites.namespace, configmap_file)
        wait_before_test(1)
        result_conf = get_ingress_nginx_template_conf(
            kube_apis.v1, annotations_setup.namespace,
            annotations_setup.ingress_name, annotations_setup.ingress_pod_name,
            ingress_controller_prerequisites.namespace)
        new_events = get_events(kube_apis.v1, annotations_setup.namespace)

        assert_event_count_increased(annotations_setup.ingress_event_text,
                                     initial_count, new_events)
        for _ in expected_strings:
            assert _ in result_conf
        for _ in unexpected_strings:
            assert _ not in result_conf
    def test_update(self, kube_apis, crd_ingress_controller, v_s_route_setup):
        req_host = f"{v_s_route_setup.public_endpoint.public_ip}:{v_s_route_setup.public_endpoint.port}"
        req_url_1 = f"http://{req_host}{v_s_route_setup.route_m.paths[0]}"
        req_url_2 = f"http://{req_host}{v_s_route_setup.route_m.paths[1]}"
        wait_before_test(1)
        vs_name = f"{v_s_route_setup.namespace}/{v_s_route_setup.vs_name}"
        vsr_name = f"{v_s_route_setup.namespace}/{v_s_route_setup.route_m.name}"
        vsr_event_text = f"Configuration for {vsr_name} was added or updated"
        vs_event_text = f"Configuration for {vs_name} was added or updated"
        events_ns = get_events(kube_apis.v1, v_s_route_setup.namespace)
        initial_count_vs = assert_event_and_get_count(vs_event_text, events_ns)
        initial_count_vsr = assert_event_and_get_count(vsr_event_text, events_ns)
        vsr_src = f"{TEST_DATA}/virtual-server-route-canned-responses/route-multiple-updated.yaml"
        patch_v_s_route_from_yaml(kube_apis.custom_objects,
                                  v_s_route_setup.route_m.name, vsr_src, v_s_route_setup.namespace)
        wait_and_assert_status_code(501, req_url_1, v_s_route_setup.vs_host)
        resp = requests.get(req_url_1, headers={"host": v_s_route_setup.vs_host})
        resp_content = resp.content.decode('utf-8')
        assert resp.headers['content-type'] == 'some/type' and resp_content == "{}"

        wait_and_assert_status_code(201, req_url_2, v_s_route_setup.vs_host)
        resp = requests.get(req_url_2, headers={"host": v_s_route_setup.vs_host})
        resp_content = resp.content.decode('utf-8')
        assert resp.headers['content-type'] == 'user-type' and resp_content == "line1\nline2"

        new_events_ns = get_events(kube_apis.v1, v_s_route_setup.namespace)
        assert_event_count_increased(vs_event_text, initial_count_vs, new_events_ns)
        assert_event_count_increased(vsr_event_text, initial_count_vsr, new_events_ns)
Пример #11
0
 def test_validation(self, kube_apis, annotations_setup,
                     ingress_controller_prerequisites, annotations):
     initial_events = get_events(kube_apis.v1, annotations_setup.namespace)
     print("Case 6: IC doesn't validate, only nginx validates")
     initial_count = get_event_count(
         annotations_setup.ingress_error_event_text, initial_events)
     new_ing = generate_ingresses_with_annotation(
         annotations_setup.ingress_src_file, annotations)
     for ing in new_ing:
         # in mergeable case this will update master ingress only
         if ing['metadata']['name'] == annotations_setup.ingress_name:
             replace_ingress(kube_apis.networking_v1,
                             annotations_setup.ingress_name,
                             annotations_setup.namespace, ing)
     wait_before_test()
     result_conf = get_ingress_nginx_template_conf(
         kube_apis.v1, annotations_setup.namespace,
         annotations_setup.ingress_name, annotations_setup.ingress_pod_name,
         ingress_controller_prerequisites.namespace)
     new_events = get_events(kube_apis.v1, annotations_setup.namespace)
     assert "server {" not in result_conf
     assert "No such file or directory" in result_conf
     assert_event_count_increased(
         annotations_setup.ingress_error_event_text, initial_count,
         new_events)
Пример #12
0
    def test_when_annotation_in_ing_only(self, kube_apis, annotations_setup,
                                         ingress_controller_prerequisites,
                                         annotations, expected_strings,
                                         unexpected_strings):
        initial_events = get_events(kube_apis.v1, annotations_setup.namespace)
        initial_count = get_event_count(annotations_setup.ingress_event_text,
                                        initial_events)
        print("Case 2: no ConfigMap keys, annotations in Ingress only")
        new_ing = generate_ingresses_with_annotation(
            annotations_setup.ingress_src_file, annotations)
        for ing in new_ing:
            # in mergeable case this will update master ingress only
            if ing['metadata']['name'] == annotations_setup.ingress_name:
                replace_ingress(kube_apis.networking_v1,
                                annotations_setup.ingress_name,
                                annotations_setup.namespace, ing)
        wait_before_test(1)
        result_conf = get_ingress_nginx_template_conf(
            kube_apis.v1, annotations_setup.namespace,
            annotations_setup.ingress_name, annotations_setup.ingress_pod_name,
            ingress_controller_prerequisites.namespace)
        new_events = get_events(kube_apis.v1, annotations_setup.namespace)

        assert_event_count_increased(annotations_setup.ingress_event_text,
                                     initial_count, new_events)
        for _ in expected_strings:
            assert _ in result_conf
        for _ in unexpected_strings:
            assert _ not in result_conf
    def test_config_and_events(self, kube_apis,
                               ingress_controller_prerequisites,
                               crd_ingress_controller, v_s_route_setup,
                               v_s_route_app_setup, options, expected_strings):
        expected_strings.append(
            f"location @hc-vs_{v_s_route_setup.namespace}_{v_s_route_setup.vs_name}"
            f"_vsr_{v_s_route_setup.route_m.namespace}_{v_s_route_setup.route_m.name}"
        )
        expected_strings.append(
            f"location @hc-vs_{v_s_route_setup.namespace}_{v_s_route_setup.vs_name}"
            f"_vsr_{v_s_route_setup.route_s.namespace}_{v_s_route_setup.route_s.name}"
        )
        req_url = f"http://{v_s_route_setup.public_endpoint.public_ip}:{v_s_route_setup.public_endpoint.port}"
        text_s = f"{v_s_route_setup.route_s.namespace}/{v_s_route_setup.route_s.name}"
        text_m = f"{v_s_route_setup.route_m.namespace}/{v_s_route_setup.route_m.name}"
        vsr_s_event_text = f"Configuration for {text_s} was added or updated"
        vsr_m_event_text = f"Configuration for {text_m} was added or updated"
        events_ns_m = get_events(kube_apis.v1,
                                 v_s_route_setup.route_m.namespace)
        events_ns_s = get_events(kube_apis.v1,
                                 v_s_route_setup.route_s.namespace)
        initial_count_vsr_m = assert_event_and_get_count(
            vsr_m_event_text, events_ns_m)
        initial_count_vsr_s = assert_event_and_get_count(
            vsr_s_event_text, events_ns_s)
        print(f"Case 2: no key in ConfigMap, option specified in VSR")
        new_body_m = generate_item_with_upstream_options(
            f"{TEST_DATA}/virtual-server-route-upstream-options/route-multiple.yaml",
            options)
        new_body_s = generate_item_with_upstream_options(
            f"{TEST_DATA}/virtual-server-route-upstream-options/route-single.yaml",
            options)
        patch_v_s_route(kube_apis.custom_objects, v_s_route_setup.route_m.name,
                        v_s_route_setup.route_m.namespace, new_body_m)
        patch_v_s_route(kube_apis.custom_objects, v_s_route_setup.route_s.name,
                        v_s_route_setup.route_s.namespace, new_body_s)
        wait_before_test(1)
        ic_pod_name = get_first_pod_name(
            kube_apis.v1, ingress_controller_prerequisites.namespace)
        config = get_vs_nginx_template_conf(
            kube_apis.v1, v_s_route_setup.namespace, v_s_route_setup.vs_name,
            ic_pod_name, ingress_controller_prerequisites.namespace)
        resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}",
                              headers={"host": v_s_route_setup.vs_host})
        resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}",
                              headers={"host": v_s_route_setup.vs_host})
        vsr_s_events = get_events(kube_apis.v1,
                                  v_s_route_setup.route_s.namespace)
        vsr_m_events = get_events(kube_apis.v1,
                                  v_s_route_setup.route_m.namespace)

        assert_event_count_increased(vsr_m_event_text, initial_count_vsr_m,
                                     vsr_m_events)
        assert_event_count_increased(vsr_s_event_text, initial_count_vsr_s,
                                     vsr_s_events)
        for _ in expected_strings:
            assert _ in config
        assert_response_codes(resp_1, resp_2)
Пример #14
0
    def test_minion_overrides_master(self, kube_apis, annotations_setup, ingress_controller_prerequisites,
                                     yaml_file, expected_strings, unexpected_strings):
        initial_events = get_events(kube_apis.v1, annotations_setup.namespace)
        initial_count = get_event_count(annotations_setup.ingress_event_text, initial_events)
        print("Case 7: minion annotation overrides master")
        replace_ingresses_from_yaml(kube_apis.extensions_v1_beta1, annotations_setup.namespace, yaml_file)
        wait_before_test(1)
        result_conf = get_ingress_nginx_template_conf(kube_apis.v1,
                                                      annotations_setup.namespace,
                                                      annotations_setup.ingress_name,
                                                      annotations_setup.ingress_pod_name,
                                                      ingress_controller_prerequisites.namespace)
        new_events = get_events(kube_apis.v1, annotations_setup.namespace)

        assert_event_count_increased(annotations_setup.ingress_event_text, initial_count, new_events)
        for _ in expected_strings:
            assert _ in result_conf
        for _ in unexpected_strings:
            assert _ not in result_conf
Пример #15
0
    def test_update(self, kube_apis, crd_ingress_controller, v_s_route_setup):
        req_host = f"{v_s_route_setup.public_endpoint.public_ip}:{v_s_route_setup.public_endpoint.port}"
        req_url_1 = f"http://{req_host}{v_s_route_setup.route_m.paths[0]}"
        req_url_2 = f"http://{req_host}{v_s_route_setup.route_m.paths[1]}"
        vs_name = f"{v_s_route_setup.namespace}/{v_s_route_setup.vs_name}"
        vsr_name = f"{v_s_route_setup.namespace}/{v_s_route_setup.route_m.name}"
        vs_event_text = f"Configuration for {vs_name} was added or updated"
        vsr_event_text = f"Configuration for {vsr_name} was added or updated"
        wait_before_test(1)
        events_ns = get_events(kube_apis.v1, v_s_route_setup.namespace)
        initial_count_vs = assert_event_and_get_count(vs_event_text, events_ns)
        initial_count_vsr = assert_event_and_get_count(vsr_event_text,
                                                       events_ns)
        vsr_src = f"{TEST_DATA}/virtual-server-route-redirects/route-multiple-updated.yaml"
        patch_v_s_route_from_yaml(kube_apis.custom_objects,
                                  v_s_route_setup.route_m.name, vsr_src,
                                  v_s_route_setup.namespace)
        wait_and_assert_status_code(301,
                                    req_url_1,
                                    v_s_route_setup.vs_host,
                                    allow_redirects=False)
        resp = requests.get(req_url_1,
                            headers={"host": v_s_route_setup.vs_host},
                            allow_redirects=False)
        assert resp.headers['location'] == "http://demo.nginx.com"

        wait_and_assert_status_code(302,
                                    req_url_2,
                                    v_s_route_setup.vs_host,
                                    allow_redirects=False)
        resp = requests.get(req_url_2,
                            headers={"host": v_s_route_setup.vs_host},
                            allow_redirects=False)
        assert resp.headers['location'] == "http://demo.nginx.com"

        new_events_ns = get_events(kube_apis.v1, v_s_route_setup.namespace)
        assert_event_count_increased(vs_event_text, initial_count_vs,
                                     new_events_ns)
        assert_event_count_increased(vsr_event_text, initial_count_vsr,
                                     new_events_ns)
    def test_responses_and_config_after_disable_tls(
            self, kube_apis, ingress_controller_prerequisites,
            crd_ingress_controller, v_s_route_setup,
            v_s_route_secure_app_setup):
        ic_pod_name = get_first_pod_name(
            kube_apis.v1, ingress_controller_prerequisites.namespace)
        text_s = f"{v_s_route_setup.route_s.namespace}/{v_s_route_setup.route_s.name}"
        text_m = f"{v_s_route_setup.route_m.namespace}/{v_s_route_setup.route_m.name}"
        text_vs = f"{v_s_route_setup.namespace}/{v_s_route_setup.vs_name}"
        vsr_s_event_text = f"Configuration for {text_s} was added or updated"
        vsr_m_event_text = f"Configuration for {text_m} was added or updated"
        vs_event_text = f"Configuration for {text_vs} was added or updated"
        initial_events_ns_m = get_events(kube_apis.v1,
                                         v_s_route_setup.route_m.namespace)
        initial_events_ns_s = get_events(kube_apis.v1,
                                         v_s_route_setup.route_s.namespace)
        initial_count_vsr_m = assert_event_and_get_count(
            vsr_m_event_text, initial_events_ns_m)
        initial_count_vsr_s = assert_event_and_get_count(
            vsr_s_event_text, initial_events_ns_s)
        initial_count_vs = assert_event_and_get_count(vs_event_text,
                                                      initial_events_ns_m)
        patch_v_s_route_from_yaml(
            kube_apis.custom_objects, v_s_route_setup.route_s.name,
            f"{TEST_DATA}/virtual-server-route-upstream-tls/route-single-disable-tls.yaml",
            v_s_route_setup.route_s.namespace)
        wait_before_test(1)
        config = get_vs_nginx_template_conf(
            kube_apis.v1, v_s_route_setup.namespace, v_s_route_setup.vs_name,
            ic_pod_name, ingress_controller_prerequisites.namespace)
        req_url = f"http://{v_s_route_setup.public_endpoint.public_ip}:{v_s_route_setup.public_endpoint.port}"
        resp_1 = requests.get(f"{req_url}{v_s_route_setup.route_m.paths[0]}",
                              headers={"host": v_s_route_setup.vs_host})
        resp_2 = requests.get(f"{req_url}{v_s_route_setup.route_s.paths[0]}",
                              headers={"host": v_s_route_setup.vs_host})
        new_events_ns_m = get_events(kube_apis.v1,
                                     v_s_route_setup.route_m.namespace)
        new_events_ns_s = get_events(kube_apis.v1,
                                     v_s_route_setup.route_s.namespace)

        assert 'proxy_pass https://' not in config
        assert_response_codes(resp_1, resp_2, 200, 400)
        assert_event_count_increased(vsr_m_event_text, initial_count_vsr_m,
                                     new_events_ns_m)
        assert_event_count_increased(vs_event_text, initial_count_vs,
                                     new_events_ns_m)
        assert_event_count_increased(vsr_s_event_text, initial_count_vsr_s,
                                     new_events_ns_s)