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>
This commit is contained in:
Al Bailey 2018-11-16 12:39:20 -06:00
parent 9d0703d95f
commit be64087c7b
1 changed files with 110 additions and 0 deletions

View File

@ -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)