Пример #1
0
    def _makeRequest(self):
        class Request(object):
            def route_path(self, route_name, *elements, **kw):
                self.route_name = route_name
                self.elements = elements
                self.kw = kw
                return 'route path'

        return Request()
Пример #2
0
    def test_has_key(self):
        environ = {
            'PATH_INFO': '/',
            'QUERY_STRING':
            'lastName=Doe;country:list=Japan;country:list=Hungary',
        }
        request = Request(environ)
        zrequest = IBrowserRequest(request)

        assert_that(zrequest.has_key('lastName'), is_(True))
Пример #3
0
    def test_valid(self):
        response = pretend.stub()
        handler = pretend.call_recorder(lambda request: response)

        tween = config.junk_encoding_tween_factory(handler, pretend.stub())

        request = Request({"QUERY_STRING": ":action=browse", "PATH_INFO": "/pypi"})
        resp = tween(request)

        assert resp is response
Пример #4
0
 def test__make_response_with_real_request(self):
     # functional
     from pyramid.request import Request
     request = Request({})
     request.registry = self.config.registry
     request.response.status = '406 You Lose'
     helper = self._makeOne('loo.foo')
     response = helper._make_response('abc', request)
     self.assertEqual(response.status, '406 You Lose')
     self.assertEqual(response.body, 'abc')
Пример #5
0
 def test__make_response_with_real_request(self):
     # functional
     from pyramid.request import Request
     request = Request({})
     attrs = {'response_status': '406 You Lose'}
     request.__dict__.update(attrs)
     helper = self._makeOne('loo.foo')
     response = helper._make_response('abc', request)
     self.assertEqual(response.status, '406 You Lose')
     self.assertEqual(response.body, 'abc')
Пример #6
0
def request_factory(environ):
    request = Request(environ)
    if request.is_xhr:
        request.response = Response()
        request.response.headerlist = []
        request.response.headerlist.extend(
            (('Access-Control-Allow-Origin', '*'),
             #('Content-Type', 'application/json')
             ))
    return request
Пример #7
0
    def test_item_image_delete_fail(self):
        """
        Test deletion of non-existent image via DELETE request.
        """
        # send DELETE request
        request = Request({}, method='DELETE')
        request.matchdict = {'id': 1}
        request.registry = self.config.registry

        self.assertRaises(HTTPBadRequest, item_images, None, request)
Пример #8
0
    def _make_one(self, v=_no_header):
        from pyramid.request import Request
        r = Request(environ={})

        class FakeRegistry(object):
            settings = {'pyramid.available_languages': 'en fr'}

        r.registry = FakeRegistry()
        if v is not _no_header:
            r.headers['Accept-Language'] = v
        return r
Пример #9
0
def getRequest():
    r = Request({
        "PATH_INFO": "http://aaa.com/test?key=123",
        "wsgi.url_scheme": "http",
        "SERVER_NAME": "testserver.de",
        "SERVER_PORT": 80,
        "REQUEST_METHOD": "GET"
    })
    r.subpath = ["file1.txt"]
    r.context = None
    return r
Пример #10
0
    def test_invalid_path(self):
        response = pretend.stub()
        handler = pretend.call_recorder(lambda request: response)

        tween = config.junk_encoding_tween_factory(handler, pretend.stub())

        request = Request({"PATH_INFO": "/projects/abouÅt"})
        resp = tween(request)

        assert resp is not response
        assert resp.status_code == 400
        assert resp.detail == "Invalid bytes in URL."
Пример #11
0
 def test_form_parsing(self):
     environ = {
         'PATH_INFO': '/',
         'QUERY_STRING':
         'lastName=Doe;country:list=Japan;country:list=Hungary',
     }
     request = Request(environ)
     zrequest = IBrowserRequest(request)
     assert_that(zrequest.form, {
         'country': ['Japan', 'Hungary'],
         'lastName': 'Doe'
     })
Пример #12
0
def request_factory(environ):
    """
    This functions
    :param environ:
    :return request:
    """
    request = Request(environ)
    request.response = Response()
    request.response.headerlist = []
    request.response.headerlist.extend(
        (('Access-Control-Allow-Origin', '*'), ('Content-Type', '*')))
    return request
Пример #13
0
 def _makeOne(self, environ=None):
     from pyramid.url import URLMethodsMixin
     if environ is None:
         environ = {}
     class Request(URLMethodsMixin):
         application_url = 'http://example.com:5432'
         script_name = ''
         def __init__(self, environ):
             self.environ = environ
     request = Request(environ)
     request.registry = self.config.registry
     return request
Пример #14
0
    def test_items_put(self):
        """
        Test updating an item.
        """
        self._create_item_status()

        payload = {
            "name": "Macbook Air",
            "type": "TRADE",
            "quantity": "1",
            "price": "",
            "description": "Lightweight lappy.",
            "reason": "",
            "is_draft": "y",
            "uuid": str(uuid.uuid4())
        }

        request = Request({}, method='POST', body=json.dumps(payload))
        request.registry = self.config.registry

        # make the request
        items(request)

        # try retrieving the newly added item
        item = DBSession.query(Item).first()
        self.failUnless(item)

        payload = {
            "name": "Macbook Pro",
            "type": "SALE",
            "quantity": "5",
            "price": "200.00",
            "description": "Lightweight lappy.",
            "reason": "",
            "is_draft": "n",
            "id": item.id
        }

        request.matchdict = {'id': item.id}
        request.method = 'PUT'
        request.body = json.dumps(payload)

        # make the request again
        response = items(request)
        self.assertEqual(response.status_code, 200)

        # reload item
        item = DBSession.query(Item).filter_by(id=item.id).first()
        self.assertEqual(item.name, payload['name'])
        self.assertEqual(item.type, payload['type'])
        self.assertEqual(item.quantity, int(payload['quantity']))
        self.assertEqual(str(item.price), payload['price'])
        self.assertEqual(item.status_id, self.draft_status.id)
Пример #15
0
    def test_invalid_form(self):
        request = Request({
            "REQUEST_METHOD":
            "POST",
            "CONTENT_TYPE": ("multipart/form-data"),
            "wsgi.input":
            io.BytesIO(b'Content-Disposition: form-data; name="person"\r\n'
                       b"anonymous"),
        })

        with pytest.raises(HTTPBadRequest, match="Invalid Form Data."):
            sanity.invalid_forms(request)
Пример #16
0
    def test_invalid_qsl(self):
        response = pretend.stub()
        handler = pretend.call_recorder(lambda request: response)

        tween = config.junk_encoding_tween_factory(handler, pretend.stub())

        request = Request({"QUERY_STRING": "%Aaction=browse"})
        resp = tween(request)

        assert resp is not response
        assert resp.status_code == 400
        assert resp.detail == "Invalid bytes in query string."
    def test_validate_terminate_contract_without_amountPaid(
            self, mocker_raise_operation_error):
        mocker_raise_operation_error.return_value = False

        request = Request(dict())
        request.validated = dict()
        self.contract.status = 'terminated'
        request.validated['contract'] = self.contract
        self.assertEquals(
            validate_terminate_contract_without_amountPaid(request), None)
        mocker_raise_operation_error.assert_called_once_with(
            request,
            'Can\'t terminate contract while \'amountPaid\' is not set')
Пример #18
0
    def test_call(self):
        contract = Contract()
        request = Request(dict())

        request.contract = None
        self.assertEqual(self.isContract(None, request), False)

        request.contract = Contract()
        self.assertEqual(self.isContract(None, request), False)

        request.contract.contractType = 'common'
        self.isContract.val = 'common'
        self.assertEqual(self.isContract(None, request), True)
Пример #19
0
 def _makeRequest(self, extra):
     from pyramid.request import Request
     from io import BytesIO
     kw = {'PATH_INFO':'',
           'SCRIPT_NAME':'',
           'SERVER_NAME':'localhost',
           'SERVER_PORT':'80',
           'REQUEST_METHOD':'GET',
           'wsgi.version':(1,0),
           'wsgi.url_scheme':'http',
           'wsgi.input':BytesIO()}
     kw.update(extra)
     request = Request(kw)
     return request
Пример #20
0
    def test_valid(self):
        request = Request({
            "REQUEST_METHOD":
            "POST",
            "CONTENT_TYPE":
            ("multipart/form-data; boundary=c397e2aa2980f1a53dee37c05b8fb45a"),
            "wsgi.input":
            io.BytesIO(
                b"--------------------------c397e2aa2980f1a53dee37c05b8fb45a\r\n"
                b'Content-Disposition: form-data; name="person"\r\n'
                b"anonymous"),
        })

        sanity.invalid_forms(request)
Пример #21
0
 def _makeRequest(self, kw=None):
     from pyramid.request import Request
     environ = {
         'wsgi.url_scheme': 'http',
         'wsgi.version': (1, 0),
         'SERVER_NAME': 'example.com',
         'SERVER_PORT': '6543',
         'PATH_INFO': '/',
         'SCRIPT_NAME': '',
         'REQUEST_METHOD': 'GET',
     }
     if kw is not None:
         environ.update(kw)
     return Request(environ=environ)
Пример #22
0
    def test_directive_get_sockjs_manager(self):
        self.config.include('pyramid_sockjs')

        request = Request(self._environ)
        request.registry = self.registry
        self.registry.notify(NewRequest(request))
        try:
            from pyramid.interfaces import IRequestExtensions
            extensions = self.registry.getUtility(IRequestExtensions)
            request._set_extensions(extensions)
        except ImportError:
            pass

        self.assertTrue(hasattr(request, 'get_sockjs_manager'))
Пример #23
0
    def test_tilecache(self):
        from papyrus_tilecache.views import tilecache
        from pyramid.request import Request
        from papyrus_tilecache.views import load_tilecache_config

        curdir = os.path.dirname(os.path.abspath(__file__))
        cfgfile = os.path.join(curdir, 'tilecache.cfg')
        settings = {'tilecache.cfg': cfgfile}
        load_tilecache_config(settings)

        context = DummyContext()
        request = Request({})
        response = tilecache(context, request)
        from pyramid.response import Response
        self.assertTrue(isinstance(response, Response))
Пример #24
0
 def test_request_has_localizer(self):
     from pyramid.threadlocal import get_current_registry
     from pyramid.interfaces import ILocalizer
     from pyramid.request import Request
     # register mock localizer
     dummy = object()
     registry = get_current_registry()
     registry.registerUtility(dummy, ILocalizer, name='en')
     request = Request(environ={})
     self.assertEqual(request.localizer, dummy)
     # `get_localizer` is only called once...
     other = object()
     registry.registerUtility(other, ILocalizer, name='en')
     self.assertNotEqual(request.localizer, other)
     self.assertEqual(request.localizer, dummy)
Пример #25
0
    def test_verify_output_bytestring(self):
        from pyramid.request import Request
        from pyramid.config import Configurator
        from pyramid.view import render_view
        from webob.compat import text_type
        config = Configurator(settings={})
        def view(request):
            request.response.text = text_type('<body></body>')
            return request.response

        config.add_view(name='test', view=view)
        config.commit()

        r = Request({})
        r.registry = config.registry
        self.assertEqual(render_view(object(), r, 'test'), b'<body></body>')
Пример #26
0
    def test_get_session_manager_unknown(self):
        request = Request(self._environ)
        request.registry = self.registry
        self.registry.notify(NewRequest(request))
        try:
            from pyramid.interfaces import IRequestExtensions
            extensions = self.registry.getUtility(IRequestExtensions)
            request._set_extensions(extensions)
        except ImportError:
            pass

        self.assertRaises(
            KeyError, request.get_sockjs_manager, 'test')

        self.config.add_sockjs_route()
        self.assertRaises(
            KeyError, request.get_sockjs_manager, 'test')
Пример #27
0
    def test_get_session_manager_default(self):
        import pyramid_sockjs
        self.config.add_sockjs_route()

        request = Request(self._environ)
        request.registry = self.registry
        self.registry.notify(NewRequest(request))

        try:
            from pyramid.interfaces import IRequestExtensions
            extensions = self.registry.getUtility(IRequestExtensions)
            request._set_extensions(extensions)
        except ImportError:
            pass

        sm = request.get_sockjs_manager()
        self.assertIs(self.registry.__sockjs_managers__[''], sm)
Пример #28
0
    def _makeOne(self, environ=None):
        from pyramid.decorator import reify
        from pyramid.view import ViewMethodsMixin
        if environ is None:
            environ = {}

        class Request(ViewMethodsMixin):
            def __init__(self, environ):
                self.environ = environ

            @reify
            def response(self):
                return DummyResponse()

        request = Request(environ)
        request.registry = self.config.registry
        return request
Пример #29
0
    def __call__(self, environ, start_response):
        request = Request(environ)
        if request.path.endswith('shell') and request.method == 'GET':
            try:
                backend = self.app.routes_mapper(request)['match']['backend']
                machine = self.app.routes_mapper(request)['match']['machine']
                host = request.params.get('host', None)
                ssh_user = request.params.get('ssh_user', None)
                command = request.params.get('command', None)
                request.registry = self.app.registry

                if not ssh_user or ssh_user == 'undefined':
                    log.debug("Will select root as the ssh-user as we don't know who we are")
                    ssh_user = '******'

                with get_user(request, readonly=True) as user:
                    keypairs = user['keypairs']

                preferred_keypairs = get_preferred_keypairs(keypairs, backend, machine)
                log.debug("preferred keypairs = %s" % preferred_keypairs)
              
                if preferred_keypairs:
                    keypair = keypairs[preferred_keypairs[0]]
                    private_key = keypair['private']
                    s_user = get_ssh_user_from_keypair(keypair, backend, machine)
                    log.debug("get user from keypair returned: %s" % s_user)
                    if s_user:
                        ssh_user = s_user
                        log.debug("Will select %s as the ssh-user" % ssh_user)
                else:
                    private_key = None
                    log.error("Missing private key")
                    raise Exception("Missing private key")

                conn = connect(request, backend)
                if conn:
                    return self.stream_command(conn, machine, host, ssh_user, 
                                               private_key, command, 
                                               start_response)
                else:
                    raise
            except:
                # leave error handling up to the app
                return self.app(environ, start_response)
        else:
            return self.app(environ, start_response)
Пример #30
0
def make_request(config, path="/", environ={}):
    """Helper function for making pyramid Request objects."""
    my_environ = {}
    my_environ["wsgi.version"] = (1, 0)
    my_environ["wsgi.multithread"] = True
    my_environ["wsgi.multiprocess"] = True
    my_environ["wsgi.run_once"] = False
    my_environ["wsgi.url_scheme"] = "http"
    my_environ["REQUEST_METHOD"] = "GET"
    my_environ["SCRIPT_NAME"] = ""
    my_environ["PATH_INFO"] = path
    my_environ["SERVER_NAME"] = "localhost"
    my_environ["SERVER_PORT"] = "5000"
    my_environ["QUERY_STRING"] = "5000"
    my_environ.update(environ)
    request = Request(my_environ)
    request.registry = config.registry
    return request