summaryrefslogtreecommitdiff
path: root/test/units/modules
diff options
context:
space:
mode:
authorWojciech Wypior <w.wypior@f5.com>2019-06-21 14:45:30 +0100
committerTim Rupp <caphrim007@gmail.com>2019-06-21 06:45:29 -0700
commitbecca36c5e3bfc8f9318807ce13eea14db863ca0 (patch)
treed39d724b8c493bba3f9374409f39fdd22eda7b07 /test/units/modules
parente7c39460edfb3e960e8054b1d7eda80a2d666e92 (diff)
downloadansible-becca36c5e3bfc8f9318807ce13eea14db863ca0.tar.gz
Added new module for remote user management (#58171)
Diffstat (limited to 'test/units/modules')
-rw-r--r--test/units/modules/network/f5/fixtures/load_remote_user_settings.json10
-rw-r--r--test/units/modules/network/f5/test_bigip_remote_user.py128
2 files changed, 138 insertions, 0 deletions
diff --git a/test/units/modules/network/f5/fixtures/load_remote_user_settings.json b/test/units/modules/network/f5/fixtures/load_remote_user_settings.json
new file mode 100644
index 0000000000..296f462f97
--- /dev/null
+++ b/test/units/modules/network/f5/fixtures/load_remote_user_settings.json
@@ -0,0 +1,10 @@
+{
+ "kind": "tm:auth:remote-user:remote-userstate",
+ "selfLink": "https://localhost/mgmt/tm/auth/remote-user?ver=12.1.4",
+ "defaultPartition": "all",
+ "defaultPartitionReference": {
+ "link": "https://localhost/mgmt/tm/auth/partition/all?ver=12.1.4"
+ },
+ "defaultRole": "no-access",
+ "remoteConsoleAccess": "disabled"
+}
diff --git a/test/units/modules/network/f5/test_bigip_remote_user.py b/test/units/modules/network/f5/test_bigip_remote_user.py
new file mode 100644
index 0000000000..a31d696f22
--- /dev/null
+++ b/test/units/modules/network/f5/test_bigip_remote_user.py
@@ -0,0 +1,128 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright: (c) 2019, F5 Networks Inc.
+# GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+import os
+import json
+import pytest
+import sys
+
+if sys.version_info < (2, 7):
+ pytestmark = pytest.mark.skip("F5 Ansible modules require Python >= 2.7")
+
+from ansible.module_utils.basic import AnsibleModule
+
+try:
+ from library.modules.bigip_remote_user import ApiParameters
+ from library.modules.bigip_remote_user import ModuleParameters
+ from library.modules.bigip_remote_user import ModuleManager
+ from library.modules.bigip_remote_user import ArgumentSpec
+
+ # In Ansible 2.8, Ansible changed import paths.
+ from test.units.compat import unittest
+ from test.units.compat.mock import Mock
+ from test.units.compat.mock import patch
+
+ from test.units.modules.utils import set_module_args
+except ImportError:
+ from ansible.modules.network.f5.bigip_remote_user import ApiParameters
+ from ansible.modules.network.f5.bigip_remote_user import ModuleParameters
+ from ansible.modules.network.f5.bigip_remote_user import ModuleManager
+ from ansible.modules.network.f5.bigip_remote_user import ArgumentSpec
+
+ # Ansible 2.8 imports
+ from units.compat import unittest
+ from units.compat.mock import Mock
+ from units.compat.mock import patch
+
+ from units.modules.utils import set_module_args
+
+
+fixture_path = os.path.join(os.path.dirname(__file__), 'fixtures')
+fixture_data = {}
+
+
+def load_fixture(name):
+ path = os.path.join(fixture_path, name)
+
+ if path in fixture_data:
+ return fixture_data[path]
+
+ with open(path) as f:
+ data = f.read()
+
+ try:
+ data = json.loads(data)
+ except Exception:
+ pass
+
+ fixture_data[path] = data
+ return data
+
+
+class TestParameters(unittest.TestCase):
+ def test_module_parameters(self):
+ args = dict(
+ default_partition='Common',
+ default_role='admin',
+ console_access='yes',
+ description='this is a role'
+
+ )
+
+ p = ModuleParameters(params=args)
+ assert p.default_partition == 'Common'
+ assert p.default_role == 'admin'
+ assert p.console_access == 'tmsh'
+ assert p.description == 'this is a role'
+
+ def test_api_parameters(self):
+ args = load_fixture('load_remote_user_settings.json')
+ p = ApiParameters(params=args)
+ assert p.default_partition == 'all'
+ assert p.default_role == 'no-access'
+ assert p.console_access == 'disabled'
+ assert p.description is None
+
+
+class TestManager(unittest.TestCase):
+
+ def setUp(self):
+ self.spec = ArgumentSpec()
+
+ def test_create_remote_syslog(self, *args):
+ set_module_args(dict(
+ default_partition='Foobar',
+ default_role='auditor',
+ console_access='yes',
+ description='this is a role',
+ provider=dict(
+ server='localhost',
+ password='password',
+ user='admin'
+ )
+ ))
+
+ current = ApiParameters(params=load_fixture('load_remote_user_settings.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.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['description'] == 'this is a role'
+ assert results['default_partition'] == 'Foobar'
+ assert results['default_role'] == 'auditor'
+ assert results['console_access'] == 'yes'