Exemplo n.º 1
0
    def test_csrf_allows_safe(self, method):
        def fn(self, view, app, request, *args, **kwargs):
            return view(app, request, *args, **kwargs)

        view = lambda app, request: Response()
        app = pretend.stub()
        request = pretend.stub(_session={}, method=method)

        handle_csrf(fn)(pretend.stub(), view, app, request)
Exemplo n.º 2
0
    def test_csrf_allows_safe(self, method):
        def fn(self, view, app, request, *args, **kwargs):
            return view(app, request, *args, **kwargs)

        view = lambda app, request: Response()
        app = pretend.stub()
        request = pretend.stub(_session={}, method=method)

        handle_csrf(fn)(pretend.stub(), view, app, request)
Exemplo n.º 3
0
    def test_csrf_already_ensured(self):
        def fn(self, view, app, request, *args, **kwargs):
            return view(app, request, *args, **kwargs)

        view = lambda app, request: Response()
        view._csrf = True
        app = pretend.stub()
        request = pretend.stub(_session={"user.csrf": "1234"}, method="GET")

        handle_csrf(fn)(pretend.stub(), view, app, request)

        assert request._session == {"user.csrf": "1234"}
Exemplo n.º 4
0
    def test_csrf_already_ensured(self):
        def fn(self, view, app, request, *args, **kwargs):
            return view(app, request, *args, **kwargs)

        view = lambda app, request: Response()
        view._csrf = True
        app = pretend.stub()
        request = pretend.stub(_session={"user.csrf": "1234"}, method="GET")

        handle_csrf(fn)(pretend.stub(), view, app, request)

        assert request._session == {"user.csrf": "1234"}
Exemplo n.º 5
0
    def test_csrf_disallows_unsafe(self, method):
        def fn(self, view, app, request, *args, **kwargs):
            return view(app, request, *args, **kwargs)

        view = lambda app, request: Response()
        app = pretend.stub()
        request = pretend.stub(_session={}, method=method)

        with pytest.raises(SecurityError) as excinfo:
            handle_csrf(fn)(pretend.stub(), view, app, request)

        assert (
            excinfo.value.description == "No CSRF protection applied to view")
Exemplo n.º 6
0
    def test_csrf_disallows_unsafe(self, method):
        def fn(self, view, app, request, *args, **kwargs):
            return view(app, request, *args, **kwargs)

        view = lambda app, request: Response()
        app = pretend.stub()
        request = pretend.stub(_session={}, method=method)

        with pytest.raises(SecurityError) as excinfo:
            handle_csrf(fn)(pretend.stub(), view, app, request)

        assert (excinfo.value.description
                == "No CSRF protection applied to view")
Exemplo n.º 7
0
    def test_csrf_checks_csrf_unsafe(self, method):
        def fn(self, view, app, request, *args, **kwargs):
            return view(app, request, *args, **kwargs)

        view = lambda app, request: Response()
        view._csrf = True
        app = pretend.stub()
        request = pretend.stub(_session={}, method=method)

        _verify_origin = pretend.call_recorder(lambda request: None)
        _verify_token = pretend.call_recorder(lambda request: None)

        handle_csrf(
            fn,
            _verify_origin=_verify_origin,
            _verify_token=_verify_token,
        )(pretend.stub(), view, app, request)

        assert _verify_token.calls == [pretend.call(request)]
        assert _verify_token.calls == [pretend.call(request)]
Exemplo n.º 8
0
    def test_csrf_checks_csrf_unsafe(self, method):
        def fn(self, view, app, request, *args, **kwargs):
            return view(app, request, *args, **kwargs)

        view = lambda app, request: Response()
        view._csrf = True
        app = pretend.stub()
        request = pretend.stub(_session={}, method=method)

        _verify_origin = pretend.call_recorder(lambda request: None)
        _verify_token = pretend.call_recorder(lambda request: None)

        handle_csrf(
            fn,
            _verify_origin=_verify_origin,
            _verify_token=_verify_token,
        )(pretend.stub(), view, app, request)

        assert _verify_token.calls == [pretend.call(request)]
        assert _verify_token.calls == [pretend.call(request)]