Skip to content

Commit

Permalink
Merge pull request Kinto#650 from mozilla-services/forged-requests-cu…
Browse files Browse the repository at this point in the history
…stom-methods

Apply request extensions on forged requests (ref Kinto#438)
  • Loading branch information
leplatrem committed Feb 15, 2016
2 parents 9325c75 + c1f84e3 commit 2794e71
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
25 changes: 24 additions & 1 deletion cliquet/tests/test_utils.py
Expand Up @@ -5,16 +5,31 @@
import colander
import mock
import six
from cliquet import includeme
from cliquet import DEFAULT_SETTINGS
from pyramid import httpexceptions
from pyramid import request as pyramid_request
from pyramid import testing

from cliquet.utils import (
native_value, strip_whitespace, random_bytes_hex, read_env, hmac_digest,
current_service, encode_header, decode_header, follow_subrequest
current_service, encode_header, decode_header, follow_subrequest,
build_request
)

from .support import unittest, DummyRequest


def build_real_request(wsgi_environ):
"""Build a Pyramid request, as if it was instantiated by Pyramid.
"""
config = testing.setUp(settings=DEFAULT_SETTINGS)
includeme(config)
request = pyramid_request.Request(wsgi_environ)
request.registry = config.registry
return request


class NativeValueTest(unittest.TestCase):
def test_simple_string(self):
self.assertEqual(native_value('value'), 'value')
Expand Down Expand Up @@ -118,6 +133,14 @@ def test_current_service_returns_none_for_unexisting_patterns(self):
self.assertEqual(current_service(request), None)


class BuildRequestTest(unittest.TestCase):

def test_built_request_has_cliquet_custom_methods(self):
original = build_real_request({'PATH_INFO': '/foo'})
request = build_request(original, {"path": "bar"})
self.assertTrue(hasattr(request, 'current_service'))


class EncodeHeaderTest(unittest.TestCase):

def test_returns_a_string_if_passed_a_string(self):
Expand Down
2 changes: 0 additions & 2 deletions cliquet/tests/test_views_batch.py
Expand Up @@ -5,7 +5,6 @@

from pyramid.response import Response

from cliquet import DEFAULT_SETTINGS
from cliquet.views.batch import BatchPayloadSchema, batch as batch_service
from cliquet.tests.support import BaseWebTest, unittest, DummyRequest
from cliquet.utils import json
Expand Down Expand Up @@ -292,7 +291,6 @@ class BatchServiceTest(unittest.TestCase):
def setUp(self):
self.method, self.view, self.options = batch_service.definitions[0]
self.request = DummyRequest()
self.request.registry = mock.Mock(settings=DEFAULT_SETTINGS)

def post(self, validated):
self.request.validated = validated
Expand Down
4 changes: 3 additions & 1 deletion cliquet/utils.py
Expand Up @@ -36,7 +36,7 @@ def json_serializer(v, **kw):
sqlalchemy = None

from pyramid import httpexceptions
from pyramid.request import Request
from pyramid.request import Request, apply_request_extensions
from pyramid.settings import aslist
from cornice import cors
from colander import null
Expand Down Expand Up @@ -261,6 +261,8 @@ def build_request(original, dict_obj):
headers=headers,
POST=payload,
method=method)
request.registry = original.registry
apply_request_extensions(request)

# This is used to distinguish subrequests from direct incoming requests.
# See :func:`cliquet.initialization.setup_logging()`
Expand Down

0 comments on commit 2794e71

Please sign in to comment.