# Test code for the user module. # (c) 2017, James Tanner # This file is part of Ansible # # Ansible is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Ansible is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . # - name: get the jinja2 version shell: python -c 'import jinja2; print(jinja2.__version__)' register: jinja2_version delegate_to: localhost - debug: var=jinja2_version ## ## user add ## # - name: remove the test user user: name: ansibulluser state: absent - name: try to create a user user: name: ansibulluser state: present register: user_test0 - debug: var=user_test0 - name: make a list of users script: userlist.sh "{{ ansible_distribution }}" register: user_names - debug: var=user_names - name: validate results for testcase 0 assert: that: - 'user_test0.changed is defined' - 'user_test0.changed' - '"ansibulluser" in user_names.stdout_lines' ## ## user check ## - name: run existing user check tests user: name: "{{ user_names.stdout_lines|random }}" state: present create_home: no with_sequence: start=1 end=5 register: user_test1 - debug: var=user_test1 - name: validate results for testcase 1 assert: that: - 'user_test1.results is defined' - 'user_test1.results|length == 5' - name: validate changed results for testcase 1 (jinja >= 2.6) assert: that: - "user_test1.results|map(attribute='changed')|unique|list == [False]" - "user_test1.results|map(attribute='state')|unique|list == ['present']" when: "jinja2_version.stdout is version('2.6', '>=')" - name: validate changed results for testcase 1 (jinja >= 2.6) assert: that: - "not user_test1.results[0]['changed']" - "not user_test1.results[1]['changed']" - "not user_test1.results[2]['changed']" - "not user_test1.results[3]['changed']" - "not user_test1.results[4]['changed']" - "user_test1.results[0]['state'] == 'present'" - "user_test1.results[1]['state'] == 'present'" - "user_test1.results[2]['state'] == 'present'" - "user_test1.results[3]['state'] == 'present'" - "user_test1.results[4]['state'] == 'present'" when: "jinja2_version.stdout is version('2.6', '<')" ## ## user remove ## - name: try to delete the user user: name: ansibulluser state: absent force: true register: user_test2 - name: make a new list of users script: userlist.sh "{{ ansible_distribution }}" register: user_names2 - debug: var=user_names2 - name: validate results for testcase 2 assert: that: - '"ansibulluser" not in user_names2.stdout_lines' - block: - name: create non-system user on OSX to test the shell is set to /bin/bash user: name: osxuser register: osxuser_output - name: validate the shell is set to /bin/bash assert: that: - 'osxuser_output.shell == "/bin/bash"' - name: cleanup user: name: osxuser state: absent - name: create system user on OSX to test the shell is set to /usr/bin/false user: name: osxuser system: yes register: osxuser_output - name: validate the shell is set to /usr/bin/false assert: that: - 'osxuser_output.shell == "/usr/bin/false"' - name: cleanup user: name: osxuser state: absent - name: create non-system user on OSX and set the shell to /bin/sh user: name: osxuser shell: /bin/sh register: osxuser_output - name: validate the shell is set to /bin/sh assert: that: - 'osxuser_output.shell == "/bin/sh"' - name: cleanup user: name: osxuser state: absent when: ansible_distribution == "MacOSX"