mirror of
https://github.com/ansible/awx.git
synced 2026-03-29 06:45:09 -02:30
Changing test suite and fixing user issue in tower_api
This commit is contained in:
committed by
beeankha
parent
e9d66df77a
commit
0fd618d88b
@@ -107,7 +107,7 @@ class TowerAPIModule(TowerModule):
|
|||||||
|
|
||||||
def get_one_by_name_or_id(self, endpoint, name_or_id):
|
def get_one_by_name_or_id(self, endpoint, name_or_id):
|
||||||
name_field = 'name'
|
name_field = 'name'
|
||||||
if endpoint is 'users':
|
if endpoint == 'users':
|
||||||
name_field = 'username'
|
name_field = 'username'
|
||||||
|
|
||||||
query_params = {'or__{0}'.format(name_field): name_or_id}
|
query_params = {'or__{0}'.format(name_field): name_or_id}
|
||||||
@@ -118,12 +118,16 @@ class TowerAPIModule(TowerModule):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
response = self.get_endpoint(endpoint, **{'data': query_params})
|
response = self.get_endpoint(endpoint, **{'data': query_params})
|
||||||
|
if response['status_code'] != 200:
|
||||||
|
self.fail_json(msg="Failed to query endpoint {0} for {1} {2} ({3}), see results".format(endpoint, name_field, name_or_id, response['status_code']), resuls=response)
|
||||||
|
|
||||||
if response['json']['count'] == 1:
|
if response['json']['count'] == 1:
|
||||||
return response['json']['results'][0]
|
return response['json']['results'][0]
|
||||||
elif response['json']['count'] == 2:
|
elif response['json']['count'] == 2:
|
||||||
for tower_object in response['json']['results']:
|
for tower_object in response['json']['results']:
|
||||||
return tower_object
|
if tower_object['name'] == name_or_id:
|
||||||
# We shouldn't get here because we found 2 objects and ID has to be unique, so one of the objects must have a matching name
|
return tower_object
|
||||||
|
# We shouldn't get here because we found 2 objects and ID has to be unique, so one of the objects must have a matching name
|
||||||
elif response['json']['count'] == 0:
|
elif response['json']['count'] == 0:
|
||||||
self.fail_json(msg="The {0} {1} was not found on the Tower server".format(endpoint, name_or_id))
|
self.fail_json(msg="The {0} {1} was not found on the Tower server".format(endpoint, name_or_id))
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -1,74 +1,112 @@
|
|||||||
---
|
---
|
||||||
|
- name: Generate a test id
|
||||||
|
set_fact:
|
||||||
|
test_id: "{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
|
||||||
|
|
||||||
- name: Generate names
|
- name: Generate names
|
||||||
set_fact:
|
set_fact:
|
||||||
username: "AWX-Collection-tests-tower_role-user-{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
|
username: "AWX-Collection-tests-tower_role-user-{{ test_id }}"
|
||||||
|
project_name: "AWX-Collection-tests-tower_role-project-{{ test_id }}"
|
||||||
|
|
||||||
- name: Create a User
|
- block:
|
||||||
tower_user:
|
- name: Create a User
|
||||||
first_name: Joe
|
tower_user:
|
||||||
last_name: User
|
first_name: Joe
|
||||||
username: "{{ username }}"
|
last_name: User
|
||||||
password: "{{ 65535 | random | to_uuid }}"
|
username: "{{ username }}"
|
||||||
email: joe@example.org
|
password: "{{ 65535 | random | to_uuid }}"
|
||||||
state: present
|
email: joe@example.org
|
||||||
register: result
|
state: present
|
||||||
|
register: result
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
- "result is changed"
|
- "result is changed"
|
||||||
|
|
||||||
- name: Add Joe to the update role of the default Project
|
- name: Create a project
|
||||||
tower_role:
|
tower_project:
|
||||||
user: "{{ username }}"
|
name: "{{ project_name }}"
|
||||||
role: update
|
organization: Default
|
||||||
project: Demo Project
|
scm_type: git
|
||||||
state: "{{ item }}"
|
scm_url: https://github.com/ansible/test-playbooks
|
||||||
register: result
|
wait: false
|
||||||
with_items:
|
register: project_info
|
||||||
- "present"
|
|
||||||
- "absent"
|
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
- "result is changed"
|
- project_info is changed
|
||||||
|
|
||||||
- name: Create a workflow
|
- name: Add Joe to the update role of the default Project
|
||||||
tower_workflow_job_template:
|
tower_role:
|
||||||
name: test-role-workflow
|
user: "{{ username }}"
|
||||||
organization: Default
|
role: update
|
||||||
state: present
|
project: "Demo Project"
|
||||||
|
state: "{{ item }}"
|
||||||
|
register: result
|
||||||
|
with_items:
|
||||||
|
- "present"
|
||||||
|
- "absent"
|
||||||
|
|
||||||
- name: Add Joe to workflow execute role
|
- assert:
|
||||||
tower_role:
|
that:
|
||||||
user: "{{ username }}"
|
- "result is changed"
|
||||||
role: execute
|
|
||||||
workflow: test-role-workflow
|
|
||||||
state: present
|
|
||||||
register: result
|
|
||||||
|
|
||||||
- assert:
|
- name: Add Joe to the new project by ID
|
||||||
that:
|
tower_role:
|
||||||
- "result is changed"
|
user: "{{ username }}"
|
||||||
|
role: update
|
||||||
|
project: "{{ project_info['id'] }}"
|
||||||
|
state: "{{ item }}"
|
||||||
|
register: result
|
||||||
|
with_items:
|
||||||
|
- "present"
|
||||||
|
- "absent"
|
||||||
|
|
||||||
- name: Add Joe to workflow execute role, no-op
|
- assert:
|
||||||
tower_role:
|
that:
|
||||||
user: "{{ username }}"
|
- "result is changed"
|
||||||
role: execute
|
|
||||||
workflow: test-role-workflow
|
|
||||||
state: present
|
|
||||||
register: result
|
|
||||||
|
|
||||||
- assert:
|
- name: Create a workflow
|
||||||
that:
|
tower_workflow_job_template:
|
||||||
- "result is not changed"
|
name: test-role-workflow
|
||||||
|
organization: Default
|
||||||
|
state: present
|
||||||
|
|
||||||
- name: Delete a User
|
- name: Add Joe to workflow execute role
|
||||||
tower_user:
|
tower_role:
|
||||||
username: "{{ username }}"
|
user: "{{ username }}"
|
||||||
email: joe@example.org
|
role: execute
|
||||||
state: absent
|
workflow: test-role-workflow
|
||||||
register: result
|
state: present
|
||||||
|
register: result
|
||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
- "result is changed"
|
- "result is changed"
|
||||||
|
|
||||||
|
- name: Add Joe to workflow execute role, no-op
|
||||||
|
tower_role:
|
||||||
|
user: "{{ username }}"
|
||||||
|
role: execute
|
||||||
|
workflow: test-role-workflow
|
||||||
|
state: present
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- "result is not changed"
|
||||||
|
|
||||||
|
always:
|
||||||
|
- name: Delete a User
|
||||||
|
tower_user:
|
||||||
|
username: "{{ username }}"
|
||||||
|
email: joe@example.org
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: Delete the project
|
||||||
|
tower_project:
|
||||||
|
name: "{{ project_name }}"
|
||||||
|
organization: Default
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
|||||||
Reference in New Issue
Block a user