Merge "Fix string-to-boolean casting in queries"
This commit is contained in:
commit
0494ec5488
@ -189,7 +189,8 @@ class Query(_Base):
|
||||
# Functions to convert the data field to the correct type.
|
||||
_type_converters = {'integer': int,
|
||||
'float': float,
|
||||
'boolean': strutils.bool_from_string,
|
||||
'boolean': functools.partial(
|
||||
strutils.bool_from_string, strict=True),
|
||||
'string': six.text_type,
|
||||
'datetime': timeutils.parse_isotime}
|
||||
|
||||
|
@ -24,6 +24,7 @@ import datetime
|
||||
import json as jsonutils
|
||||
import logging
|
||||
import testscenarios
|
||||
import webtest.app
|
||||
|
||||
from ceilometer.publisher import utils
|
||||
from ceilometer import sample
|
||||
@ -43,6 +44,30 @@ class TestListEmptyMeters(FunctionalTest,
|
||||
self.assertEqual([], data)
|
||||
|
||||
|
||||
class TestValidateUserInput(FunctionalTest,
|
||||
tests_db.MixinTestsWithBackendScenarios):
|
||||
|
||||
def test_list_meters_query_float_metadata(self):
|
||||
self.assertRaises(webtest.app.AppError, self.get_json,
|
||||
'/meters/meter.test',
|
||||
q=[{'field': 'metadata.util',
|
||||
'op': 'eq',
|
||||
'value': '0.7.5',
|
||||
'type': 'float'}])
|
||||
self.assertRaises(webtest.app.AppError, self.get_json,
|
||||
'/meters/meter.test',
|
||||
q=[{'field': 'metadata.util',
|
||||
'op': 'eq',
|
||||
'value': 'abacaba',
|
||||
'type': 'boolean'}])
|
||||
self.assertRaises(webtest.app.AppError, self.get_json,
|
||||
'/meters/meter.test',
|
||||
q=[{'field': 'metadata.util',
|
||||
'op': 'eq',
|
||||
'value': '45.765',
|
||||
'type': 'integer'}])
|
||||
|
||||
|
||||
class TestListMeters(FunctionalTest,
|
||||
tests_db.MixinTestsWithBackendScenarios):
|
||||
|
||||
@ -309,7 +334,6 @@ class TestListMeters(FunctionalTest,
|
||||
set(['meter.mine']))
|
||||
self.assertEqual(set(r['resource_metadata']['is_public'] for r
|
||||
in data), set(['False']))
|
||||
# FIXME(gordc): verify no false positive (Bug#1236496)
|
||||
|
||||
def test_list_meters_query_string_metadata(self):
|
||||
data = self.get_json('/meters/meter.test',
|
||||
|
Loading…
x
Reference in New Issue
Block a user