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()
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
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)
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()
def test_deserialize_invalid_unicode(): handler = media.URLEncodedFormHandler() stream = io.BytesIO('spade=♠'.encode()) with pytest.raises(UnicodeDecodeError): handler.deserialize(stream, falcon.MEDIA_URLENCODED, 9)
def test_deserialize_empty_form(): handler = media.URLEncodedFormHandler() stream = io.BytesIO(b'') assert handler.deserialize(stream, falcon.MEDIA_URLENCODED, 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)
def test_urlencoded_form_handler_serialize(data, expected): handler = media.URLEncodedFormHandler() assert handler.serialize(data, falcon.MEDIA_URLENCODED) == expected