def test_login_ajax_raises_ValidationFailure_on_ValidationFailure(): controller = AjaxAuthController(DummyRequest(json_body={})) controller.form = invalid_form({'password': '******'}) with pytest.raises(deform.ValidationFailure) as exc_info: controller.login() assert exc_info.value.error.asdict() == {'password': '******'}
def test_login_ajax_returns_status_okay_when_validation_succeeds(): request = DummyRequest(json_body={}, auth_domain='hypothes.is') controller = AjaxAuthController(request) controller.form = form_validating_to({'user': FakeUser(username='******')}) result = controller.login() assert result['status'] == 'okay'
def test_login_ajax_returns_status_failure_on_validation_failure(): request = DummyRequest(json_body={}) controller = AjaxAuthController(request) controller.form = invalid_form({'password': '******'}) result = controller.login() assert result['status'] == 'failure' assert result['errors'] == {'password': '******'}
def test_login_ajax_raises_JSONError_on_non_json_body(): request = mock.Mock(authenticated_user=mock.Mock(groups=[])) type(request).json_body = mock.PropertyMock(side_effect=ValueError) controller = AjaxAuthController(request) with pytest.raises(accounts.JSONError) as exc_info: controller.login() assert exc_info.value.message.startswith( 'Could not parse request body as JSON: ')
def test_login_ajax_raises_JSONError_on_non_object_json(): request = mock.Mock( authenticated_user=mock.Mock(groups=[]), json_body='foo') controller = AjaxAuthController(request) with pytest.raises(accounts.JSONError) as exc_info: controller.login() assert ( exc_info.value.message == 'Request JSON body must have a ' + 'top-level object')
def test_login_ajax_converts_non_string_passwords_to_strings(_): for input_, expected_output in ((None, ''), (23, '23'), (True, 'True')): request = DummyRequest( json_body={'username': '******', 'password': input_}, auth_domain='hypothes.is') controller = AjaxAuthController(request) controller.form.validate = mock.Mock( return_value={'user': mock.Mock()}) controller.login() controller.form.validate.assert_called_once_with( [('username', 'user'), ('password', expected_output)])
def test_logout_ajax_returns_status_okay(): request = DummyRequest() result = AjaxAuthController(request).logout() assert result['status'] == 'okay'