111 lines
4.2 KiB
Python
Executable File
111 lines
4.2 KiB
Python
Executable File
#
|
|
# 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)
|