"""Test for ows_users interface.""" import flexmock from owsrequest import request import requests from feature_fm.constants.error import ERROR_CODE_OWS_USERS_REQUEST from feature_fm.constants.ows_services import CONTENT_TYPE from feature_fm.constants.ows_services import OWS_USERS from feature_fm.models import ows_users def test_get_user_success(): """Test retrieving user info with successful request.""" user_id = 'alw:666' user = { 'type': 'alw', 'language': 'en', 'account': { 'subaccount_id': None, 'vendor_id': 111 }, 'email': 'orchard_user@theorchard.com', 'last_name': 'Kalou', 'first_name': 'Miha', 'user_id': 'alw:666' } ows_users_response = flexmock(requests.models.Response()) ows_users_response.status_code = 200 correlation_id = 'correlation' (flexmock(ows_users_response) .should_receive('json') .and_return(user)) (flexmock(request) .should_receive('get') .with_args( OWS_USERS, '/users/alw:666/minimum-details?include_roles=yes', headers={'Content-Type': CONTENT_TYPE}, correlation_id=correlation_id) .and_return(ows_users_response)) result = ows_users.get_user_info(user_id, correlation_id) assert result.status == 200 assert result.message == user def test_get_user_error(): """Test retrieving user info with failed request.""" user_id = 'alw:666' ows_users_error = 'ows_users_error' ows_users_response = flexmock(requests.models.Response()) ows_users_response.status_code = 400 correlation_id = 'correlation' (flexmock(ows_users_response) .should_receive('text') .and_return(ows_users_error)) (flexmock(request) .should_receive('get') .with_args( OWS_USERS, '/users/alw:666/minimum-details?include_roles=yes', headers={'Content-Type': CONTENT_TYPE}, correlation_id=correlation_id) .and_return(ows_users_response)) result = ows_users.get_user_info(user_id, correlation_id) assert result.status == 400 assert result.errors == { 'code': ERROR_CODE_OWS_USERS_REQUEST, 'message': ows_users_error }