From 7c2c224cf0fe76948e4159d51887f927ae5b0756 Mon Sep 17 00:00:00 2001 From: Rich Megginson Date: Wed, 21 Oct 2026 15:02:22 -0600 Subject: [PATCH] test: check invalid inputs for correct error message In tests_invalid_input we need to check that the role returns the correct error message to ensure that the role is failing in the correct way, with an error that is meaningful and actionable for the end user. Assisted-by: Codex using model Sol medium 6 Signed-off-by: Rich Megginson --- tests/tests_invalid_input.yml | 69 +++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/tests/tests_invalid_input.yml b/tests/tests_invalid_input.yml index ce78a5f8..dfe5a18d 100644 --- a/tests/tests_invalid_input.yml +++ b/tests/tests_invalid_input.yml @@ -5,6 +5,13 @@ # that outcome. - name: Verify invalid parameters are rejected hosts: all + vars: + __invalid_input_failure_messages: >- + {{ ([ansible_failed_result.msg | default('') | string, + ansible_failed_result.msg.msg | default('') | string] + + (ansible_failed_result.results | default([]) + | map(attribute='msg') | map('default', '') | list)) + | join(' ') }} tasks: - name: Run invalid input tests block: @@ -30,6 +37,11 @@ - name: Mark invalid kernel_settings_purge type rejected ansible.builtin.set_fact: __invalid_input_purge_type_failed: true + when: + - >- + "argument 'kernel_settings_purge' is of type" in __invalid_input_failure_messages + - >- + 'unable to convert to bool' in __invalid_input_failure_messages - name: Assert invalid kernel_settings_purge type was rejected ansible.builtin.assert: @@ -49,6 +61,11 @@ - name: Mark invalid kernel_settings_reboot_ok type rejected ansible.builtin.set_fact: __invalid_input_reboot_ok_type_failed: true + when: + - >- + "argument 'kernel_settings_reboot_ok' is of type" in __invalid_input_failure_messages + - >- + 'unable to convert to bool' in __invalid_input_failure_messages - name: Assert invalid kernel_settings_reboot_ok type was rejected ansible.builtin.assert: @@ -72,6 +89,9 @@ - name: Mark kernel_settings_sysctl string rejected ansible.builtin.set_fact: __invalid_input_sysctl_string_failed: true + when: + - >- + 'kernel_settings_sysctl must be a list of dictionaries' in __invalid_input_failure_messages - name: Assert kernel_settings_sysctl as string failed validation ansible.builtin.assert: @@ -92,6 +112,11 @@ - name: Mark kernel_settings_sysctl invalid key rejected ansible.builtin.set_fact: __invalid_input_sysctl_bad_key_failed: true + when: + - >- + 'kernel_settings_sysctl[0] is invalid:' in __invalid_input_failure_messages + - >- + 'invalid_key_name' in __invalid_input_failure_messages - name: Assert kernel_settings_sysctl invalid key failed validation ansible.builtin.assert: @@ -113,6 +138,11 @@ - name: Mark kernel_settings_sysctl single-setting mapping rejected ansible.builtin.set_fact: __invalid_input_sysctl_single_dict_failed: true + when: + - >- + 'kernel_settings_sysctl must be a list of dictionaries' in __invalid_input_failure_messages + - >- + 'got dict' in __invalid_input_failure_messages - name: Assert kernel_settings_sysctl single-setting mapping failed validation ansible.builtin.assert: @@ -134,6 +164,11 @@ - name: Mark kernel_settings_sysctl empty sentinel extra keys rejected ansible.builtin.set_fact: __invalid_input_sysctl_empty_extra_failed: true + when: + - >- + 'kernel_settings_sysctl must be a list of dictionaries' in __invalid_input_failure_messages + - >- + 'got dict' in __invalid_input_failure_messages - name: Assert kernel_settings_sysctl empty sentinel extra keys failed validation ansible.builtin.assert: @@ -154,6 +189,11 @@ - name: Mark kernel_settings_sysctl missing name rejected ansible.builtin.set_fact: __invalid_input_sysctl_missing_name_failed: true + when: + - >- + 'kernel_settings_sysctl[0] is invalid:' in __invalid_input_failure_messages + - >- + "'value': 379724" in __invalid_input_failure_messages - name: Assert kernel_settings_sysctl missing name failed validation ansible.builtin.assert: @@ -174,6 +214,11 @@ - name: Mark kernel_settings_sysctl invalid previous rejected ansible.builtin.set_fact: __invalid_input_sysctl_bad_previous_failed: true + when: + - >- + 'kernel_settings_sysctl[0] is invalid:' in __invalid_input_failure_messages + - >- + 'not_replaced' in __invalid_input_failure_messages - name: Assert kernel_settings_sysctl invalid previous failed validation ansible.builtin.assert: @@ -193,6 +238,11 @@ - name: Mark kernel_settings_sysfs integer rejected ansible.builtin.set_fact: __invalid_input_sysfs_int_failed: true + when: + - >- + 'kernel_settings_sysfs must be a list of dictionaries' in __invalid_input_failure_messages + - >- + 'got int' in __invalid_input_failure_messages - name: Assert kernel_settings_sysfs as integer failed validation ansible.builtin.assert: @@ -212,6 +262,11 @@ - name: Mark kernel_settings_systemd_cpu_affinity integer rejected ansible.builtin.set_fact: __invalid_input_cpu_affinity_int_failed: true + when: + - >- + 'kernel_settings_systemd_cpu_affinity must be null, a string' in __invalid_input_failure_messages + - >- + 'got int' in __invalid_input_failure_messages - name: Assert kernel_settings_systemd_cpu_affinity as integer failed validation ansible.builtin.assert: @@ -232,6 +287,9 @@ - name: Mark invalid transparent_hugepages rejected ansible.builtin.set_fact: __invalid_input_trans_huge_choice_failed: true + when: + - >- + 'kernel_settings_transparent_hugepages must be null' in __invalid_input_failure_messages - name: Assert invalid transparent_hugepages choice failed validation ansible.builtin.assert: @@ -252,6 +310,9 @@ - name: Mark invalid transparent_hugepages_defrag rejected ansible.builtin.set_fact: __invalid_input_trans_defrag_choice_failed: true + when: + - >- + 'kernel_settings_transparent_hugepages_defrag must be null' in __invalid_input_failure_messages - name: Assert invalid transparent_hugepages_defrag choice failed validation ansible.builtin.assert: @@ -272,6 +333,9 @@ - name: Mark invalid transactional_update_reboot_ok rejected ansible.builtin.set_fact: __invalid_input_tu_reboot_type_failed: true + when: + - >- + 'kernel_settings_transactional_update_reboot_ok must be null' in __invalid_input_failure_messages - name: Assert transactional_update_reboot_ok as string failed validation ansible.builtin.assert: @@ -292,6 +356,11 @@ - name: Mark integer transactional_update_reboot_ok rejected ansible.builtin.set_fact: __invalid_input_tu_reboot_int_failed: true + when: + - >- + 'kernel_settings_transactional_update_reboot_ok must be null' in __invalid_input_failure_messages + - >- + 'got int' in __invalid_input_failure_messages - name: Assert transactional_update_reboot_ok as integer failed validation ansible.builtin.assert: