mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
d8ba8c03f3
This functionality was not considered when the module was written, but there's no reason why it shouldn't be supported. We had to rework the query string construction and object filtering. This new functionality allows to filter on arbitrary keys and supports None values. This PR fixes various issues with the existing framework, including querying specific objects using construct_url_4 (i.e. aci_epg_to_contract and aci_static_binding_to_epg)
191 lines
7 KiB
YAML
191 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 is failed
|
|
- "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 is failed
|
|
- '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 is failed
|
|
- 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 is failed
|
|
- 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 is failed
|
|
- 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 is failed
|
|
- 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"
|