--- - hosts: localhost gather_facts: False vars_files: - vars.yaml tasks: - name: wait until the api becomes responsive uri: url: http://localhost:8181/auth/v1/users/ url_username: admin url_password: admin status_code: 200 register: intial_api_response until: intial_api_response.status == 200 retries: 20 delay: 20 - name: list initial users odl_usermod: state: list register: init_state_users - name: ensure test user does not exist assert: that: - "init_state_users != None" - name: ensure no test user via API uri: url: "http://localhost:8181/auth/v1/users/{{ test_user_username}}@sdn" url_username: admin url_password: admin status_code: 404 register: verify_no_test_user_api until: verify_no_test_user_api.status == 404 retries: 20 delay: 20 - name: create odl user odl_usermod: username: "{{ test_user_username }}" password: "{{ test_user_password }}" state: present - name: list users after creation odl_usermod: state: list register: users_after_create - name: ensure user creation assert: that: - "test_user_username != None" - "test_user_username in users_after_create.msg" - name: ensure test user creation via API uri: url: "http://localhost:8181/auth/v1/users/{{ test_user_username}}@sdn" url_username: admin url_password: admin status_code: 200 register: verify_test_user_creation_api until: verify_test_user_creation_api.status == 200 retries: 20 delay: 20 - name: delete odl user odl_usermod: username: "{{ test_user_username }}" state: absent - name: list users after deletion odl_usermod: state: list register: users_after_delete - name: ensure user deletion assert: that: - "users_after_delete != None" - "'admin' in users_after_delete.msg" - name: ensure test user deletion via API uri: url: "http://localhost:8181/auth/v1/users/{{ test_user_username}}@sdn" url_username: admin url_password: admin status_code: 404 register: verify_test_user_deletion_api until: verify_test_user_deletion_api.status == 404 retries: 20 delay: 20 - name: create user without username or password odl_usermod: state: present register: create_without_credentials ignore_errors: yes - name: assert user creation failed without passing the credentials assert: that: - "create_without_credentials.msg == 'Username or password not provided'" - name: delete odl user without passing username odl_usermod: state: absent register: delete_without_username ignore_errors: yes - name: assert user deletion failed without passing username assert: that: - "delete_without_username.msg == 'Username not provided'" - name: assert that API responds with default admin password uri: url: http://localhost:8181/auth/v1/users url_username: admin url_password: admin status_code: 200 register: api_responsive_default_password until: api_responsive_default_password.status == 200 retries: 20 delay: 20 - name: assert that API fails with new password before changing uri: url: http://localhost:8181/auth/v1/users url_username: admin url_password: temp status_code: 401 register: api_failure_before_pass_change until: api_failure_before_pass_change.status == 401 retries: 20 delay: 20 - name: update admin password odl_usermod: username: admin password: temp state: update - name: restart odl service service: name: opendaylight state: restarted - name: assert API fails with old password uri: url: http://localhost:8181/auth/v1/users/ url_username: admin url_password: admin status_code: 401 register: old_admin_password_failure until: old_admin_password_failure.status == 401 retries: 20 delay: 20 - name: assert API responds with new password uri: url: http://localhost:8181/auth/v1/users/ url_username: admin url_password: temp status_code: 200 register: new_admin_password_success until: new_admin_password_success.status == 200 retries: 20 delay: 20