Пример #1
0
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': '******'}
Пример #2
0
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'
Пример #3
0
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'
Пример #4
0
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': '******'}
Пример #5
0
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: ')
Пример #6
0
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')
Пример #7
0
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)])
Пример #8
0
def test_logout_ajax_returns_status_okay():
    request = DummyRequest()

    result = AjaxAuthController(request).logout()

    assert result['status'] == 'okay'