"""Login handler tests.""" import json import flexmock from oto import status from auth.connectors import sentry from auth.logic import api from tests.fixtures import fixture_login LOGIN_URL = '/login' def test_login_handler(fixture_client): """Test login.""" login_response = fixture_login.get_ows_users_login_response() data = fixture_login.get_login_data() (flexmock(api) .should_receive('login') .with_args(data=data) .and_return(login_response) .once()) result = fixture_client.post(LOGIN_URL, data=data) assert result.status_code == status.OK assert result.data == json.dumps(login_response.message).encode('utf8') def test_login_api_fails(fixture_client): """Test failures.""" error = 'Oh no, everything is horrible' login_response = fixture_login.get_ows_users_login_failure_response(error) data = fixture_login.get_login_data() (flexmock(api) .should_receive('login') .with_args(data=data) .and_return(login_response) .once()) (flexmock(sentry) .should_receive('send_response_to_sentry') .with_args( response=login_response, message='Failed call to Grass /login' ) .once()) result = fixture_client.post(LOGIN_URL, data=data) assert result.status_code == status.BAD_REQUEST