def test_keys_in_main_config(self, cli_arguments, kube_apis, ingress_controller_prerequisites, crd_ingress_controller, virtual_server_setup, clean_up): wait_before_test(1) ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) initial_list = get_events(kube_apis.v1, virtual_server_setup.namespace) data_file = f"{TEST_DATA}/virtual-server-configmap-keys/configmap-validation-keys.yaml" data_file_invalid = f"{TEST_DATA}/virtual-server-configmap-keys/configmap-validation-keys-invalid.yaml" config_path = "/etc/nginx/nginx.conf" print("Step 5: main config: update ConfigMap with valid keys with validation rules") replace_configmap_from_yaml(kube_apis.v1, ingress_controller_prerequisites.config_map['metadata']['name'], ingress_controller_prerequisites.namespace, data_file) expected_values = get_configmap_fields_from_yaml(data_file) wait_before_test(1) step_5_config = get_file_contents(kube_apis.v1, config_path, ic_pod_name, ingress_controller_prerequisites.namespace) step_5_events = get_events(kube_apis.v1, virtual_server_setup.namespace) assert_update_event_count_increased(virtual_server_setup, step_5_events, initial_list) assert_keys_with_validation_in_main_config(step_5_config, expected_values) print("Step 6: main config: update ConfigMap with invalid keys") replace_configmap_from_yaml(kube_apis.v1, ingress_controller_prerequisites.config_map['metadata']['name'], ingress_controller_prerequisites.namespace, data_file_invalid) unexpected_values = get_configmap_fields_from_yaml(data_file_invalid) wait_before_test(1) step_6_config = get_file_contents(kube_apis.v1, config_path, ic_pod_name, ingress_controller_prerequisites.namespace) step_6_events = get_events(kube_apis.v1, virtual_server_setup.namespace) assert_update_event_count_increased(virtual_server_setup, step_6_events, step_5_events) assert_defaults_of_keys_with_validation_in_main_config(step_6_config, unexpected_values) print("Step 7: main config: special case for hash variables") data_file = f"{TEST_DATA}/virtual-server-configmap-keys/configmap-global-variables.yaml" expected_values = get_configmap_fields_from_yaml(data_file) replace_configmap_from_yaml(kube_apis.v1, ingress_controller_prerequisites.config_map['metadata']['name'], ingress_controller_prerequisites.namespace, data_file) wait_before_test(1) step_7_config = get_file_contents(kube_apis.v1, config_path, ic_pod_name, ingress_controller_prerequisites.namespace) step_7_events = get_events(kube_apis.v1, virtual_server_setup.namespace) assert_not_applied_event_emitted(virtual_server_setup, step_7_events, step_6_events) assert_keys_with_validation_in_main_config(step_7_config, expected_values)
def test_keys(self, cli_arguments, kube_apis, ingress_controller_prerequisites, crd_ingress_controller, virtual_server_setup, clean_up): ic_pod_name = get_first_pod_name(kube_apis.v1, ingress_controller_prerequisites.namespace) initial_list = get_events(kube_apis.v1, virtual_server_setup.namespace) print("Step 1: update ConfigMap with valid keys without validation rules") replace_configmap_from_yaml(kube_apis.v1, ingress_controller_prerequisites.config_map['metadata']['name'], ingress_controller_prerequisites.namespace, f"{TEST_DATA}/virtual-server-configmap-keys/configmap-no-validation-keys.yaml") expected_values = get_configmap_fields_from_yaml( f"{TEST_DATA}/virtual-server-configmap-keys/configmap-no-validation-keys.yaml") wait_before_test(1) step_1_events = get_events(kube_apis.v1, virtual_server_setup.namespace) step_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) assert_valid_event_emitted(virtual_server_setup, step_1_events, initial_list) assert_keys_without_validation(step_1_config, expected_values) print("Step 2: update ConfigMap with invalid keys without validation rules") replace_configmap_from_yaml(kube_apis.v1, ingress_controller_prerequisites.config_map['metadata']['name'], ingress_controller_prerequisites.namespace, f"{TEST_DATA}/virtual-server-configmap-keys/configmap-no-validation-keys-invalid.yaml") expected_values = get_configmap_fields_from_yaml( f"{TEST_DATA}/virtual-server-configmap-keys/configmap-no-validation-keys-invalid.yaml") wait_before_test(1) step_2_events = get_events(kube_apis.v1, virtual_server_setup.namespace) step_2_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) assert_invalid_event_emitted(virtual_server_setup, step_2_events, step_1_events) assert_keys_without_validation(step_2_config, expected_values) # to cover the OSS case, this will be changed in the future if cli_arguments['ic-type'] == "nginx-ingress": data_file = f"{TEST_DATA}/virtual-server-configmap-keys/configmap-validation-keys-oss.yaml" data_file_invalid = f"{TEST_DATA}/virtual-server-configmap-keys/configmap-validation-keys-invalid-oss.yaml" else: data_file = f"{TEST_DATA}/virtual-server-configmap-keys/configmap-validation-keys.yaml" data_file_invalid = f"{TEST_DATA}/virtual-server-configmap-keys/configmap-validation-keys-invalid.yaml" print("Step 3: update ConfigMap with valid keys with validation rules") replace_configmap_from_yaml(kube_apis.v1, ingress_controller_prerequisites.config_map['metadata']['name'], ingress_controller_prerequisites.namespace, data_file) expected_values = get_configmap_fields_from_yaml(data_file) wait_before_test(1) step_3_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) step_3_events = get_events(kube_apis.v1, virtual_server_setup.namespace) assert_valid_event_count_increased(virtual_server_setup, step_3_events, step_2_events) assert_keys_with_validation(step_3_config, expected_values) # to cover the OSS case, this will be changed in the future if cli_arguments['ic-type'] == "nginx-ingress": assert_specific_keys_for_nginx_oss(step_3_config, expected_values) else: assert_specific_keys_for_nginx_plus(step_3_config, expected_values) print("Step 4: update ConfigMap with invalid keys") replace_configmap_from_yaml(kube_apis.v1, ingress_controller_prerequisites.config_map['metadata']['name'], ingress_controller_prerequisites.namespace, data_file_invalid) expected_values = get_configmap_fields_from_yaml(data_file_invalid) wait_before_test(1) step_4_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) step_4_events = get_events(kube_apis.v1, virtual_server_setup.namespace) assert_valid_event_count_increased(virtual_server_setup, step_4_events, step_3_events) assert_defaults_of_keys_with_validation(step_4_config, expected_values)