Correctly normalize consumer fields on update

The self._normalize_dict() function in ConsumerCrudV3 creates a
copy of the consumer passed in and doesn't modify it, so this
line of code didn't do anything. The code is changed to use the
result as the new consumer rather than discarding it.

Closes-Bug: #1276857
Change-Id: Iec7573001ad73f0dc9192a4e74b1c35adc2cda4c
This commit is contained in:
Brant Knudson 2014-02-06 09:09:55 -06:00
parent 1ddb30c351
commit 1d201973b5
2 changed files with 5 additions and 16 deletions

View File

@ -45,8 +45,8 @@ class ConsumerCrudV3(controller.V3Controller):
def update_consumer(self, context, consumer_id, consumer):
self._require_matching_id(consumer_id, consumer)
ref = self._normalize_dict(consumer)
self._validate_consumer_ref(consumer)
ref = self.oauth_api.update_consumer(consumer_id, consumer)
self._validate_consumer_ref(ref)
ref = self.oauth_api.update_consumer(consumer_id, ref)
return ConsumerCrudV3.wrap_member(context, ref)
@controller.protected()

View File

@ -224,22 +224,11 @@ class ConsumerCRUDTests(OAuth1Tests):
body={'consumer': update_ref})
consumer = update_resp.result['consumer']
# TODO(blk-u): Update isn't working correctly. It should be
# normalizing the field names like when a consumer is created.
# See bug 1276857.
# The assertion code should be like this:
#
# normalized_field1_name = 'some_weird_field'
# self.assertEqual(field1_new_value, consumer[normalized_field1_name])
#
# normalized_field2_name = 'weird_some_field'
# self.assertEqual(field2_value, consumer[normalized_field2_name])
normalized_field1_name = 'some_weird_field'
self.assertEqual(field1_orig_value, consumer[normalized_field1_name])
self.assertEqual(field1_new_value, consumer[field1_name])
self.assertEqual(field1_new_value, consumer[normalized_field1_name])
self.assertEqual(field2_value, consumer[field2_name])
normalized_field2_name = 'weird_some_field'
self.assertEqual(field2_value, consumer[normalized_field2_name])
def test_consumer_create_no_description(self):
resp = self.post('/OS-OAUTH1/consumers', body={'consumer': {}})