Merge "Fix string-to-boolean casting in queries"

This commit is contained in:
Jenkins 2014-02-06 15:10:21 +00:00 committed by Gerrit Code Review
commit 0494ec5488
2 changed files with 27 additions and 2 deletions

View File

@ -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}

View File

@ -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',