shipyard/src/bin/shipyard_client/tests/unit/cli/help/test_help_commands.py

68 lines
2.2 KiB
Python

# Copyright 2017 AT&T Intellectual Property. All other rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
from click.testing import CliRunner
import yaml
from shipyard_client.cli.help.commands import help
def _get_actions_list():
dir_path = os.path.dirname(os.path.realpath(__file__))
a_path = dir_path.split('src/bin')[0] + "src/bin/supported_actions.yaml"
with open(a_path, 'r') as stream:
try:
action_list = yaml.safe_load(stream)['actions']
if not action_list:
raise FileNotFoundError("Action list is empty")
except Exception as e:
print(e)
print("This test requires that the file at '{}' is a valid yaml "
"file containing a list of action names at a key of "
"'actions'".format(a_path))
assert False
return action_list
def test_help():
"""test help with all options"""
runner = CliRunner()
result = runner.invoke(help)
assert 'THE SHIPYARD COMMAND' in result.output
topic = 'actions'
result = runner.invoke(help, [topic])
assert 'ACTIONS' in result.output
actions = _get_actions_list()
for action in actions:
# Assert that actions each have headers
assert "\n{}\n".format(action) in result.output
topic = 'configdocs'
result = runner.invoke(help, [topic])
assert 'CONFIGDOCS' in result.output
def test_help_negative():
"""
negative unit test for help command
verfies invalid topic results in error
"""
invalid_topic = 'invalid'
runner = CliRunner()
result = runner.invoke(help, [invalid_topic])
assert 'Error' in result.output