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']
|
updates['email'] = payload['email']
|
||||||
|
|
||||||
if payload['full_name'] != db_user['full_name']:
|
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'])
|
payload['full_name'], db_user['full_name'])
|
||||||
|
if payload['full_name']:
|
||||||
updates['full_name'] = 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:
|
if updates:
|
||||||
update_res = users_coll.update_one({'_id': db_user['_id']},
|
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('ကြယ်ဆွတ်', db_user['full_name'])
|
||||||
self.assertEqual(['subscriber'], db_user['roles'])
|
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):
|
def test_change_email(self):
|
||||||
payload = {'id': 1112333,
|
payload = {'id': 1112333,
|
||||||
'old_email': 'old@email.address',
|
'old_email': 'old@email.address',
|
||||||
|
Reference in New Issue
Block a user