diff --git a/utils/new_module b/utils/new_module index b6eecb27f8b9a8544b0eeb158a2600703834c70b..882a9677f65ba02bd5e2e06b8bcd8bd0cc249da6 100755 --- a/utils/new_module +++ b/utils/new_module @@ -183,3 +183,4 @@ mkdir -p $dest src=test_module.yml.in [ $member == 1 ] && src=test_module+member.yml.in template $src $dest/test_$name.yml +template test_module_client_context.yml.in $dest/test_${name}_client_context.yml diff --git a/utils/templates/test_module+member.yml.in b/utils/templates/test_module+member.yml.in index f7c5b3d5eea0568b13ff5fa0c7ab14ec47d3814f..01012078e1b0e45897230f8f07797b73023bdf51 100644 --- a/utils/templates/test_module+member.yml.in +++ b/utils/templates/test_module+member.yml.in @@ -1,7 +1,10 @@ --- - name: Test $name - hosts: ipaserver + hosts: "{{ ipa_test_host | default('ipaserver') }}" + # Change "become" or "gather_facts" to "yes", + # if you test playbook requires any. become: no + gather_facts: no tasks: @@ -20,6 +23,7 @@ - name: Ensure $name NAME is present ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME # Add needed parameters here register: result @@ -28,6 +32,7 @@ - name: Ensure $name NAME is present again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME # Add needed parameters here register: result @@ -36,6 +41,7 @@ - name: Ensure $name NAME member PARAMETER2 VALUE is present ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME PARAMETER2: VALUE action: member @@ -45,6 +51,7 @@ - name: Ensure $name NAME member PARAMETER2 VALUE is present again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME PARAMETER2: VALUE action: member @@ -54,6 +61,7 @@ - name: Ensure $name NAME member PARAMETER2 VALUE is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME PARAMETER2: VALUE action: member @@ -64,6 +72,7 @@ - name: Ensure $name NAME member PARAMETER2 VALUE is absent again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME PARAMETER2: VALUE action: member @@ -76,6 +85,7 @@ - name: Ensure $name NAME is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent register: result @@ -84,6 +94,7 @@ - name: Ensure $name NAME is absent again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent register: result @@ -94,5 +105,6 @@ - name: Ensure $name NAME is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent diff --git a/utils/templates/test_module.yml.in b/utils/templates/test_module.yml.in index 0286813b89a1de6380bb95aac95744d5f1ea3738..2ad53cc240d7a605de0bef0ac687d50fd435b6f4 100644 --- a/utils/templates/test_module.yml.in +++ b/utils/templates/test_module.yml.in @@ -1,7 +1,10 @@ --- - name: Test $name - hosts: ipaserver + hosts: "{{ ipa_test_host | default('ipaserver') }}" + # Change "become" or "gather_facts" to "yes", + # if you test playbook requires any. become: no + gather_facts: no tasks: @@ -10,6 +13,7 @@ - name: Ensure $name NAME is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent @@ -28,6 +32,7 @@ - name: Ensure $name NAME is present again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME # Add needed parameters here register: result @@ -38,6 +43,7 @@ - name: Ensure $name NAME is absent ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent register: result @@ -46,6 +52,7 @@ - name: Ensure $name NAME is absent again ipa$name: ipaadmin_password: SomeADMINpassword + ipaapi_context: "{{ ipa_context | default(omit) }}" name: NAME state: absent register: result diff --git a/utils/templates/test_module_client_context.yml.in b/utils/templates/test_module_client_context.yml.in new file mode 100644 index 0000000000000000000000000000000000000000..ee8c6789708e772bbda11cc155a0c5bd199f642b --- /dev/null +++ b/utils/templates/test_module_client_context.yml.in @@ -0,0 +1,39 @@ +--- +- name: Test ${name} + hosts: ipaclients, ipaserver + # Change "become" or "gather_facts" to "yes", + # if you test playbook requires any. + become: no + gather_facts: no + + tasks: + - name: Include FreeIPA facts. + include_tasks: ../env_freeipa_facts.yml + + # Test will only be executed if host is not a server. + - name: Execute with server context in the client. + ipa${name}: + ipaadmin_password: SomeADMINpassword + ipaapi_context: server + name: ThisShouldNotWork + register: result + failed_when: not (result.failed and result.msg is regex("No module named '*ipaserver'*")) + when: ipa_host_is_client + +# Import basic module tests, and execute with ipa_context set to 'client'. +# If ipaclients is set, it will be executed using the client, if not, +# ipaserver will be used. +# +# With this setup, tests can be executed against an IPA client, against +# an IPA server using "client" context, and ensure that tests are executed +# in upstream CI. + +- name: Test ${name} using client context, in client host. + import_playbook: test_${name}.yml + when: groups['ipaclients'] + vars: + ipa_test_host: ipaclients + +- name: Test ${name} using client context, in server host. + import_playbook: test_${name}.yml + when: groups['ipaclients'] is not defined or not groups['ipaclients']