767696fc47
Raise HTTPBadRequest exception instead of ValueError for parameters validation. Change-Id: I468181930299353908a53a3a940ff843d8547bde Closes-Bug: #1449349
100 lines
4.5 KiB
Python
100 lines
4.5 KiB
Python
#
|
|
# 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 heat.common import param_utils
|
|
from heat.tests import common
|
|
|
|
|
|
class TestExtractBool(common.HeatTestCase):
|
|
def test_extract_bool(self):
|
|
for value in ('True', 'true', 'TRUE', True):
|
|
self.assertTrue(param_utils.extract_bool('bool', value))
|
|
for value in ('False', 'false', 'FALSE', False):
|
|
self.assertFalse(param_utils.extract_bool('bool', value))
|
|
for value in ('foo', 't', 'f', 'yes', 'no', 'y', 'n', '1', '0', None):
|
|
self.assertRaises(ValueError, param_utils.extract_bool,
|
|
'bool', value)
|
|
|
|
|
|
class TestExtractInt(common.HeatTestCase):
|
|
def test_extract_int(self):
|
|
# None case
|
|
self.assertIsNone(param_utils.extract_int('num', None))
|
|
|
|
# 0 case
|
|
self.assertEqual(0, param_utils.extract_int('num', 0))
|
|
self.assertEqual(0, param_utils.extract_int('num', 0, allow_zero=True))
|
|
self.assertEqual(0, param_utils.extract_int('num', '0'))
|
|
self.assertEqual(0, param_utils.extract_int('num', '0',
|
|
allow_zero=True))
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int,
|
|
'num', 0, allow_zero=False)
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int,
|
|
'num', '0', allow_zero=False)
|
|
|
|
# positive values
|
|
self.assertEqual(1, param_utils.extract_int('num', 1))
|
|
self.assertEqual(1, param_utils.extract_int('num', '1'))
|
|
self.assertRaises(ValueError, param_utils.extract_int, 'num', '1.1')
|
|
self.assertRaises(ValueError, param_utils.extract_int, 'num', 1.1)
|
|
|
|
# negative values
|
|
self.assertEqual(-1, param_utils.extract_int('num', -1,
|
|
allow_negative=True))
|
|
self.assertEqual(-1, param_utils.extract_int('num', '-1',
|
|
allow_negative=True))
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', '-1.1',
|
|
allow_negative=True)
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', -1.1,
|
|
allow_negative=True)
|
|
|
|
self.assertRaises(ValueError, param_utils.extract_int, 'num', -1)
|
|
self.assertRaises(ValueError, param_utils.extract_int, 'num', '-1')
|
|
self.assertRaises(ValueError, param_utils.extract_int, 'num', '-1.1')
|
|
self.assertRaises(ValueError, param_utils.extract_int, 'num', -1.1)
|
|
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', -1,
|
|
allow_negative=False)
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', '-1',
|
|
allow_negative=False)
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', '-1.1',
|
|
allow_negative=False)
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', -1.1,
|
|
allow_negative=False)
|
|
|
|
# Non-int value
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', 'abc')
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', '')
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', 'true')
|
|
self.assertRaises(ValueError,
|
|
param_utils.extract_int, 'num', True)
|
|
|
|
|
|
class TestExtractTags(common.HeatTestCase):
|
|
def test_extract_tags(self):
|
|
self.assertRaises(ValueError, param_utils.extract_tags, "aaaaaaaaaaaaa"
|
|
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
"aaaaaaaaaaaaaaaaa,a")
|
|
self.assertEqual(["foo", "bar"], param_utils.extract_tags('foo,bar'))
|