1# Test code for the MSO modules
2# Copyright: (c) 2018, Dag Wieers (@dagwieers) <dag@wieers.com>
3
4# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
5
6- name: Test that we have an ACI MultiSite host, username and password
7  fail:
8    msg: 'Please define the following variables: mso_hostname, mso_username and mso_password.'
9  when: mso_hostname is not defined or mso_username is not defined or mso_password is not defined
10
11
12# CLEAN ENVIRONMENT
13- name: Remove role ansible_test2
14  mso_role: &role_absent
15    host: '{{ mso_hostname }}'
16    username: '{{ mso_username }}'
17    password: '{{ mso_password }}'
18    validate_certs: '{{ mso_validate_certs | default(false) }}'
19    use_ssl: '{{ mso_use_ssl | default(true) }}'
20    use_proxy: '{{ mso_use_proxy | default(true) }}'
21    output_level: '{{ mso_output_level | default("info") }}'
22    role: ansible_test2
23    state: absent
24
25- name: Remove role ansible_test
26  mso_role:
27    <<: *role_absent
28    role: ansible_test
29  register: cm_remove_role
30
31
32# ADD ROLE
33- name: Add role (check_mode)
34  mso_role: &role_present
35    host: '{{ mso_hostname }}'
36    username: '{{ mso_username }}'
37    password: '{{ mso_password }}'
38    validate_certs: '{{ mso_validate_certs | default(false) }}'
39    use_ssl: '{{ mso_use_ssl | default(true) }}'
40    use_proxy: '{{ mso_use_proxy | default(true) }}'
41    output_level: '{{ mso_output_level | default("info") }}'
42    role: ansible_test
43    description: Ansible test role
44    permissions: view-sites
45    state: present
46  check_mode: yes
47  register: cm_add_role
48
49- name: Verify cm_add_role
50  assert:
51    that:
52    - cm_add_role is changed
53    - cm_add_role.previous == {}
54    - cm_add_role.current.description == 'Ansible test role'
55    - cm_add_role.current.displayName == 'ansible_test'
56    - cm_add_role.current.id is not defined
57
58- name: Add role (normal mode)
59  mso_role: *role_present
60  register: nm_add_role
61
62- name: nm_Verify add_role
63  assert:
64    that:
65    - nm_add_role is changed
66    - nm_add_role.previous == {}
67    - nm_add_role.current.description == 'Ansible test role'
68    - nm_add_role.current.displayName == 'ansible_test'
69    - nm_add_role.current.id is defined
70
71- name: Add role again (check_mode)
72  mso_role: *role_present
73  check_mode: yes
74  register: cm_add_role_again
75
76- name: Verify cm_add_role_again
77  assert:
78    that:
79    - cm_add_role_again is not changed
80    - cm_add_role_again.previous.description == 'Ansible test role'
81    - cm_add_role_again.previous.displayName == 'ansible_test'
82    - cm_add_role_again.current.description == 'Ansible test role'
83    - cm_add_role_again.current.displayName == 'ansible_test'
84    - cm_add_role_again.current.id == nm_add_role.current.id
85
86- name: Add role again (normal mode)
87  mso_role: *role_present
88  register: nm_add_role_again
89
90- name: Verify nm_add_role_again
91  assert:
92    that:
93    - nm_add_role_again is not changed
94    - nm_add_role_again.previous.description == 'Ansible test role'
95    - nm_add_role_again.previous.displayName == 'ansible_test'
96    - nm_add_role_again.current.description == 'Ansible test role'
97    - nm_add_role_again.current.displayName == 'ansible_test'
98    - nm_add_role_again.current.id == nm_add_role.current.id
99
100
101# CHANGE ROLE
102- name: Change role (check_mode)
103  mso_role:
104    <<: *role_present
105    role_id: '{{ nm_add_role.current.id }}'
106    role: ansible_test2
107    description: Ansible test role 2
108  check_mode: yes
109  register: cm_change_role
110
111- name: Verify cm_change_role
112  assert:
113    that:
114    - cm_change_role is changed
115    - cm_change_role.current.description == 'Ansible test role 2'
116    - cm_change_role.current.displayName == 'ansible_test2'
117    - cm_change_role.current.id == nm_add_role.current.id
118
119- name: Change role (normal mode)
120  mso_role:
121    <<: *role_present
122    role_id: '{{ nm_add_role.current.id }}'
123    role: ansible_test2
124    description: Ansible test role 2
125    output_level: debug
126  register: nm_change_role
127
128- name: Verify nm_change_role
129  assert:
130    that:
131    - nm_change_role is changed
132    - nm_change_role.current.description == 'Ansible test role 2'
133    - nm_change_role.current.displayName == 'ansible_test2'
134    - nm_change_role.current.id == nm_add_role.current.id
135
136- name: Change role again (check_mode)
137  mso_role:
138    <<: *role_present
139    role_id: '{{ nm_add_role.current.id }}'
140    role: ansible_test2
141    description: Ansible test role 2
142  check_mode: yes
143  register: cm_change_role_again
144
145- name: Verify cm_change_role_again
146  assert:
147    that:
148    - cm_change_role_again is not changed
149    - cm_change_role_again.current.description == 'Ansible test role 2'
150    - cm_change_role_again.current.displayName == 'ansible_test2'
151    - cm_change_role_again.current.id == nm_add_role.current.id
152
153- name: Change role again (normal mode)
154  mso_role:
155    <<: *role_present
156    role_id: '{{ nm_add_role.current.id }}'
157    role: ansible_test2
158    description: Ansible test role 2
159  register: nm_change_role_again
160
161- name: Verify nm_change_role_again
162  assert:
163    that:
164    - nm_change_role_again is not changed
165    - nm_change_role_again.current.description == 'Ansible test role 2'
166    - nm_change_role_again.current.displayName == 'ansible_test2'
167    - nm_change_role_again.current.id == nm_add_role.current.id
168
169
170# QUERY ALL ROLES
171- name: Query all roles (check_mode)
172  mso_role: &role_query
173    host: '{{ mso_hostname }}'
174    username: '{{ mso_username }}'
175    password: '{{ mso_password }}'
176    validate_certs: '{{ mso_validate_certs | default(false) }}'
177    use_ssl: '{{ mso_use_ssl | default(true) }}'
178    use_proxy: '{{ mso_use_proxy | default(true) }}'
179    output_level: '{{ mso_output_level | default("info") }}'
180    state: query
181  check_mode: yes
182  register: cm_query_all_roles
183
184- name: Query all roles (normal mode)
185  mso_role: *role_query
186  register: nm_query_all_roles
187
188- name: Verify query_all_roles
189  assert:
190    that:
191    - cm_query_all_roles is not changed
192    - nm_query_all_roles is not changed
193    # NOTE: Order of roles is not stable between calls
194    #- cm_query_all_roles == nm_query_all_roles
195
196
197# QUERY A ROLE
198- name: Query our role
199  mso_role:
200    <<: *role_query
201    role: ansible_test2
202  check_mode: yes
203  register: cm_query_role
204
205- name: Query our role
206  mso_role:
207    <<: *role_query
208    role: ansible_test2
209  register: nm_query_role
210
211- name: Verify query_role
212  assert:
213    that:
214    - cm_query_role is not changed
215    - cm_query_role.current.description == 'Ansible test role 2'
216    - cm_query_role.current.displayName == 'ansible_test2'
217    - cm_query_role.current.id == nm_add_role.current.id
218    - nm_query_role is not changed
219    - nm_query_role.current.description == 'Ansible test role 2'
220    - nm_query_role.current.displayName == 'ansible_test2'
221    - nm_query_role.current.id == nm_add_role.current.id
222    - cm_query_role == nm_query_role
223
224
225# REMOVE ROLE
226- name: Remove role (check_mode)
227  mso_role: *role_absent
228  check_mode: yes
229  register: cm_remove_role
230
231- name: Verify cm_remove_role
232  assert:
233    that:
234    - cm_remove_role is changed
235    - cm_remove_role.current == {}
236
237- name: Remove role (normal mode)
238  mso_role: *role_absent
239  register: nm_remove_role
240
241- name: Verify nm_remove_role
242  assert:
243    that:
244    - nm_remove_role is changed
245    - nm_remove_role.current == {}
246
247- name: Remove role again (check_mode)
248  mso_role: *role_absent
249  check_mode: yes
250  register: cm_remove_role_again
251
252- name: Verify cm_remove_role_again
253  assert:
254    that:
255    - cm_remove_role_again is not changed
256    - cm_remove_role_again.current == {}
257
258- name: Remove role again (normal mode)
259  mso_role: *role_absent
260  register: nm_remove_role_again
261
262- name: Verify nm_remove_role_again
263  assert:
264    that:
265    - nm_remove_role_again is not changed
266    - nm_remove_role_again.current == {}
267
268
269# QUERY NON-EXISTING ROLE
270- name: Query non-existing role (check_mode)
271  mso_role:
272    <<: *role_query
273    role: ansible_test
274  check_mode: yes
275  register: cm_query_non_role
276
277- name: Query non-existing role (normal mode)
278  mso_role:
279    <<: *role_query
280    role: ansible_test
281  register: nm_query_non_role
282
283# TODO: Implement more tests
284- name: Verify query_non_role
285  assert:
286    that:
287    - cm_query_non_role is not changed
288    - nm_query_non_role is not changed
289    - cm_query_non_role == nm_query_non_role
290