mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 21:32:49 +00:00
New module - meraki/meraki_content_filtering (#51223)
* Initial commit - Module mostly works but doesn't work for URL categories - Additional tests should be added - Documentation is needed - Module is close to being complete * Improved documentation - Added parameter documentation - Added examples * Lint changes and bug fixes - Fixed content filtering syntax bug per Meraki documentation update * Change test cases so they work * Remove duplicate key * Improve documentation and check mode
This commit is contained in:
@@ -0,0 +1 @@
|
||||
unsupported
|
||||
@@ -0,0 +1 @@
|
||||
unsupported
|
||||
@@ -0,0 +1,117 @@
|
||||
# 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_config_template:
|
||||
auth_key: '{{ auth_key }}'
|
||||
host: marrrraki.com
|
||||
state: query
|
||||
org_name: DevTestOrg
|
||||
output_level: debug
|
||||
delegate_to: localhost
|
||||
register: invalid_domain
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Connection assertions
|
||||
assert:
|
||||
that:
|
||||
- '"Failed to connect to" in invalid_domain.msg'
|
||||
|
||||
- name: Query all configuration templates
|
||||
meraki_config_template:
|
||||
auth_key: '{{auth_key}}'
|
||||
state: query
|
||||
org_name: DevTestOrg
|
||||
register: get_all
|
||||
|
||||
- name: Delete non-existant configuration template
|
||||
meraki_config_template:
|
||||
auth_key: '{{auth_key}}'
|
||||
state: absent
|
||||
org_name: DevTestOrg
|
||||
config_template: DevConfigTemplateInvalid
|
||||
register: deleted
|
||||
ignore_errors: yes
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- '"No configuration template named" in deleted.msg'
|
||||
|
||||
- name: Create a network
|
||||
meraki_network:
|
||||
auth_key: '{{auth_key}}'
|
||||
state: present
|
||||
org_name: '{{ test_org_name }}'
|
||||
net_name: '{{ test_net_name }}'
|
||||
type: appliance
|
||||
delegate_to: localhost
|
||||
|
||||
- name: Bind a template to a network
|
||||
meraki_config_template:
|
||||
auth_key: '{{auth_key}}'
|
||||
state: present
|
||||
org_name: '{{ test_org_name }}'
|
||||
net_name: '{{ test_net_name }}'
|
||||
config_template: DevConfigTemplate
|
||||
register: bind
|
||||
|
||||
- assert:
|
||||
that:
|
||||
bind.changed == True
|
||||
|
||||
- name: Bind a template to a network when it's already bound
|
||||
meraki_config_template:
|
||||
auth_key: '{{auth_key}}'
|
||||
state: present
|
||||
org_name: '{{ test_org_name }}'
|
||||
net_name: '{{ test_net_name }}'
|
||||
config_template: DevConfigTemplate
|
||||
register: bind_invalid
|
||||
ignore_errors: yes
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- bind_invalid.changed == False
|
||||
|
||||
- name: Unbind a template from a network
|
||||
meraki_config_template:
|
||||
auth_key: '{{auth_key}}'
|
||||
state: absent
|
||||
org_name: '{{ test_org_name }}'
|
||||
net_name: '{{ test_net_name }}'
|
||||
config_template: DevConfigTemplate
|
||||
register: unbind
|
||||
|
||||
- assert:
|
||||
that:
|
||||
unbind.changed == True
|
||||
|
||||
- name: Unbind a template from a network when it's not bound
|
||||
meraki_config_template:
|
||||
auth_key: '{{auth_key}}'
|
||||
state: absent
|
||||
org_name: '{{ test_org_name }}'
|
||||
net_name: '{{ test_net_name }}'
|
||||
config_template: DevConfigTemplate
|
||||
register: unbind_invalid
|
||||
|
||||
- assert:
|
||||
that:
|
||||
unbind_invalid.changed == False
|
||||
|
||||
always:
|
||||
- name: Delete network
|
||||
meraki_network:
|
||||
auth_key: '{{auth_key}}'
|
||||
state: absent
|
||||
org_name: '{{ test_org_name }}'
|
||||
net_name: '{{ test_net_name }}'
|
||||
delegate_to: localhost
|
||||
131
test/integration/targets/meraki_content_filtering/tasks/main.yml
Normal file
131
test/integration/targets/meraki_content_filtering/tasks/main.yml
Normal file
@@ -0,0 +1,131 @@
|
||||
# Test code for the Meraki Content Filteringmodule
|
||||
# Copyright: (c) 2019, 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_config_template:
|
||||
# auth_key: '{{ auth_key }}'
|
||||
# host: marrrraki.com
|
||||
# state: query
|
||||
# org_name: DevTestOrg
|
||||
# output_level: debug
|
||||
# delegate_to: localhost
|
||||
# register: invalid_domain
|
||||
# ignore_errors: yes
|
||||
|
||||
# - name: Connection assertions
|
||||
# assert:
|
||||
# that:
|
||||
# - '"Failed to connect to" in invalid_domain.msg'
|
||||
|
||||
- name: Set single allowed URL pattern
|
||||
meraki_content_filtering:
|
||||
auth_key: '{{auth_key}}'
|
||||
org_name: '{{test_org_name}}'
|
||||
net_name: '{{test_net_name}}'
|
||||
state: present
|
||||
allowed_urls:
|
||||
- "http://www.ansible.com/*"
|
||||
register: single_allowed
|
||||
|
||||
- debug:
|
||||
var: single_allowed.data.allowedUrlPatterns
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- single_allowed.data.allowedUrlPatterns | length == 1
|
||||
|
||||
- name: Set single allowed URL pattern for idempotency
|
||||
meraki_content_filtering:
|
||||
auth_key: '{{auth_key}}'
|
||||
org_name: '{{test_org_name}}'
|
||||
net_name: '{{test_net_name}}'
|
||||
state: present
|
||||
allowed_urls:
|
||||
- "http://www.ansible.com/*"
|
||||
register: single_allowed_idempotent
|
||||
|
||||
- debug:
|
||||
var: single_allowed_idempotent
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- single_allowed_idempotent.changed == False
|
||||
|
||||
- name: Set single blocked URL pattern
|
||||
meraki_content_filtering:
|
||||
auth_key: '{{auth_key}}'
|
||||
org_name: '{{test_org_name}}'
|
||||
net_name: '{{test_net_name}}'
|
||||
state: present
|
||||
blocked_urls:
|
||||
- "http://www.ansible.com/*"
|
||||
register: single_blocked
|
||||
|
||||
- debug:
|
||||
var: single_blocked
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- single_blocked.data.blockedUrlPatterns | length == 1
|
||||
|
||||
- name: Set two allowed URL pattern
|
||||
meraki_content_filtering:
|
||||
auth_key: '{{auth_key}}'
|
||||
org_name: '{{test_org_name}}'
|
||||
net_name: '{{test_net_name}}'
|
||||
state: present
|
||||
allowed_urls:
|
||||
- "http://www.ansible.com/*"
|
||||
- "http://www.redhat.com"
|
||||
register: two_allowed
|
||||
|
||||
- debug:
|
||||
var: two_allowed
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- two_allowed.changed == True
|
||||
- two_allowed.data.allowedUrlPatterns | length == 2
|
||||
|
||||
- name: Set blocked URL category
|
||||
meraki_content_filtering:
|
||||
auth_key: '{{auth_key}}'
|
||||
org_name: '{{test_org_name}}'
|
||||
net_name: '{{test_net_name}}'
|
||||
state: present
|
||||
category_list_size: full list
|
||||
blocked_categories:
|
||||
- "Adult and Pornography"
|
||||
register: blocked_cateogry
|
||||
|
||||
- debug:
|
||||
var: blocked_cateogry
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- blocked_cateogry.changed == True
|
||||
- blocked_cateogry.data.blockedUrlCategories | length == 1
|
||||
- blocked_cateogry.data.urlCategoryListSize == "fullList"
|
||||
|
||||
always:
|
||||
- name: Reset policies
|
||||
meraki_content_filtering:
|
||||
auth_key: '{{auth_key}}'
|
||||
org_name: '{{test_org_name}}'
|
||||
net_name: '{{test_net_name}}'
|
||||
state: present
|
||||
category_list_size: full list
|
||||
allowed_urls:
|
||||
-
|
||||
blocked_urls:
|
||||
-
|
||||
# blocked_categories:
|
||||
# -
|
||||
Reference in New Issue
Block a user