a85750dc98
* Initial proposal for new parameter option for response format - output_version parameter dictates the response key case - new is snake_case, old is camelCase - If new, conversion is done at the end of module execution - This is purely a proposal and not a final draft * Add support for ANSIBLE_MERAKI_FORMAT env var - If env var is set to 'camelcase' it will output camelcase - Otherwise, will default to snakecase - Added note to documentation fragment - As of now, all module documentation needs to be updated * Fix pep8 errors and remove output_version args * Restructure check in exit_json so it actually works * Add changelog fragment * Change output_format to a parameter with env var fallback - ANSIBLE_MERAKI_FORMAT is the valid env var - Added documentation * Convert to camel_dict_to_snake_dict() which is from Ansible - Fixed integration tests * Fix yaml lint error * exit_json camel_case conversion handles no data - exit_json would fail if data wasn't provided - Updated 3 integration tests for new naming convention * convert_camel_to_snake() handles lists and dicts - The native Ansible method doesn't handle first level lists - convert_camel_to_snake() acts simply as a wrapper for the method - There maybe a situation where nested lists are a problem, must test - Fixed integration tests in some modules * A few integration test fixes * Convert response documentation to snake case
230 lines
5.5 KiB
YAML
230 lines
5.5 KiB
YAML
# Test code for the Meraki Organization module
|
|
# Copyright: (c) 2018, Kevin Breit (@kbreit)
|
|
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
---
|
|
- block:
|
|
- name: Test an API key is provided
|
|
fail:
|
|
msg: Please define an API key
|
|
when: auth_key is not defined
|
|
|
|
- name: Use an invalid domain
|
|
meraki_organization:
|
|
auth_key: '{{ auth_key }}'
|
|
host: marrrraki.com
|
|
state: present
|
|
org_name: IntTestOrg
|
|
output_level: debug
|
|
delegate_to: localhost
|
|
register: invalid_domain
|
|
ignore_errors: yes
|
|
|
|
- name: Disable HTTP
|
|
meraki_organization:
|
|
auth_key: '{{ auth_key }}'
|
|
use_https: false
|
|
state: query
|
|
output_level: debug
|
|
delegate_to: localhost
|
|
register: http
|
|
ignore_errors: yes
|
|
|
|
- name: Connection assertions
|
|
assert:
|
|
that:
|
|
- '"Failed to connect to" in invalid_domain.msg'
|
|
- '"http" in http.url'
|
|
|
|
- name: Create network
|
|
meraki_network:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: present
|
|
type: appliance
|
|
delegate_to: localhost
|
|
|
|
- name: Query firewall rules
|
|
meraki_mx_l3_firewall:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: query
|
|
delegate_to: localhost
|
|
register: query
|
|
|
|
- assert:
|
|
that:
|
|
- query.data|length == 1
|
|
|
|
- name: Set one firewall rule
|
|
meraki_mx_l3_firewall:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: present
|
|
rules:
|
|
- comment: Deny to documentation address
|
|
src_port: any
|
|
src_cidr: any
|
|
dest_port: 80,443
|
|
dest_cidr: 192.0.1.1/32
|
|
protocol: tcp
|
|
policy: deny
|
|
delegate_to: localhost
|
|
register: create_one
|
|
|
|
- debug:
|
|
var: create_one
|
|
|
|
- assert:
|
|
that:
|
|
- create_one.data|length == 2
|
|
- create_one.data.0.dest_cidr == '192.0.1.1/32'
|
|
- create_one.data.0.protocol == 'tcp'
|
|
- create_one.data.0.policy == 'deny'
|
|
- create_one.changed == True
|
|
- create_one.data is defined
|
|
|
|
- name: Check for idempotency
|
|
meraki_mx_l3_firewall:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: present
|
|
rules:
|
|
- comment: Deny to documentation address
|
|
src_port: any
|
|
src_cidr: any
|
|
dest_port: 80,443
|
|
dest_cidr: 192.0.1.1/32
|
|
protocol: tcp
|
|
policy: deny
|
|
delegate_to: localhost
|
|
register: create_one_idempotent
|
|
|
|
- debug:
|
|
msg: '{{create_one_idempotent}}'
|
|
|
|
- assert:
|
|
that:
|
|
- create_one_idempotent.changed == False
|
|
- create_one_idempotent.data is defined
|
|
|
|
- name: Create syslog in network
|
|
meraki_syslog:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: present
|
|
servers:
|
|
- host: 192.0.2.10
|
|
port: 514
|
|
roles:
|
|
- Appliance event log
|
|
- Flows
|
|
delegate_to: localhost
|
|
|
|
- name: Enable syslog for default rule
|
|
meraki_mx_l3_firewall:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: present
|
|
rules:
|
|
- comment: Deny to documentation address
|
|
src_port: any
|
|
src_cidr: any
|
|
dest_port: 80,443
|
|
dest_cidr: 192.0.1.1/32
|
|
protocol: tcp
|
|
policy: deny
|
|
syslog_default_rule: yes
|
|
delegate_to: localhost
|
|
register: default_syslog
|
|
|
|
- debug:
|
|
msg: '{{default_syslog}}'
|
|
|
|
- assert:
|
|
that:
|
|
- default_syslog.data is defined
|
|
|
|
- name: Query firewall rules
|
|
meraki_mx_l3_firewall:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: query
|
|
delegate_to: localhost
|
|
register: query
|
|
|
|
- debug:
|
|
msg: '{{query.data.1}}'
|
|
|
|
- assert:
|
|
that:
|
|
- query.data.1.syslog_enabled == True
|
|
- default_syslog.changed == True
|
|
|
|
- name: Disable syslog for default rule
|
|
meraki_mx_l3_firewall:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: present
|
|
rules:
|
|
- comment: Deny to documentation address
|
|
src_port: any
|
|
src_cidr: any
|
|
dest_port: 80,443
|
|
dest_cidr: 192.0.1.1/32
|
|
protocol: tcp
|
|
policy: deny
|
|
syslog_default_rule: no
|
|
delegate_to: localhost
|
|
register: disable_syslog
|
|
|
|
- debug:
|
|
msg: '{{disable_syslog}}'
|
|
|
|
- assert:
|
|
that:
|
|
- disable_syslog.data is defined
|
|
|
|
- name: Query firewall rules
|
|
meraki_mx_l3_firewall:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: query
|
|
delegate_to: localhost
|
|
register: query
|
|
|
|
- debug:
|
|
msg: '{{query.data.1}}'
|
|
|
|
- assert:
|
|
that:
|
|
- query.data.1.syslog_enabled == False
|
|
- disable_syslog.changed == True
|
|
|
|
always:
|
|
- name: Delete all firewall rules
|
|
meraki_mx_l3_firewall:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: present
|
|
rules: []
|
|
delegate_to: localhost
|
|
register: delete_all
|
|
|
|
- name: Delete network
|
|
meraki_network:
|
|
auth_key: '{{ auth_key }}'
|
|
org_name: '{{test_org_name}}'
|
|
net_name: TestNetAppliance
|
|
state: absent
|
|
delegate_to: localhost
|