Fixed webhook so that users' full_name isn't reset to the empty string.
This commit is contained in:
@@ -78,9 +78,13 @@ def user_modified():
|
||||
updates['email'] = payload['email']
|
||||
|
||||
if payload['full_name'] != db_user['full_name']:
|
||||
my_log.info('User changed full name from %s to %s',
|
||||
my_log.info('User changed full name from %r to %r',
|
||||
payload['full_name'], db_user['full_name'])
|
||||
updates['full_name'] = payload['full_name']
|
||||
if payload['full_name']:
|
||||
updates['full_name'] = payload['full_name']
|
||||
else:
|
||||
# Fall back to the username when the full name was erased.
|
||||
updates['full_name'] = db_user['username']
|
||||
|
||||
if updates:
|
||||
update_res = users_coll.update_one({'_id': db_user['_id']},
|
||||
|
@@ -35,6 +35,29 @@ class UserModifiedTest(AbstractCloudTest):
|
||||
self.assertEqual('ကြယ်ဆွတ်', db_user['full_name'])
|
||||
self.assertEqual(['subscriber'], db_user['roles'])
|
||||
|
||||
def test_clear_full_name(self):
|
||||
"""An empty full name should make it fall back to the username"""
|
||||
payload = {'id': 1112333,
|
||||
'old_email': 'old@email.address',
|
||||
'full_name': '',
|
||||
'email': 'old@email.address',
|
||||
'roles': ['cloud_subscriber']}
|
||||
as_json = json.dumps(payload).encode()
|
||||
mac = hmac.new(self.hmac_secret,
|
||||
as_json, hashlib.sha256)
|
||||
self.post('/api/webhooks/user-modified',
|
||||
data=as_json,
|
||||
content_type='application/json',
|
||||
headers={'X-Webhook-HMAC': mac.hexdigest()},
|
||||
expected_status=204)
|
||||
|
||||
# Check the effect on the user
|
||||
db_user = self.fetch_user_from_db(self.uid)
|
||||
self.assertNotEqual('', db_user['username'])
|
||||
self.assertEqual('old@email.address', db_user['email'])
|
||||
self.assertEqual(db_user['username'], db_user['full_name'])
|
||||
self.assertEqual(['subscriber'], db_user['roles'])
|
||||
|
||||
def test_change_email(self):
|
||||
payload = {'id': 1112333,
|
||||
'old_email': 'old@email.address',
|
||||
|
Reference in New Issue
Block a user