Skip to content

Commit

Permalink
VMware: Fix module usages in module_utils
Browse files Browse the repository at this point in the history
Added unit tests for vmware.py

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
  • Loading branch information
Akasurde committed Dec 2, 2018
1 parent 2a4be27 commit 3c5b210
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 2 deletions.
3 changes: 3 additions & 0 deletions changelogs/fragments/47313-vmware-fix_module_error.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
bugfixes:
- Fix VMware module utils for self usage.
4 changes: 2 additions & 2 deletions lib/ansible/module_utils/vmware.py
Original file line number Diff line number Diff line change
Expand Up @@ -774,8 +774,8 @@ def __init__(self, module):
Constructor
"""
if not HAS_REQUESTS:
self.module.fail_json(msg="Unable to find 'requests' Python library which is required."
" Please install using 'pip install requests'")
module.fail_json(msg="Unable to find 'requests' Python library which is required."
" Please install using 'pip install requests'")

if not HAS_PYVMOMI:
module.fail_json(msg='PyVmomi Python module required. Install using "pip install PyVmomi"')
Expand Down
52 changes: 52 additions & 0 deletions test/units/module_utils/test_vmware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Copyright: (c) 2018, Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

import sys

from units.compat import unittest
from units.compat.mock import patch, MagicMock

from ansible.module_utils.six.moves import builtins
from ansible.module_utils._text import to_native

realimport = builtins.__import__


class TestVmware(unittest.TestCase):
def clear_modules(self, mods):
for mod in mods:
if mod in sys.modules:
del sys.modules[mod]

@patch.object(builtins, '__import__')
def test_vmware_missing_ensure_libs(self, mock_import):
def _mock_import(name, *args, **kwargs):
if name in ('pyVmomi', 'requests'):
raise ImportError
return realimport(name, *args, **kwargs)

self.clear_modules(['pyVmomi', 'ansible.module_utils.vmware', 'requests'])
mock_import.side_effect = _mock_import
mod = builtins.__import__('ansible.module_utils.vmware')

self.assertFalse(mod.module_utils.vmware.HAS_PYVMOMI)
self.assertFalse(mod.module_utils.vmware.HAS_REQUESTS)

with self.assertRaises(NameError) as context:
mod.module_utils.vmware.PyVmomi(MagicMock())

self.assertIn("name 'vim' is not defined", to_native(context.exception))

@patch.object(builtins, '__import__')
def test_vmware_found_ensure_libs(self, mock_import):
def _mock_import(name, *args, **kwargs):
if 'pyVmomi' in name:
return MagicMock()
return realimport(name, *args, **kwargs)

self.clear_modules(['pyVmomi', 'ansible.module_utils.vmware', 'requests'])
mock_import.side_effect = _mock_import
mod = builtins.__import__('ansible.module_utils.vmware')

self.assertTrue(mod.module_utils.vmware.HAS_PYVMOMI)
self.assertTrue(mod.module_utils.vmware.HAS_REQUESTS)

0 comments on commit 3c5b210

Please sign in to comment.