Files
python-vitrageclient/vitrageclient/tests/cli/test_topology_show.py
Eyal 471cc55dcd add validation for topology and post event for cli
* check that limit is a positive number in 'vitrage topology show'
* check that time is an iso8601 timestamp in 'vitrage event post'
* add tests to check this

Change-Id: If5c4b26578f865c68709027b6e815376e4ee9e1e
2017-06-27 15:18:50 +03:00

72 lines
2.9 KiB
Python

# Copyright 2017 Nokia
#
# 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.
from argparse import ArgumentParser
from argparse import ArgumentTypeError
# noinspection PyPackageRequirements
import mock
# noinspection PyPackageRequirements
from testtools import ExpectedException
from vitrageclient.tests.cli.base import CliTestCase
from vitrageclient.v1.cli.topology import TopologyShow
# noinspection PyAttributeOutsideInit
class TopologyShowTest(CliTestCase):
def setUp(self):
super(TopologyShowTest, self).setUp()
self.topology_show = TopologyShow(mock.Mock(), mock.Mock())
def test_positive_integer_validation_with_negative(self):
self.assertRaises(ArgumentTypeError,
self.topology_show.positive_non_zero_int, -1)
def test_positive_integer_validation_with_zero(self):
self.assertRaises(ArgumentTypeError,
self.topology_show.positive_non_zero_int, 0)
def test_positive_integer_validation_with_string(self):
self.assertRaises(ArgumentTypeError,
self.topology_show.positive_non_zero_int, 'bla')
def test_positive_integer_validation_with_positive(self):
self.topology_show.positive_non_zero_int(1)
@mock.patch.object(ArgumentParser, "error")
def test_parser_topology_limit_with_a_negative_number(self, mock_parser):
mock_parser.side_effect = self._my_parser_error_func
parser = self.topology_show.get_parser('vitrage topology show')
with ExpectedException(ArgumentTypeError,
'argument --limit: -5 must be greater than 0'):
parser.parse_args(args=['--filter', 'bla',
'--limit', '-5',
'--root', 'blabla',
'--graph-type', 'tree'])
@mock.patch.object(ArgumentParser, "error")
def test_parser_topology_limit_with_a_string(self, mock_parser):
mock_parser.side_effect = self._my_parser_error_func
parser = self.topology_show.get_parser('vitrage topology show')
with ExpectedException(ArgumentTypeError,
'argument --limit: spam must be an integer'):
parser.parse_args(args=['--filter', 'bla',
'--limit', 'spam',
'--root', 'blabla',
'--graph-type', 'tree'])