import pytest from mock import patch from endpoints.api.test.shared import conduct_api_call from endpoints.api.user import User from endpoints.test.shared import client_with_identity from features import FeatureNameValue from test.fixtures import * def test_user_metadata_update(client): with patch('features.USER_METADATA', FeatureNameValue('USER_METADATA', True)): with client_with_identity('devtable', client) as cl: metadata = { 'given_name': 'Quay', 'family_name': 'User', 'location': 'NYC', 'company': 'Red Hat', } # Update all user metadata fields. conduct_api_call(cl, User, 'PUT', None, body=metadata) # Test that they were successfully updated. user = conduct_api_call(cl, User, 'GET', None).json for field in metadata: assert user.get(field) == metadata.get(field) # Now nullify one of the fields, and remove another. metadata['company'] = None location = metadata.pop('location') conduct_api_call(cl, User, 'PUT', None, body=metadata) user = conduct_api_call(cl, User, 'GET', None).json for field in metadata: assert user.get(field) == metadata.get(field) # The location field should be unchanged. assert user.get('location') == location