# Test code for the ACI modules # Copyright: (c) 2018, Dag Wieers (@dagwieers) # 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: '" - "'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"