Merge changes

This commit is contained in:
Craig Citro
2012-03-01 13:01:29 -08:00
3 changed files with 32 additions and 7 deletions

View File

@@ -424,10 +424,19 @@ def createResource(http, baseUrl, model, requestBuilder,
for name, enums in enum_params.iteritems():
if name in kwargs:
if kwargs[name] not in enums:
raise TypeError(
'Parameter "%s" value "%s" is not an allowed value in "%s"' %
(name, kwargs[name], str(enums)))
# We need to handle the case of a repeated enum
# name differently, since we want to handle both
# arg='value' and arg=['value1', 'value2']
if (name in repeated_params and
not isinstance(kwargs[name], basestring)):
values = kwargs[name]
else:
values = [kwargs[name]]
for value in values:
if value not in enums:
raise TypeError(
'Parameter "%s" value "%s" is not an allowed value in "%s"' %
(name, value, str(enums)))
actual_query_params = {}
actual_path_params = {}

View File

@@ -178,6 +178,17 @@
"bar"
]
},
"er": {
"type": "string",
"location": "query",
"required": false,
"repeated": true,
"enum": [
"one",
"two",
"three"
]
},
"rr": {
"type": "string",
"location": "query",

View File

@@ -170,13 +170,18 @@ class Discovery(unittest.TestCase):
self._check_query_types(request)
request = zoo.query(
q="foo", i="1", n="1", b="", a=[1,2,3], o={'a':1}, e='bar')
q="foo", i="1", n="1", b="", a=[1,2,3], o={'a':1}, e='bar', er='two')
request = zoo.query(
q="foo", i="1", n="1", b="", a=[1,2,3], o={'a':1}, e='bar', rr=['foo',
'bar'])
q="foo", i="1", n="1", b="", a=[1,2,3], o={'a':1}, e='bar',
er=['one', 'three'], rr=['foo', 'bar'])
self._check_query_types(request)
# Five is right out.
self.assertRaisesRegexp(
TypeError, '"five" is not an allowed value in',
zoo.query, er=['one', 'five'])
def test_optional_stack_query_parameters(self):
http = HttpMock(datafile('zoo.json'), {'status': '200'})
zoo = build('zoo', 'v1', http)