Example #1
0
    def test_login_raises_ValidationFailure_on_ValidationFailure(
            self, invalid_form, pyramid_request):
        pyramid_request.json_body = {}
        controller = views.AjaxAuthController(pyramid_request)
        controller.form = invalid_form({'password': '******'})

        with pytest.raises(deform.ValidationFailure) as exc_info:
            controller.login()

        assert exc_info.value.error.asdict() == {'password': '******'}
Example #2
0
    def test_login_returns_status_okay_when_validation_succeeds(
            self, factories, form_validating_to, pyramid_request):
        pyramid_request.json_body = {}
        controller = views.AjaxAuthController(pyramid_request)
        controller.form = form_validating_to(
            {'user': factories.User(username='******')})

        result = controller.login()

        assert result['status'] == 'okay'
Example #3
0
    def test_login_raises_JSONError_on_non_object_json(self, pyramid_request):
        pyramid_request.authenticated_user = mock.Mock(groups=[])
        pyramid_request.json_body = 'foo'

        controller = views.AjaxAuthController(pyramid_request)
        expected_message = 'Request JSON body must have a top-level object'

        with pytest.raises(accounts.JSONError) as exc_info:
            controller.login()

        assert exc_info.value.message == expected_message
Example #4
0
    def test_login_raises_JSONError_on_non_json_body(self, pyramid_request):
        type(pyramid_request).json_body = {}
        with mock.patch.object(type(pyramid_request),
                               'json_body',
                               new_callable=mock.PropertyMock) as json_body:
            json_body.side_effect = ValueError()

            controller = views.AjaxAuthController(pyramid_request)

            with pytest.raises(accounts.JSONError) as exc_info:
                controller.login()
                assert exc_info.value.message.startswith(
                    'Could not parse request body as JSON: ')
Example #5
0
    def test_login_converts_non_string_passwords_to_strings(self, pyramid_csrf_request):
        for input_, expected_output in ((None, ''),
                                        (23, '23'),
                                        (True, 'True')):
            pyramid_csrf_request.json_body = {'username': '******',
                                              'password': input_}
            controller = views.AjaxAuthController(pyramid_csrf_request)
            controller.form.validate = mock.Mock(
                return_value={'user': mock.Mock()})

            controller.login()

            assert controller.form.validate.called
            pstruct = controller.form.validate.call_args[0][0]
            assert sorted(pstruct) == sorted([('username', 'user'),
                                              ('password', expected_output)])
Example #6
0
    def test_logout_returns_status_okay(self, pyramid_request):
        result = views.AjaxAuthController(pyramid_request).logout()

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