Ejemplo n.º 1
0
def test_json_err_no_handler(asgi, monkeypatch_resolver):
    app = create_app(asgi)

    handlers = media.Handlers(
        {falcon.MEDIA_URLENCODED: media.URLEncodedFormHandler()})

    # NOTE(kgriffs): Test the pre-3.0 method. Although undocumented, it was
    #   technically a public method, and so we make sure it still works here.
    if monkeypatch_resolver:

        def _resolve(media_type, default, raise_not_found=True):
            with pytest.warns(DeprecatedWarning,
                              match='This undocumented method'):
                h = handlers.find_by_media_type(
                    media_type, default, raise_not_found=raise_not_found)
            return h, None, None

        handlers._resolve = _resolve

    app.req_options.media_handlers = handlers
    app.resp_options.media_handlers = handlers

    class Resource:
        def on_get(self, req, resp):
            raise falcon.HTTPForbidden()

    app.add_route('/', Resource())

    result = testing.simulate_get(app, '/')
    assert result.status_code == 403
    assert result.json == falcon.HTTPForbidden().to_dict()
Ejemplo n.º 2
0
def test_urlencoded_form_handler_serialize(data, expected):
    handler = media.URLEncodedFormHandler()
    assert handler.serialize(data, falcon.MEDIA_URLENCODED) == expected

    value = falcon.async_to_sync(handler.serialize_async, data,
                                 falcon.MEDIA_URLENCODED)
    assert value == expected
Ejemplo n.º 3
0
def client():
    handlers = media.Handlers({
        falcon.MEDIA_JSON:
        media.JSONHandler(),
        falcon.MEDIA_URLENCODED:
        media.URLEncodedFormHandler(),
    })
    api = falcon.API()
    api.req_options.media_handlers = handlers
    api.resp_options.media_handlers = handlers

    api.add_route('/media', MediaMirror())

    return testing.TestClient(api)
Ejemplo n.º 4
0
def test_json_err_no_handler(asgi):
    app = create_app(asgi)

    handlers = media.Handlers({falcon.MEDIA_URLENCODED: media.URLEncodedFormHandler()})
    app.req_options.media_handlers = handlers
    app.resp_options.media_handlers = handlers

    class Resource:
        def on_get(self, req, resp):
            raise falcon.HTTPForbidden()

    app.add_route('/', Resource())

    result = testing.simulate_get(app, '/')
    assert result.status_code == 403
    assert result.json == falcon.HTTPForbidden().to_dict()
Ejemplo n.º 5
0
def test_deserialize_invalid_unicode():
    handler = media.URLEncodedFormHandler()
    stream = io.BytesIO('spade=♠'.encode())
    with pytest.raises(UnicodeDecodeError):
        handler.deserialize(stream, falcon.MEDIA_URLENCODED, 9)
Ejemplo n.º 6
0
def test_deserialize_empty_form():
    handler = media.URLEncodedFormHandler()
    stream = io.BytesIO(b'')
    assert handler.deserialize(stream, falcon.MEDIA_URLENCODED, 0) == {}
Ejemplo n.º 7
0
def test_deserialize_invalid_unicode():
    handler = media.URLEncodedFormHandler()
    stream = io.BytesIO('spade=♠'.encode())
    with pytest.raises(falcon.MediaMalformedError) as err:
        handler.deserialize(stream, falcon.MEDIA_URLENCODED, 9)
    assert isinstance(err.value.__cause__, UnicodeDecodeError)
Ejemplo n.º 8
0
def test_urlencoded_form_handler_serialize(data, expected):
    handler = media.URLEncodedFormHandler()
    assert handler.serialize(data, falcon.MEDIA_URLENCODED) == expected