From b6b02bee99492cb6238e29add69a6aad0d30afce Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Fri, 22 Apr 2016 17:54:44 -0400 Subject: [PATCH] adjusting how we restrict __in based on PR feedback --- awx/api/filters.py | 4 ++-- awx/main/tests/unit/api/test_filters.py | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/awx/api/filters.py b/awx/api/filters.py index d81134799c..fd4f37bb77 100644 --- a/awx/api/filters.py +++ b/awx/api/filters.py @@ -131,9 +131,9 @@ class FieldLookupBackend(BaseFilterBackend): value = to_python_boolean(value) elif new_lookup.endswith('__in'): items = [] + if not value: + raise ValueError('cannot provide empty value for __in') for item in value.split(','): - if not item: - raise ValueError('cannot provide empty value for __in') items.append(self.value_to_python_for_field(field, item)) value = items elif new_lookup.endswith('__regex') or new_lookup.endswith('__iregex'): diff --git a/awx/main/tests/unit/api/test_filters.py b/awx/main/tests/unit/api/test_filters.py index c267c4f734..8f045db877 100644 --- a/awx/main/tests/unit/api/test_filters.py +++ b/awx/main/tests/unit/api/test_filters.py @@ -3,10 +3,15 @@ import pytest from awx.api.filters import FieldLookupBackend from awx.main.models import JobTemplate -@pytest.mark.parametrize(u"empty_value", [u'', '', u'a,,b']) +@pytest.mark.parametrize(u"empty_value", [u'', '']) def test_empty_in(empty_value): field_lookup = FieldLookupBackend() with pytest.raises(ValueError) as excinfo: field_lookup.value_to_python(JobTemplate, 'project__in', empty_value) assert 'empty value for __in' in str(excinfo.value) +@pytest.mark.parametrize(u"valid_value", [u'foo', u'foo,']) +def test_valid_in(valid_value): + field_lookup = FieldLookupBackend() + value, new_lookup = field_lookup.value_to_python(JobTemplate, 'project__in', valid_value) + assert 'foo' in value