Adding a unit test for nfv_client shell
The nfv_client component had no unit tests, so coverage report was not including it. By adding this simple unit test, nfv_client is included in the nfv coverage report. This set of unit tests does some simple CLI shell validation Story: 2004241 Task: 27765 Change-Id: Ic7054974e1c04abcbc2c6416ec33c6ee99928348 Signed-off-by: Al Bailey <Al.Bailey@windriver.com>changes/82/618582/1
parent
9d0703d95f
commit
be64087c7b
@ -0,0 +1,110 @@
|
||||
#
|
||||
# Copyright
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
import mock
|
||||
import os
|
||||
from . import testcase
|
||||
from nfv_client import shell
|
||||
|
||||
|
||||
class TestNFVClientShell(testcase.NFVTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestNFVClientShell, self).setUp()
|
||||
|
||||
def tearDown(self):
|
||||
super(TestNFVClientShell, self).tearDown()
|
||||
|
||||
# -- Failure cases --
|
||||
# Each failure case will :
|
||||
# - invoke _print_message (as part of exit)
|
||||
# - invoke print_usage (to indicate proper arguments)
|
||||
# - raise a SystemExit exception
|
||||
@mock.patch('argparse.ArgumentParser._print_message')
|
||||
@mock.patch('argparse.ArgumentParser.print_usage')
|
||||
def _test_shell_bad_or_empty_args(self,
|
||||
mock_usage=None,
|
||||
mock_message=None,
|
||||
shell_args=None):
|
||||
self.assertRaises(SystemExit, shell.process_main, shell_args)
|
||||
mock_usage.assert_called_once()
|
||||
mock_message.assert_called_once()
|
||||
|
||||
# invalid arguments causes process_main to exit
|
||||
def test_shell_bad_args(self):
|
||||
shell_args = ['invalid-arg', ]
|
||||
self._test_shell_bad_or_empty_args(shell_args=shell_args)
|
||||
|
||||
# empty arguments causes process_main to exit
|
||||
def test_shell_no_args(self):
|
||||
shell_args = []
|
||||
self._test_shell_bad_or_empty_args(shell_args=shell_args)
|
||||
|
||||
# upgrade-strategy expects additional arguments
|
||||
def test_shell_upgrade_strategy_incomplete_args(self):
|
||||
shell_args = ['upgrade-strategy', ]
|
||||
self._test_shell_bad_or_empty_args(shell_args=shell_args)
|
||||
|
||||
# patch-strategy expects additional arguments
|
||||
def test_shell_patch_strategy_incomplete_args(self):
|
||||
shell_args = ['patch-strategy', ]
|
||||
self._test_shell_bad_or_empty_args(shell_args=shell_args)
|
||||
|
||||
# --- Help Cases ----
|
||||
# -h will print_help and SystemExit
|
||||
@mock.patch('argparse.ArgumentParser.print_help')
|
||||
def _test_shell_help(self, mock_help=None, shell_args=None):
|
||||
self.assertRaises(SystemExit, shell.process_main, shell_args)
|
||||
mock_help.assert_called_once()
|
||||
|
||||
def test_shell_upgrade_strategy_help(self):
|
||||
shell_args = ['upgrade-strategy', '-h', ]
|
||||
self._test_shell_help(shell_args=shell_args)
|
||||
|
||||
def test_shell_patch_strategy_help(self):
|
||||
shell_args = ['patch-strategy', '-h', ]
|
||||
self._test_shell_help(shell_args=shell_args)
|
||||
|
||||
# -- Show commands --
|
||||
# Both patch-strategy and upgrade-strategy use the same underlying
|
||||
# sw_update class, but with different modes
|
||||
|
||||
# Test the show commands are not invoked when env values missing
|
||||
@mock.patch('nfv_client.sw_update.show_strategy')
|
||||
def _test_shell_show_missing_env(self, mock_show=None, shell_args=None):
|
||||
shell.process_main(shell_args)
|
||||
mock_show.assert_not_called()
|
||||
|
||||
def test_shell_upgrade_strategy_show_missing_env(self):
|
||||
shell_args = ['upgrade-strategy', 'show', ]
|
||||
self._test_shell_show_missing_env(shell_args=shell_args)
|
||||
|
||||
def test_shell_patch_strategy_show_missing_env(self):
|
||||
shell_args = ['patch-strategy', 'show', ]
|
||||
self._test_shell_show_missing_env(shell_args=shell_args)
|
||||
|
||||
# Test the show commands are invoked when env values detected
|
||||
@mock.patch.dict(os.environ,
|
||||
{'OS_AUTH_URL': 'FAKE_OS_AUTH_URL',
|
||||
'OS_PROJECT_NAME': 'FAKE_OS_PROJECT_NAME',
|
||||
'OS_PROJECT_DOMAIN_NAME': 'FAKE_OS_PROJECT_DOMAIN_NAME',
|
||||
'OS_USERNAME': 'FAKE_OS_USERNAME',
|
||||
'OS_PASSWORD': 'FAKE_OS_PASSWORD',
|
||||
'OS_USER_DOMAIN_NAME': 'FAKE_OS_USER_DOMAIN_NAME',
|
||||
'OS_REGION_NAME': 'FAKE_OS_REGION_NAME',
|
||||
'OS_INTERFACE': 'FAKE_OS_INTERFACE'
|
||||
})
|
||||
@mock.patch('nfv_client.sw_update.show_strategy')
|
||||
def _test_shell_show(self, mock_show=None, shell_args=None):
|
||||
shell.process_main(shell_args)
|
||||
mock_show.assert_called_once()
|
||||
|
||||
def test_shell_upgrade_strategy_show(self):
|
||||
shell_args = ['upgrade-strategy', 'show', ]
|
||||
self._test_shell_show(shell_args=shell_args)
|
||||
|
||||
def test_shell_patch_strategy_show(self):
|
||||
shell_args = ['patch-strategy', 'show', ]
|
||||
self._test_shell_show(shell_args=shell_args)
|
Loading…
Reference in New Issue