def test_multipart(): env = dict(copy.deepcopy(env1)) form_data = '''-----------------------------9051914041544843365972754266 Content-Disposition: form-data; name="text" text default -----------------------------9051914041544843365972754266 Content-Disposition: form-data; name="file1"; filename="a.txt" Content-Type: text/plain Content of a.txt. -----------------------------9051914041544843365972754266 Content-Disposition: form-data; name="file2"; filename="a.html" Content-Type: text/html <!DOCTYPE html><title>Content of a.html.</title> -----------------------------9051914041544843365972754266-- ''' env['CONTENT_TYPE'] = 'multipart/form-data; boundary=---------------------------9051914041544843365972754266' env['wsgi.input'] = BytesIO(to_bytes(form_data)) env['CONTENT_LENGTH'] = len(form_data) env['QUERY_STRING'] = '' req = Request(env) assert req.args == MultiDict() assert req.form == FormsDict({'text':'text default'}.items()) assert req.values == MultiDict({'text':'text default'}.items()) a_txt = req.files['file1'] a_html = req.files['file2'] assert a_txt.filename == 'a.txt' assert a_txt.headers['Content-Type'] == 'text/plain' assert a_html.filename == 'a.html' assert a_html.headers['Content-Type'] == 'text/html' assert req.close() == None
def _test_chunked(body, expect): env = dict(copy.deepcopy(env1)) env['wsgi.input'] = BytesIO(to_bytes(body)) env['HTTP_TRANSFER_ENCODING'] = 'chunked' env['QUERY_STRING'] = '' req = Request(env) assert req.chunked == True if inspect.isclass(expect) and issubclass(expect, Exception): with pytest.raises(BadRequest): req.get_data() else: assert req.data == to_bytes(expect)
def test_cookie_dict(): """ Environ: Cookie dict """ t = dict() t['a=a'] = {'a': 'a'} t['a=a; b=b'] = {'a': 'a', 'b':'b'} t['a=a; a=b'] = {'a': 'b'} for k, v in t.items(): env = dict(copy.deepcopy(env1)) env.update({'HTTP_COOKIE': k}) req = Request(env) for n in v: assert v[n] == req.cookies[n] assert v[n] == req.get_cookie(n)
def test_basic_request(): env = dict(copy.deepcopy(env1)) req = Request(env) assert 'flagon.request' in env assert req.args == MultiDict({'a':'1', 'b':'2'}.items()) assert req.values == MultiDict({'a':'1', 'b':'2'}.items()) assert req.path == '/bar' assert req.full_path == '/foo/bar' assert req.script_root == '/foo' assert req.url == 'http://test.flagon.org/foo/bar?a=1&b=2' assert req.base_url == 'http://test.flagon.org/foo/bar' assert req.root_url == 'http://test.flagon.org/foo/' assert req.host_url == 'http://test.flagon.org/' assert req.host == 'test.flagon.org' assert req.get_data() == b'' assert req.get_data(as_text=True) == '' assert req.blueprint == None assert req.mimetype == 'text/plain' assert req.mimetype_params == {'charset': 'utf-8'} assert req.get_json() == None assert req.get_json() == None assert req.content_length == 0 assert req.authorization == None assert req.cookies == FormsDict() assert list(req.range) == [] assert req.access_route == [] assert req.is_xhr == False assert req.is_secure == False assert req.if_modified_since == None assert req.if_unmodified_since == None assert req.access_route == [] assert req.remote_addr == None assert req.chunked == False assert req.method == "POST" assert req.url_charset == 'utf-8' assert "Content-Length" in req.headers assert "Request" in repr(req)