diff --git a/keystone/catalog/controllers.py b/keystone/catalog/controllers.py index 702ae794bd..e01c021116 100644 --- a/keystone/catalog/controllers.py +++ b/keystone/catalog/controllers.py @@ -193,7 +193,7 @@ class RegionV3(controller.V3Controller): def create_region(self, context, region): ref = self._normalize_dict(region) - if 'id' not in ref: + if not ref.get('id'): ref = self._assign_unique_id(ref) ref = self.catalog_api.create_region(ref) diff --git a/keystone/tests/test_v3_catalog.py b/keystone/tests/test_v3_catalog.py index 64a7cdd1d9..a6c7c016ea 100644 --- a/keystone/tests/test_v3_catalog.py +++ b/keystone/tests/test_v3_catalog.py @@ -115,6 +115,17 @@ class CatalogTestCase(test_v3.RestfulTestCase): 'region_id': ref['id']}) self.assertValidRegionResponse(r, ref) + def test_create_region_with_empty_id(self): + """Call ``POST /regions`` with an empty ID in the request body.""" + ref = self.new_region_ref() + ref['id'] = '' + + r = self.post( + '/regions', + body={'region': ref}, expected_status=201) + self.assertValidRegionResponse(r, ref) + self.assertNotEmpty(r.result['region'].get('id')) + def test_create_region_without_id(self): """Call ``POST /regions`` without an ID in the request body.""" ref = self.new_region_ref()