You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/units/modules/network/fortios/test_fortios_wireless_contr...

1110 lines
46 KiB
Python

# Copyright 2019 Fortinet, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <https://www.gnu.org/licenses/>.
# Make coding more python3-ish
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
import json
import pytest
from mock import ANY
from ansible.module_utils.network.fortios.fortios import FortiOSHandler
try:
from ansible.modules.network.fortios import fortios_wireless_controller_vap
except ImportError:
pytest.skip("Could not load required modules for testing", allow_module_level=True)
@pytest.fixture(autouse=True)
def connection_mock(mocker):
connection_class_mock = mocker.patch('ansible.modules.network.fortios.fortios_wireless_controller_vap.Connection')
return connection_class_mock
fos_instance = FortiOSHandler(connection_mock)
def test_wireless_controller_vap_creation(mocker):
schema_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.schema')
set_method_result = {'status': 'success', 'http_method': 'POST', 'http_status': 200}
set_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.set', return_value=set_method_result)
input_data = {
'username': 'admin',
'state': 'present',
'wireless_controller_vap': {
'acct_interim_interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast_ssid': 'enable',
'broadcast_suppression': 'dhcp-up',
'captive_portal_ac_name': 'test_value_8',
'captive_portal_macauth_radius_secret': 'test_value_9',
'captive_portal_macauth_radius_server': 'test_value_10',
'captive_portal_radius_secret': 'test_value_11',
'captive_portal_radius_server': 'test_value_12',
'captive_portal_session_timeout_interval': '13',
'dhcp_lease_time': '14',
'dhcp_option82_circuit_id_insertion': 'style-1',
'dhcp_option82_insertion': 'enable',
'dhcp_option82_remote_id_insertion': 'style-1',
'dynamic_vlan': 'enable',
'eap_reauth': 'enable',
'eap_reauth_intv': '20',
'eapol_key_retries': 'disable',
'encrypt': 'TKIP',
'external_fast_roaming': 'enable',
'external_logout': 'test_value_24',
'external_web': 'test_value_25',
'fast_bss_transition': 'disable',
'fast_roaming': 'enable',
'ft_mobility_domain': '28',
'ft_over_ds': 'disable',
'ft_r0_key_lifetime': '30',
'gtk_rekey': 'enable',
'gtk_rekey_intv': '32',
'hotspot20_profile': 'test_value_33',
'intra_vap_privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local_authentication': 'enable',
'local_bridging': 'enable',
'local_lan': 'allow',
'local_standalone': 'enable',
'local_standalone_nat': 'enable',
'mac_auth_bypass': 'enable',
'mac_filter': 'enable',
'mac_filter_policy_other': 'allow',
'max_clients': '47',
'max_clients_ap': '48',
'me_disable_thresh': '49',
'mesh_backhaul': 'enable',
'mpsk': 'enable',
'mpsk_concurrent_clients': '52',
'multicast_enhance': 'enable',
'multicast_rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf_assoc_comeback_timeout': '59',
'pmf_sa_query_retry_timeout': '60',
'portal_message_override_group': 'test_value_61',
'portal_type': 'auth',
'probe_resp_suppression': 'enable',
'probe_resp_threshold': 'test_value_64',
'ptk_rekey': 'enable',
'ptk_rekey_intv': '66',
'qos_profile': 'test_value_67',
'quarantine': 'enable',
'radio_2g_threshold': 'test_value_69',
'radio_5g_threshold': 'test_value_70',
'radio_sensitivity': 'enable',
'radius_mac_auth': 'enable',
'radius_mac_auth_server': 'test_value_73',
'radius_server': 'test_value_74',
'rates_11a': '1',
'rates_11ac_ss12': 'mcs0/1',
'rates_11ac_ss34': 'mcs0/3',
'rates_11bg': '1',
'rates_11n_ss12': 'mcs0/1',
'rates_11n_ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security_exempt_list': 'test_value_83',
'security_obsolete_option': 'enable',
'security_redirect_url': 'test_value_85',
'split_tunneling': 'enable',
'ssid': 'test_value_87',
'tkip_counter_measure': 'enable',
'utm_profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan_auto': 'enable',
'vlan_pooling': 'wtp-group',
'vlanid': '93',
'voice_enterprise': 'disable'
},
'vdom': 'root'}
is_error, changed, response = fortios_wireless_controller_vap.fortios_wireless_controller(input_data, fos_instance)
expected_data = {
'acct-interim-interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast-ssid': 'enable',
'broadcast-suppression': 'dhcp-up',
'captive-portal-ac-name': 'test_value_8',
'captive-portal-macauth-radius-secret': 'test_value_9',
'captive-portal-macauth-radius-server': 'test_value_10',
'captive-portal-radius-secret': 'test_value_11',
'captive-portal-radius-server': 'test_value_12',
'captive-portal-session-timeout-interval': '13',
'dhcp-lease-time': '14',
'dhcp-option82-circuit-id-insertion': 'style-1',
'dhcp-option82-insertion': 'enable',
'dhcp-option82-remote-id-insertion': 'style-1',
'dynamic-vlan': 'enable',
'eap-reauth': 'enable',
'eap-reauth-intv': '20',
'eapol-key-retries': 'disable',
'encrypt': 'TKIP',
'external-fast-roaming': 'enable',
'external-logout': 'test_value_24',
'external-web': 'test_value_25',
'fast-bss-transition': 'disable',
'fast-roaming': 'enable',
'ft-mobility-domain': '28',
'ft-over-ds': 'disable',
'ft-r0-key-lifetime': '30',
'gtk-rekey': 'enable',
'gtk-rekey-intv': '32',
'hotspot20-profile': 'test_value_33',
'intra-vap-privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local-authentication': 'enable',
'local-bridging': 'enable',
'local-lan': 'allow',
'local-standalone': 'enable',
'local-standalone-nat': 'enable',
'mac-auth-bypass': 'enable',
'mac-filter': 'enable',
'mac-filter-policy-other': 'allow',
'max-clients': '47',
'max-clients-ap': '48',
'me-disable-thresh': '49',
'mesh-backhaul': 'enable',
'mpsk': 'enable',
'mpsk-concurrent-clients': '52',
'multicast-enhance': 'enable',
'multicast-rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf-assoc-comeback-timeout': '59',
'pmf-sa-query-retry-timeout': '60',
'portal-message-override-group': 'test_value_61',
'portal-type': 'auth',
'probe-resp-suppression': 'enable',
'probe-resp-threshold': 'test_value_64',
'ptk-rekey': 'enable',
'ptk-rekey-intv': '66',
'qos-profile': 'test_value_67',
'quarantine': 'enable',
'radio-2g-threshold': 'test_value_69',
'radio-5g-threshold': 'test_value_70',
'radio-sensitivity': 'enable',
'radius-mac-auth': 'enable',
'radius-mac-auth-server': 'test_value_73',
'radius-server': 'test_value_74',
'rates-11a': '1',
'rates-11ac-ss12': 'mcs0/1',
'rates-11ac-ss34': 'mcs0/3',
'rates-11bg': '1',
'rates-11n-ss12': 'mcs0/1',
'rates-11n-ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security-exempt-list': 'test_value_83',
'security-obsolete-option': 'enable',
'security-redirect-url': 'test_value_85',
'split-tunneling': 'enable',
'ssid': 'test_value_87',
'tkip-counter-measure': 'enable',
'utm-profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan-auto': 'enable',
'vlan-pooling': 'wtp-group',
'vlanid': '93',
'voice-enterprise': 'disable'
}
set_method_mock.assert_called_with('wireless-controller', 'vap', data=expected_data, vdom='root')
schema_method_mock.assert_not_called()
assert not is_error
assert changed
assert response['status'] == 'success'
assert response['http_status'] == 200
def test_wireless_controller_vap_creation_fails(mocker):
schema_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.schema')
set_method_result = {'status': 'error', 'http_method': 'POST', 'http_status': 500}
set_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.set', return_value=set_method_result)
input_data = {
'username': 'admin',
'state': 'present',
'wireless_controller_vap': {
'acct_interim_interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast_ssid': 'enable',
'broadcast_suppression': 'dhcp-up',
'captive_portal_ac_name': 'test_value_8',
'captive_portal_macauth_radius_secret': 'test_value_9',
'captive_portal_macauth_radius_server': 'test_value_10',
'captive_portal_radius_secret': 'test_value_11',
'captive_portal_radius_server': 'test_value_12',
'captive_portal_session_timeout_interval': '13',
'dhcp_lease_time': '14',
'dhcp_option82_circuit_id_insertion': 'style-1',
'dhcp_option82_insertion': 'enable',
'dhcp_option82_remote_id_insertion': 'style-1',
'dynamic_vlan': 'enable',
'eap_reauth': 'enable',
'eap_reauth_intv': '20',
'eapol_key_retries': 'disable',
'encrypt': 'TKIP',
'external_fast_roaming': 'enable',
'external_logout': 'test_value_24',
'external_web': 'test_value_25',
'fast_bss_transition': 'disable',
'fast_roaming': 'enable',
'ft_mobility_domain': '28',
'ft_over_ds': 'disable',
'ft_r0_key_lifetime': '30',
'gtk_rekey': 'enable',
'gtk_rekey_intv': '32',
'hotspot20_profile': 'test_value_33',
'intra_vap_privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local_authentication': 'enable',
'local_bridging': 'enable',
'local_lan': 'allow',
'local_standalone': 'enable',
'local_standalone_nat': 'enable',
'mac_auth_bypass': 'enable',
'mac_filter': 'enable',
'mac_filter_policy_other': 'allow',
'max_clients': '47',
'max_clients_ap': '48',
'me_disable_thresh': '49',
'mesh_backhaul': 'enable',
'mpsk': 'enable',
'mpsk_concurrent_clients': '52',
'multicast_enhance': 'enable',
'multicast_rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf_assoc_comeback_timeout': '59',
'pmf_sa_query_retry_timeout': '60',
'portal_message_override_group': 'test_value_61',
'portal_type': 'auth',
'probe_resp_suppression': 'enable',
'probe_resp_threshold': 'test_value_64',
'ptk_rekey': 'enable',
'ptk_rekey_intv': '66',
'qos_profile': 'test_value_67',
'quarantine': 'enable',
'radio_2g_threshold': 'test_value_69',
'radio_5g_threshold': 'test_value_70',
'radio_sensitivity': 'enable',
'radius_mac_auth': 'enable',
'radius_mac_auth_server': 'test_value_73',
'radius_server': 'test_value_74',
'rates_11a': '1',
'rates_11ac_ss12': 'mcs0/1',
'rates_11ac_ss34': 'mcs0/3',
'rates_11bg': '1',
'rates_11n_ss12': 'mcs0/1',
'rates_11n_ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security_exempt_list': 'test_value_83',
'security_obsolete_option': 'enable',
'security_redirect_url': 'test_value_85',
'split_tunneling': 'enable',
'ssid': 'test_value_87',
'tkip_counter_measure': 'enable',
'utm_profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan_auto': 'enable',
'vlan_pooling': 'wtp-group',
'vlanid': '93',
'voice_enterprise': 'disable'
},
'vdom': 'root'}
is_error, changed, response = fortios_wireless_controller_vap.fortios_wireless_controller(input_data, fos_instance)
expected_data = {
'acct-interim-interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast-ssid': 'enable',
'broadcast-suppression': 'dhcp-up',
'captive-portal-ac-name': 'test_value_8',
'captive-portal-macauth-radius-secret': 'test_value_9',
'captive-portal-macauth-radius-server': 'test_value_10',
'captive-portal-radius-secret': 'test_value_11',
'captive-portal-radius-server': 'test_value_12',
'captive-portal-session-timeout-interval': '13',
'dhcp-lease-time': '14',
'dhcp-option82-circuit-id-insertion': 'style-1',
'dhcp-option82-insertion': 'enable',
'dhcp-option82-remote-id-insertion': 'style-1',
'dynamic-vlan': 'enable',
'eap-reauth': 'enable',
'eap-reauth-intv': '20',
'eapol-key-retries': 'disable',
'encrypt': 'TKIP',
'external-fast-roaming': 'enable',
'external-logout': 'test_value_24',
'external-web': 'test_value_25',
'fast-bss-transition': 'disable',
'fast-roaming': 'enable',
'ft-mobility-domain': '28',
'ft-over-ds': 'disable',
'ft-r0-key-lifetime': '30',
'gtk-rekey': 'enable',
'gtk-rekey-intv': '32',
'hotspot20-profile': 'test_value_33',
'intra-vap-privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local-authentication': 'enable',
'local-bridging': 'enable',
'local-lan': 'allow',
'local-standalone': 'enable',
'local-standalone-nat': 'enable',
'mac-auth-bypass': 'enable',
'mac-filter': 'enable',
'mac-filter-policy-other': 'allow',
'max-clients': '47',
'max-clients-ap': '48',
'me-disable-thresh': '49',
'mesh-backhaul': 'enable',
'mpsk': 'enable',
'mpsk-concurrent-clients': '52',
'multicast-enhance': 'enable',
'multicast-rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf-assoc-comeback-timeout': '59',
'pmf-sa-query-retry-timeout': '60',
'portal-message-override-group': 'test_value_61',
'portal-type': 'auth',
'probe-resp-suppression': 'enable',
'probe-resp-threshold': 'test_value_64',
'ptk-rekey': 'enable',
'ptk-rekey-intv': '66',
'qos-profile': 'test_value_67',
'quarantine': 'enable',
'radio-2g-threshold': 'test_value_69',
'radio-5g-threshold': 'test_value_70',
'radio-sensitivity': 'enable',
'radius-mac-auth': 'enable',
'radius-mac-auth-server': 'test_value_73',
'radius-server': 'test_value_74',
'rates-11a': '1',
'rates-11ac-ss12': 'mcs0/1',
'rates-11ac-ss34': 'mcs0/3',
'rates-11bg': '1',
'rates-11n-ss12': 'mcs0/1',
'rates-11n-ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security-exempt-list': 'test_value_83',
'security-obsolete-option': 'enable',
'security-redirect-url': 'test_value_85',
'split-tunneling': 'enable',
'ssid': 'test_value_87',
'tkip-counter-measure': 'enable',
'utm-profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan-auto': 'enable',
'vlan-pooling': 'wtp-group',
'vlanid': '93',
'voice-enterprise': 'disable'
}
set_method_mock.assert_called_with('wireless-controller', 'vap', data=expected_data, vdom='root')
schema_method_mock.assert_not_called()
assert is_error
assert not changed
assert response['status'] == 'error'
assert response['http_status'] == 500
def test_wireless_controller_vap_removal(mocker):
schema_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.schema')
delete_method_result = {'status': 'success', 'http_method': 'POST', 'http_status': 200}
delete_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.delete', return_value=delete_method_result)
input_data = {
'username': 'admin',
'state': 'absent',
'wireless_controller_vap': {
'acct_interim_interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast_ssid': 'enable',
'broadcast_suppression': 'dhcp-up',
'captive_portal_ac_name': 'test_value_8',
'captive_portal_macauth_radius_secret': 'test_value_9',
'captive_portal_macauth_radius_server': 'test_value_10',
'captive_portal_radius_secret': 'test_value_11',
'captive_portal_radius_server': 'test_value_12',
'captive_portal_session_timeout_interval': '13',
'dhcp_lease_time': '14',
'dhcp_option82_circuit_id_insertion': 'style-1',
'dhcp_option82_insertion': 'enable',
'dhcp_option82_remote_id_insertion': 'style-1',
'dynamic_vlan': 'enable',
'eap_reauth': 'enable',
'eap_reauth_intv': '20',
'eapol_key_retries': 'disable',
'encrypt': 'TKIP',
'external_fast_roaming': 'enable',
'external_logout': 'test_value_24',
'external_web': 'test_value_25',
'fast_bss_transition': 'disable',
'fast_roaming': 'enable',
'ft_mobility_domain': '28',
'ft_over_ds': 'disable',
'ft_r0_key_lifetime': '30',
'gtk_rekey': 'enable',
'gtk_rekey_intv': '32',
'hotspot20_profile': 'test_value_33',
'intra_vap_privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local_authentication': 'enable',
'local_bridging': 'enable',
'local_lan': 'allow',
'local_standalone': 'enable',
'local_standalone_nat': 'enable',
'mac_auth_bypass': 'enable',
'mac_filter': 'enable',
'mac_filter_policy_other': 'allow',
'max_clients': '47',
'max_clients_ap': '48',
'me_disable_thresh': '49',
'mesh_backhaul': 'enable',
'mpsk': 'enable',
'mpsk_concurrent_clients': '52',
'multicast_enhance': 'enable',
'multicast_rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf_assoc_comeback_timeout': '59',
'pmf_sa_query_retry_timeout': '60',
'portal_message_override_group': 'test_value_61',
'portal_type': 'auth',
'probe_resp_suppression': 'enable',
'probe_resp_threshold': 'test_value_64',
'ptk_rekey': 'enable',
'ptk_rekey_intv': '66',
'qos_profile': 'test_value_67',
'quarantine': 'enable',
'radio_2g_threshold': 'test_value_69',
'radio_5g_threshold': 'test_value_70',
'radio_sensitivity': 'enable',
'radius_mac_auth': 'enable',
'radius_mac_auth_server': 'test_value_73',
'radius_server': 'test_value_74',
'rates_11a': '1',
'rates_11ac_ss12': 'mcs0/1',
'rates_11ac_ss34': 'mcs0/3',
'rates_11bg': '1',
'rates_11n_ss12': 'mcs0/1',
'rates_11n_ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security_exempt_list': 'test_value_83',
'security_obsolete_option': 'enable',
'security_redirect_url': 'test_value_85',
'split_tunneling': 'enable',
'ssid': 'test_value_87',
'tkip_counter_measure': 'enable',
'utm_profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan_auto': 'enable',
'vlan_pooling': 'wtp-group',
'vlanid': '93',
'voice_enterprise': 'disable'
},
'vdom': 'root'}
is_error, changed, response = fortios_wireless_controller_vap.fortios_wireless_controller(input_data, fos_instance)
delete_method_mock.assert_called_with('wireless-controller', 'vap', mkey=ANY, vdom='root')
schema_method_mock.assert_not_called()
assert not is_error
assert changed
assert response['status'] == 'success'
assert response['http_status'] == 200
def test_wireless_controller_vap_deletion_fails(mocker):
schema_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.schema')
delete_method_result = {'status': 'error', 'http_method': 'POST', 'http_status': 500}
delete_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.delete', return_value=delete_method_result)
input_data = {
'username': 'admin',
'state': 'absent',
'wireless_controller_vap': {
'acct_interim_interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast_ssid': 'enable',
'broadcast_suppression': 'dhcp-up',
'captive_portal_ac_name': 'test_value_8',
'captive_portal_macauth_radius_secret': 'test_value_9',
'captive_portal_macauth_radius_server': 'test_value_10',
'captive_portal_radius_secret': 'test_value_11',
'captive_portal_radius_server': 'test_value_12',
'captive_portal_session_timeout_interval': '13',
'dhcp_lease_time': '14',
'dhcp_option82_circuit_id_insertion': 'style-1',
'dhcp_option82_insertion': 'enable',
'dhcp_option82_remote_id_insertion': 'style-1',
'dynamic_vlan': 'enable',
'eap_reauth': 'enable',
'eap_reauth_intv': '20',
'eapol_key_retries': 'disable',
'encrypt': 'TKIP',
'external_fast_roaming': 'enable',
'external_logout': 'test_value_24',
'external_web': 'test_value_25',
'fast_bss_transition': 'disable',
'fast_roaming': 'enable',
'ft_mobility_domain': '28',
'ft_over_ds': 'disable',
'ft_r0_key_lifetime': '30',
'gtk_rekey': 'enable',
'gtk_rekey_intv': '32',
'hotspot20_profile': 'test_value_33',
'intra_vap_privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local_authentication': 'enable',
'local_bridging': 'enable',
'local_lan': 'allow',
'local_standalone': 'enable',
'local_standalone_nat': 'enable',
'mac_auth_bypass': 'enable',
'mac_filter': 'enable',
'mac_filter_policy_other': 'allow',
'max_clients': '47',
'max_clients_ap': '48',
'me_disable_thresh': '49',
'mesh_backhaul': 'enable',
'mpsk': 'enable',
'mpsk_concurrent_clients': '52',
'multicast_enhance': 'enable',
'multicast_rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf_assoc_comeback_timeout': '59',
'pmf_sa_query_retry_timeout': '60',
'portal_message_override_group': 'test_value_61',
'portal_type': 'auth',
'probe_resp_suppression': 'enable',
'probe_resp_threshold': 'test_value_64',
'ptk_rekey': 'enable',
'ptk_rekey_intv': '66',
'qos_profile': 'test_value_67',
'quarantine': 'enable',
'radio_2g_threshold': 'test_value_69',
'radio_5g_threshold': 'test_value_70',
'radio_sensitivity': 'enable',
'radius_mac_auth': 'enable',
'radius_mac_auth_server': 'test_value_73',
'radius_server': 'test_value_74',
'rates_11a': '1',
'rates_11ac_ss12': 'mcs0/1',
'rates_11ac_ss34': 'mcs0/3',
'rates_11bg': '1',
'rates_11n_ss12': 'mcs0/1',
'rates_11n_ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security_exempt_list': 'test_value_83',
'security_obsolete_option': 'enable',
'security_redirect_url': 'test_value_85',
'split_tunneling': 'enable',
'ssid': 'test_value_87',
'tkip_counter_measure': 'enable',
'utm_profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan_auto': 'enable',
'vlan_pooling': 'wtp-group',
'vlanid': '93',
'voice_enterprise': 'disable'
},
'vdom': 'root'}
is_error, changed, response = fortios_wireless_controller_vap.fortios_wireless_controller(input_data, fos_instance)
delete_method_mock.assert_called_with('wireless-controller', 'vap', mkey=ANY, vdom='root')
schema_method_mock.assert_not_called()
assert is_error
assert not changed
assert response['status'] == 'error'
assert response['http_status'] == 500
def test_wireless_controller_vap_idempotent(mocker):
schema_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.schema')
set_method_result = {'status': 'error', 'http_method': 'DELETE', 'http_status': 404}
set_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.set', return_value=set_method_result)
input_data = {
'username': 'admin',
'state': 'present',
'wireless_controller_vap': {
'acct_interim_interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast_ssid': 'enable',
'broadcast_suppression': 'dhcp-up',
'captive_portal_ac_name': 'test_value_8',
'captive_portal_macauth_radius_secret': 'test_value_9',
'captive_portal_macauth_radius_server': 'test_value_10',
'captive_portal_radius_secret': 'test_value_11',
'captive_portal_radius_server': 'test_value_12',
'captive_portal_session_timeout_interval': '13',
'dhcp_lease_time': '14',
'dhcp_option82_circuit_id_insertion': 'style-1',
'dhcp_option82_insertion': 'enable',
'dhcp_option82_remote_id_insertion': 'style-1',
'dynamic_vlan': 'enable',
'eap_reauth': 'enable',
'eap_reauth_intv': '20',
'eapol_key_retries': 'disable',
'encrypt': 'TKIP',
'external_fast_roaming': 'enable',
'external_logout': 'test_value_24',
'external_web': 'test_value_25',
'fast_bss_transition': 'disable',
'fast_roaming': 'enable',
'ft_mobility_domain': '28',
'ft_over_ds': 'disable',
'ft_r0_key_lifetime': '30',
'gtk_rekey': 'enable',
'gtk_rekey_intv': '32',
'hotspot20_profile': 'test_value_33',
'intra_vap_privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local_authentication': 'enable',
'local_bridging': 'enable',
'local_lan': 'allow',
'local_standalone': 'enable',
'local_standalone_nat': 'enable',
'mac_auth_bypass': 'enable',
'mac_filter': 'enable',
'mac_filter_policy_other': 'allow',
'max_clients': '47',
'max_clients_ap': '48',
'me_disable_thresh': '49',
'mesh_backhaul': 'enable',
'mpsk': 'enable',
'mpsk_concurrent_clients': '52',
'multicast_enhance': 'enable',
'multicast_rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf_assoc_comeback_timeout': '59',
'pmf_sa_query_retry_timeout': '60',
'portal_message_override_group': 'test_value_61',
'portal_type': 'auth',
'probe_resp_suppression': 'enable',
'probe_resp_threshold': 'test_value_64',
'ptk_rekey': 'enable',
'ptk_rekey_intv': '66',
'qos_profile': 'test_value_67',
'quarantine': 'enable',
'radio_2g_threshold': 'test_value_69',
'radio_5g_threshold': 'test_value_70',
'radio_sensitivity': 'enable',
'radius_mac_auth': 'enable',
'radius_mac_auth_server': 'test_value_73',
'radius_server': 'test_value_74',
'rates_11a': '1',
'rates_11ac_ss12': 'mcs0/1',
'rates_11ac_ss34': 'mcs0/3',
'rates_11bg': '1',
'rates_11n_ss12': 'mcs0/1',
'rates_11n_ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security_exempt_list': 'test_value_83',
'security_obsolete_option': 'enable',
'security_redirect_url': 'test_value_85',
'split_tunneling': 'enable',
'ssid': 'test_value_87',
'tkip_counter_measure': 'enable',
'utm_profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan_auto': 'enable',
'vlan_pooling': 'wtp-group',
'vlanid': '93',
'voice_enterprise': 'disable'
},
'vdom': 'root'}
is_error, changed, response = fortios_wireless_controller_vap.fortios_wireless_controller(input_data, fos_instance)
expected_data = {
'acct-interim-interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast-ssid': 'enable',
'broadcast-suppression': 'dhcp-up',
'captive-portal-ac-name': 'test_value_8',
'captive-portal-macauth-radius-secret': 'test_value_9',
'captive-portal-macauth-radius-server': 'test_value_10',
'captive-portal-radius-secret': 'test_value_11',
'captive-portal-radius-server': 'test_value_12',
'captive-portal-session-timeout-interval': '13',
'dhcp-lease-time': '14',
'dhcp-option82-circuit-id-insertion': 'style-1',
'dhcp-option82-insertion': 'enable',
'dhcp-option82-remote-id-insertion': 'style-1',
'dynamic-vlan': 'enable',
'eap-reauth': 'enable',
'eap-reauth-intv': '20',
'eapol-key-retries': 'disable',
'encrypt': 'TKIP',
'external-fast-roaming': 'enable',
'external-logout': 'test_value_24',
'external-web': 'test_value_25',
'fast-bss-transition': 'disable',
'fast-roaming': 'enable',
'ft-mobility-domain': '28',
'ft-over-ds': 'disable',
'ft-r0-key-lifetime': '30',
'gtk-rekey': 'enable',
'gtk-rekey-intv': '32',
'hotspot20-profile': 'test_value_33',
'intra-vap-privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local-authentication': 'enable',
'local-bridging': 'enable',
'local-lan': 'allow',
'local-standalone': 'enable',
'local-standalone-nat': 'enable',
'mac-auth-bypass': 'enable',
'mac-filter': 'enable',
'mac-filter-policy-other': 'allow',
'max-clients': '47',
'max-clients-ap': '48',
'me-disable-thresh': '49',
'mesh-backhaul': 'enable',
'mpsk': 'enable',
'mpsk-concurrent-clients': '52',
'multicast-enhance': 'enable',
'multicast-rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf-assoc-comeback-timeout': '59',
'pmf-sa-query-retry-timeout': '60',
'portal-message-override-group': 'test_value_61',
'portal-type': 'auth',
'probe-resp-suppression': 'enable',
'probe-resp-threshold': 'test_value_64',
'ptk-rekey': 'enable',
'ptk-rekey-intv': '66',
'qos-profile': 'test_value_67',
'quarantine': 'enable',
'radio-2g-threshold': 'test_value_69',
'radio-5g-threshold': 'test_value_70',
'radio-sensitivity': 'enable',
'radius-mac-auth': 'enable',
'radius-mac-auth-server': 'test_value_73',
'radius-server': 'test_value_74',
'rates-11a': '1',
'rates-11ac-ss12': 'mcs0/1',
'rates-11ac-ss34': 'mcs0/3',
'rates-11bg': '1',
'rates-11n-ss12': 'mcs0/1',
'rates-11n-ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security-exempt-list': 'test_value_83',
'security-obsolete-option': 'enable',
'security-redirect-url': 'test_value_85',
'split-tunneling': 'enable',
'ssid': 'test_value_87',
'tkip-counter-measure': 'enable',
'utm-profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan-auto': 'enable',
'vlan-pooling': 'wtp-group',
'vlanid': '93',
'voice-enterprise': 'disable'
}
set_method_mock.assert_called_with('wireless-controller', 'vap', data=expected_data, vdom='root')
schema_method_mock.assert_not_called()
assert not is_error
assert not changed
assert response['status'] == 'error'
assert response['http_status'] == 404
def test_wireless_controller_vap_filter_foreign_attributes(mocker):
schema_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.schema')
set_method_result = {'status': 'success', 'http_method': 'POST', 'http_status': 200}
set_method_mock = mocker.patch('ansible.module_utils.network.fortios.fortios.FortiOSHandler.set', return_value=set_method_result)
input_data = {
'username': 'admin',
'state': 'present',
'wireless_controller_vap': {
'random_attribute_not_valid': 'tag',
'acct_interim_interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast_ssid': 'enable',
'broadcast_suppression': 'dhcp-up',
'captive_portal_ac_name': 'test_value_8',
'captive_portal_macauth_radius_secret': 'test_value_9',
'captive_portal_macauth_radius_server': 'test_value_10',
'captive_portal_radius_secret': 'test_value_11',
'captive_portal_radius_server': 'test_value_12',
'captive_portal_session_timeout_interval': '13',
'dhcp_lease_time': '14',
'dhcp_option82_circuit_id_insertion': 'style-1',
'dhcp_option82_insertion': 'enable',
'dhcp_option82_remote_id_insertion': 'style-1',
'dynamic_vlan': 'enable',
'eap_reauth': 'enable',
'eap_reauth_intv': '20',
'eapol_key_retries': 'disable',
'encrypt': 'TKIP',
'external_fast_roaming': 'enable',
'external_logout': 'test_value_24',
'external_web': 'test_value_25',
'fast_bss_transition': 'disable',
'fast_roaming': 'enable',
'ft_mobility_domain': '28',
'ft_over_ds': 'disable',
'ft_r0_key_lifetime': '30',
'gtk_rekey': 'enable',
'gtk_rekey_intv': '32',
'hotspot20_profile': 'test_value_33',
'intra_vap_privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local_authentication': 'enable',
'local_bridging': 'enable',
'local_lan': 'allow',
'local_standalone': 'enable',
'local_standalone_nat': 'enable',
'mac_auth_bypass': 'enable',
'mac_filter': 'enable',
'mac_filter_policy_other': 'allow',
'max_clients': '47',
'max_clients_ap': '48',
'me_disable_thresh': '49',
'mesh_backhaul': 'enable',
'mpsk': 'enable',
'mpsk_concurrent_clients': '52',
'multicast_enhance': 'enable',
'multicast_rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf_assoc_comeback_timeout': '59',
'pmf_sa_query_retry_timeout': '60',
'portal_message_override_group': 'test_value_61',
'portal_type': 'auth',
'probe_resp_suppression': 'enable',
'probe_resp_threshold': 'test_value_64',
'ptk_rekey': 'enable',
'ptk_rekey_intv': '66',
'qos_profile': 'test_value_67',
'quarantine': 'enable',
'radio_2g_threshold': 'test_value_69',
'radio_5g_threshold': 'test_value_70',
'radio_sensitivity': 'enable',
'radius_mac_auth': 'enable',
'radius_mac_auth_server': 'test_value_73',
'radius_server': 'test_value_74',
'rates_11a': '1',
'rates_11ac_ss12': 'mcs0/1',
'rates_11ac_ss34': 'mcs0/3',
'rates_11bg': '1',
'rates_11n_ss12': 'mcs0/1',
'rates_11n_ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security_exempt_list': 'test_value_83',
'security_obsolete_option': 'enable',
'security_redirect_url': 'test_value_85',
'split_tunneling': 'enable',
'ssid': 'test_value_87',
'tkip_counter_measure': 'enable',
'utm_profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan_auto': 'enable',
'vlan_pooling': 'wtp-group',
'vlanid': '93',
'voice_enterprise': 'disable'
},
'vdom': 'root'}
is_error, changed, response = fortios_wireless_controller_vap.fortios_wireless_controller(input_data, fos_instance)
expected_data = {
'acct-interim-interval': '3',
'alias': 'test_value_4',
'auth': 'psk',
'broadcast-ssid': 'enable',
'broadcast-suppression': 'dhcp-up',
'captive-portal-ac-name': 'test_value_8',
'captive-portal-macauth-radius-secret': 'test_value_9',
'captive-portal-macauth-radius-server': 'test_value_10',
'captive-portal-radius-secret': 'test_value_11',
'captive-portal-radius-server': 'test_value_12',
'captive-portal-session-timeout-interval': '13',
'dhcp-lease-time': '14',
'dhcp-option82-circuit-id-insertion': 'style-1',
'dhcp-option82-insertion': 'enable',
'dhcp-option82-remote-id-insertion': 'style-1',
'dynamic-vlan': 'enable',
'eap-reauth': 'enable',
'eap-reauth-intv': '20',
'eapol-key-retries': 'disable',
'encrypt': 'TKIP',
'external-fast-roaming': 'enable',
'external-logout': 'test_value_24',
'external-web': 'test_value_25',
'fast-bss-transition': 'disable',
'fast-roaming': 'enable',
'ft-mobility-domain': '28',
'ft-over-ds': 'disable',
'ft-r0-key-lifetime': '30',
'gtk-rekey': 'enable',
'gtk-rekey-intv': '32',
'hotspot20-profile': 'test_value_33',
'intra-vap-privacy': 'enable',
'ip': 'test_value_35',
'key': 'test_value_36',
'keyindex': '37',
'ldpc': 'disable',
'local-authentication': 'enable',
'local-bridging': 'enable',
'local-lan': 'allow',
'local-standalone': 'enable',
'local-standalone-nat': 'enable',
'mac-auth-bypass': 'enable',
'mac-filter': 'enable',
'mac-filter-policy-other': 'allow',
'max-clients': '47',
'max-clients-ap': '48',
'me-disable-thresh': '49',
'mesh-backhaul': 'enable',
'mpsk': 'enable',
'mpsk-concurrent-clients': '52',
'multicast-enhance': 'enable',
'multicast-rate': '0',
'name': 'default_name_55',
'okc': 'disable',
'passphrase': 'test_value_57',
'pmf': 'disable',
'pmf-assoc-comeback-timeout': '59',
'pmf-sa-query-retry-timeout': '60',
'portal-message-override-group': 'test_value_61',
'portal-type': 'auth',
'probe-resp-suppression': 'enable',
'probe-resp-threshold': 'test_value_64',
'ptk-rekey': 'enable',
'ptk-rekey-intv': '66',
'qos-profile': 'test_value_67',
'quarantine': 'enable',
'radio-2g-threshold': 'test_value_69',
'radio-5g-threshold': 'test_value_70',
'radio-sensitivity': 'enable',
'radius-mac-auth': 'enable',
'radius-mac-auth-server': 'test_value_73',
'radius-server': 'test_value_74',
'rates-11a': '1',
'rates-11ac-ss12': 'mcs0/1',
'rates-11ac-ss34': 'mcs0/3',
'rates-11bg': '1',
'rates-11n-ss12': 'mcs0/1',
'rates-11n-ss34': 'mcs16/3',
'schedule': 'test_value_81',
'security': 'open',
'security-exempt-list': 'test_value_83',
'security-obsolete-option': 'enable',
'security-redirect-url': 'test_value_85',
'split-tunneling': 'enable',
'ssid': 'test_value_87',
'tkip-counter-measure': 'enable',
'utm-profile': 'test_value_89',
'vdom': 'test_value_90',
'vlan-auto': 'enable',
'vlan-pooling': 'wtp-group',
'vlanid': '93',
'voice-enterprise': 'disable'
}
set_method_mock.assert_called_with('wireless-controller', 'vap', data=expected_data, vdom='root')
schema_method_mock.assert_not_called()
assert not is_error
assert changed
assert response['status'] == 'success'
assert response['http_status'] == 200