diff --git a/nova/api/validation/validators.py b/nova/api/validation/validators.py index f3c0c9d1a7..bfe98b1eeb 100644 --- a/nova/api/validation/validators.py +++ b/nova/api/validation/validators.py @@ -34,7 +34,7 @@ from nova.i18n import _ @jsonschema.FormatChecker.cls_checks('regex') def _validate_regex_format(instance): - if not isinstance(instance, six.text_type): + if not instance or not isinstance(instance, six.text_type): return False try: re.compile(instance) diff --git a/nova/tests/unit/api/openstack/compute/test_serversV21.py b/nova/tests/unit/api/openstack/compute/test_serversV21.py index 634f2aee57..9c391116a7 100644 --- a/nova/tests/unit/api/openstack/compute/test_serversV21.py +++ b/nova/tests/unit/api/openstack/compute/test_serversV21.py @@ -702,6 +702,20 @@ class ServersControllerTest(ControllerTest): self.assertRaises(exception.ValidationError, self.controller.index, req) + def test_get_servers_with_empty_regex_filter_param(self): + empty_string = '' + req = self.req('/fake/servers?flavor=%s' % empty_string, + use_admin_context=True) + self.assertRaises(exception.ValidationError, + self.controller.index, req) + + def test_get_servers_detail_with_empty_regex_filter_param(self): + empty_string = '' + req = self.req('/fake/servers/detail?flavor=%s' % empty_string, + use_admin_context=True) + self.assertRaises(exception.ValidationError, + self.controller.detail, req) + def test_get_servers_invalid_sort_key(self): req = self.req('/fake/servers?sort_key=foo&sort_dir=desc') self.assertRaises(exception.ValidationError,