def test_create_ipv4_net_access(self, *args):
        set_module_args(dict(
            name='foo',
            ip_version='ipv4',
            split_tunnel=True,
            description='foobar',
            allow_local_subnet=True,
            allow_local_dns=True,
            snat_pool='foo_pool',
            dtls=True,
            dtls_port=4443,
            ipv4_lease_pool='ipv4lease',
            excluded_ipv4_adresses=[dict(subnet='10.10.10.1')],
            ipv4_address_space=[dict(subnet='192.168.1.0/24')],
            dns_address_space=['foobar.com'],
            excluded_dns_addresses=['bar-foo.org'],
            provider=dict(
                server='localhost',
                password='******',
                user='******'
            )
        ))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode,
        )

        # Override methods in the specific type of manager
        mm = ModuleManager(module=module)
        mm.exists = Mock(return_value=False)
        mm.create_on_device = Mock(return_value=True)

        results = mm.exec_module()

        assert results['changed'] is True
        assert results['ip_version'] == 'ipv4'
        assert results['split_tunnel'] == 'yes'
        assert results['allow_local_subnet'] == 'yes'
        assert results['allow_local_dns'] == 'yes'
        assert results['snat_pool'] == '/Common/foo_pool'
        assert results['description'] == 'foobar'
        assert results['dtls'] == 'yes'
        assert results['dtls_port'] == 4443
        assert results['ipv4_lease_pool'] == '/Common/ipv4lease'
        assert results['excluded_ipv4_adresses'] == [dict(subnet='10.10.10.1')]
        assert results['ipv4_address_space'] == [dict(subnet='192.168.1.0/24')]
        assert results['dns_address_space'] == ['foobar.com']
        assert results['excluded_dns_addresses'] == ['bar-foo.org']
    def test_update_ipv4_net_access(self, *args):
        set_module_args(dict(
            name='test',
            excluded_ipv4_adresses=[dict(subnet='10.10.10.1')],
            ipv4_address_space=[dict(subnet='192.168.1.0/24')],
            provider=dict(
                server='localhost',
                password='******',
                user='******'
            )
        ))

        current = ApiParameters(params=load_fixture('load_apm_network_access.json'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode,
        )

        # Override methods in the specific type of manager
        mm = ModuleManager(module=module)
        mm.exists = Mock(return_value=True)
        mm.update_on_device = Mock(return_value=True)
        mm.read_current_from_device = Mock(return_value=current)

        results = mm.exec_module()

        assert results['changed'] is True
        assert results['excluded_ipv4_adresses'] == [dict(subnet='10.10.10.1')]
        assert results['ipv4_address_space'] == [dict(subnet='192.168.1.0/24')]