192 lines
7 KiB
YAML
192 lines
7 KiB
YAML
|
# Test code for the ACI modules
|
||
|
# Copyright: (c) 2018, Dag Wieers (@dagwieers) <dag@wieers.com>
|
||
|
|
||
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||
|
|
||
|
|
||
|
# PROVOKE ERRORS
|
||
|
- name: Error on name resolution
|
||
|
aci_rest:
|
||
|
host: foo.bar.cisco.com
|
||
|
username: '{{ aci_username }}'
|
||
|
password: '{{ aci_password }}'
|
||
|
validate_certs: '{{ aci_validate_certs | default(false) }}'
|
||
|
use_ssl: '{{ aci_use_ssl | default(true) }}'
|
||
|
use_proxy: '{{ aci_use_proxy | default(true) }}'
|
||
|
output_level: debug
|
||
|
path: /api/mo/uni.json
|
||
|
method: post
|
||
|
content:
|
||
|
fvTenant:
|
||
|
attributes:
|
||
|
name: ansible_test
|
||
|
ignore_errors: yes
|
||
|
register: error_on_name_resolution
|
||
|
|
||
|
- name: Verify error_on_name_resolution
|
||
|
assert:
|
||
|
that:
|
||
|
- error_on_name_resolution.failed == true
|
||
|
- "error_on_name_resolution.msg == 'Connection failed for https://foo.bar.cisco.com/api/aaaLogin.json. Request failed: <urlopen error [Errno -2] Name or service not known>'"
|
||
|
- "'current' not in error_on_name_resolution"
|
||
|
- "'previous' not in error_on_name_resolution"
|
||
|
- "'sent' not in error_on_name_resolution"
|
||
|
- "'proposed' not in error_on_name_resolution"
|
||
|
- "'filter_string' not in error_on_name_resolution"
|
||
|
|
||
|
- name: Error when required parameter is missing
|
||
|
aci_rest:
|
||
|
host: '{{ aci_hostname }}'
|
||
|
username: '{{ aci_username }}'
|
||
|
password: '{{ aci_password }}'
|
||
|
validate_certs: '{{ aci_validate_certs | default(false) }}'
|
||
|
use_ssl: '{{ aci_use_ssl | default(true) }}'
|
||
|
use_proxy: '{{ aci_use_proxy | default(true) }}'
|
||
|
output_level: debug
|
||
|
method: post
|
||
|
content:
|
||
|
fvTenant:
|
||
|
attributes:
|
||
|
name: ansible_test
|
||
|
ignore_errors: yes
|
||
|
register: error_on_missing_required_param
|
||
|
|
||
|
- name: Verify error_on_missing_required_param
|
||
|
assert:
|
||
|
that:
|
||
|
- error_on_missing_required_param.failed == true
|
||
|
- 'error_on_missing_required_param.msg == "missing required arguments: path"'
|
||
|
- "'current' not in error_on_missing_required_param"
|
||
|
- "'previous' not in error_on_missing_required_param"
|
||
|
- "'sent' not in error_on_missing_required_param"
|
||
|
- "'proposed' not in error_on_missing_required_param"
|
||
|
- "'filter_string' not in error_on_missing_required_param"
|
||
|
|
||
|
- name: Error when attributes are missing
|
||
|
aci_rest:
|
||
|
host: '{{ aci_hostname }}'
|
||
|
username: '{{ aci_username }}'
|
||
|
password: '{{ aci_password }}'
|
||
|
validate_certs: '{{ aci_validate_certs | default(false) }}'
|
||
|
use_ssl: '{{ aci_use_ssl | default(true) }}'
|
||
|
use_proxy: '{{ aci_use_proxy | default(true) }}'
|
||
|
output_level: debug
|
||
|
path: /api/mo/uni/tn-ansible_test.json
|
||
|
method: post
|
||
|
content:
|
||
|
fvTenant:
|
||
|
children:
|
||
|
ignore_errors: yes
|
||
|
register: error_on_missing_attributes
|
||
|
|
||
|
- name: Verify error_on_missing_attributes
|
||
|
assert:
|
||
|
that:
|
||
|
- error_on_missing_attributes.failed == true
|
||
|
- error_on_missing_attributes.method == 'POST'
|
||
|
- "error_on_missing_attributes.msg == 'APIC Error 400: invalid data at line \\'1\\'. Attributes are missing, tag \\'attributes\\' must be specified first, before any other tag'"
|
||
|
- 'error_on_missing_attributes.response == "HTTP Error 400: Bad Request"'
|
||
|
- error_on_missing_attributes.status == 400
|
||
|
- "'current' not in error_on_missing_attributes"
|
||
|
- "'previous' not in error_on_missing_attributes"
|
||
|
- "'sent' not in error_on_missing_attributes"
|
||
|
- "'proposed' not in error_on_missing_attributes"
|
||
|
- "'filter_string' not in error_on_missing_attributes"
|
||
|
|
||
|
- name: Error when input does not validate
|
||
|
aci_rest:
|
||
|
host: '{{ aci_hostname }}'
|
||
|
username: '{{ aci_username }}'
|
||
|
password: '{{ aci_password }}'
|
||
|
validate_certs: '{{ aci_validate_certs | default(false) }}'
|
||
|
use_ssl: '{{ aci_use_ssl | default(true) }}'
|
||
|
use_proxy: '{{ aci_use_proxy | default(true) }}'
|
||
|
output_level: debug
|
||
|
path: /api/mo/uni.json
|
||
|
method: post
|
||
|
content:
|
||
|
fvTenant:
|
||
|
attributes:
|
||
|
name: ansible_test
|
||
|
descr: This is an [invalid] description
|
||
|
ignore_errors: yes
|
||
|
register: error_on_input_validation
|
||
|
|
||
|
- name: Verify error_on_input_validation
|
||
|
assert:
|
||
|
that:
|
||
|
- error_on_input_validation.failed == true
|
||
|
- error_on_input_validation.method == 'POST'
|
||
|
- "error_on_input_validation.msg == 'APIC Error 801: property descr of tn-ansible_test failed validation for value \\'This is an [invalid] description\\''"
|
||
|
- 'error_on_input_validation.response == "HTTP Error 400: Bad Request"'
|
||
|
- error_on_input_validation.status == 400
|
||
|
- "'current' not in error_on_input_validation"
|
||
|
- "'previous' not in error_on_input_validation"
|
||
|
- "'sent' not in error_on_input_validation"
|
||
|
- "'proposed' not in error_on_input_validation"
|
||
|
- "'filter_string' not in error_on_input_validation"
|
||
|
|
||
|
- name: Error when invalid attributes are used
|
||
|
aci_rest:
|
||
|
host: '{{ aci_hostname }}'
|
||
|
username: '{{ aci_username }}'
|
||
|
password: '{{ aci_password }}'
|
||
|
validate_certs: '{{ aci_validate_certs | default(false) }}'
|
||
|
use_ssl: '{{ aci_use_ssl | default(true) }}'
|
||
|
use_proxy: '{{ aci_use_proxy | default(true) }}'
|
||
|
output_level: debug
|
||
|
path: /api/mo/uni.json
|
||
|
method: post
|
||
|
content:
|
||
|
fvTenant:
|
||
|
attributes:
|
||
|
name: ansible_test
|
||
|
description: This is an "invalid" description
|
||
|
ignore_errors: yes
|
||
|
register: error_on_invalid_attributes
|
||
|
|
||
|
- name: Verify error_on_invalid_attributes
|
||
|
assert:
|
||
|
that:
|
||
|
- error_on_invalid_attributes.failed == true
|
||
|
- error_on_invalid_attributes.method == 'POST'
|
||
|
- "error_on_invalid_attributes.msg == 'APIC Error 400: unknown attribute \\'description\\' in element \\'fvTenant\\''"
|
||
|
- 'error_on_invalid_attributes.response == "HTTP Error 400: Bad Request"'
|
||
|
- error_on_invalid_attributes.status == 400
|
||
|
- "'current' not in error_on_invalid_attributes"
|
||
|
- "'previous' not in error_on_invalid_attributes"
|
||
|
- "'sent' not in error_on_invalid_attributes"
|
||
|
- "'proposed' not in error_on_invalid_attributes"
|
||
|
- "'filter_string' not in error_on_invalid_attributes"
|
||
|
|
||
|
- name: Error on invalid object
|
||
|
aci_rest:
|
||
|
host: '{{ aci_hostname }}'
|
||
|
username: '{{ aci_username }}'
|
||
|
password: '{{ aci_password }}'
|
||
|
validate_certs: '{{ aci_validate_certs | default(false) }}'
|
||
|
use_ssl: '{{ aci_use_ssl | default(true) }}'
|
||
|
use_proxy: '{{ aci_use_proxy | default(true) }}'
|
||
|
output_level: debug
|
||
|
path: /api/mo/uni.json
|
||
|
method: post
|
||
|
content:
|
||
|
fvFoobar:
|
||
|
attributes:
|
||
|
name: ansible_test
|
||
|
ignore_errors: yes
|
||
|
register: error_on_invalid_object
|
||
|
|
||
|
- name: Verify error_on_invalid_object
|
||
|
assert:
|
||
|
that:
|
||
|
- error_on_invalid_object.failed == true
|
||
|
- error_on_invalid_object.method == 'POST'
|
||
|
- "error_on_invalid_object.msg == 'APIC Error 122: unknown managed object class fvFoobar'"
|
||
|
- 'error_on_invalid_object.response == "HTTP Error 400: Bad Request"'
|
||
|
- error_on_invalid_object.status == 400
|
||
|
- "'current' not in error_on_invalid_object"
|
||
|
- "'previous' not in error_on_invalid_object"
|
||
|
- "'sent' not in error_on_invalid_object"
|
||
|
- "'proposed' not in error_on_invalid_object"
|