def test_get_form_vars_with_file(self): environ = sample_environ( REQUEST_METHOD='POST', CONTENT_TYPE='multipart/form-data; boundary=---------------------------721837373350705526688164684', CONTENT_LENGTH='558' ) postdata = """-----------------------------721837373350705526688164684 Content-Disposition: form-data; name="id" 1234 -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="title" -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="file"; filename="test.txt" Content-Type: text/plain Testing 123. -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="submit" Add\x20 -----------------------------721837373350705526688164684-- """ encoding = 'utf-8' fp = BytesIO(postdata.encode(encoding)) environ['wsgi.input'] = fp get, post, files = get_form_vars(environ) file = files.get('file') assert file.filename == 'test.txt' assert post.get('id') == '1234'
def _get_post_files_from_environ(self): if self.environ.get('REQUEST_METHOD') not in ('POST', 'PUT', 'PATCH'): post = files = ImmutableMultiDict() else: copy_wsgi_input(self.environ) post, files = get_form_vars(self.environ, ImmutableMultiDict) return post, files
def test_get_form_vars(self): environ = sample_environ( QUERY_STRING='test=test', REQUEST_METHOD='PUT') get, post, files = get_form_vars(environ) assert get['test'] == 'test' assert environ['CONTENT_TYPE'] == 'application/x-www-form-urlencoded'
def test_get_form_vars_with_file(self): environ = sample_environ( REQUEST_METHOD='POST', CONTENT_TYPE= 'multipart/form-data; boundary=---------------------------721837373350705526688164684', CONTENT_LENGTH='558') postdata = """-----------------------------721837373350705526688164684 Content-Disposition: form-data; name="id" 1234 -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="title" -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="file"; filename="test.txt" Content-Type: text/plain Testing 123. -----------------------------721837373350705526688164684 Content-Disposition: form-data; name="submit" Add\x20 -----------------------------721837373350705526688164684-- """ encoding = 'utf-8' fp = BytesIO(postdata.encode(encoding)) environ['wsgi.input'] = fp get, post, files = get_form_vars(environ) file = files.get('file') assert file.filename == 'test.txt' assert post.get('id') == '1234'
def create_request_from_environ(environ, session_class=None, session_options=None): """Create a new Request object. Create a new Request object based on a set of environ variables. To create a mutable version of the request you should copy() the Request object. If a POST variable named HTTP_REQUEST_METHOD is found, the Http Request method will be set to that method. """ headers, server, cookies = split_headers_server_vars(environ) get, post, files = get_form_vars(environ) if post.get("HTTP_REQUEST_METHOD", "").upper() in REQUEST_METHODS: method = post.get("HTTP_REQUEST_METHOD") else: method = server["REQUEST_METHOD"] request = Request( method, ImmutableMultiDict(get), ImmutableMultiDict(post), ImmutableMultiDict(files), ImmutableMultiDict(headers), ImmutableMultiDict(server), cookies, ) if session_class: request.define_session(session_class, session_options or {}) return request
def create_request_from_environ( environ, session_class=None, session_options=None): """Create a new Request object. Create a new Request object based on a set of environ variables. To create a mutable version of the request you should copy() the Request object. If a POST variable named HTTP_REQUEST_METHOD is found, the Http Request method will be set to that method. """ headers, server, cookies = split_headers_server_vars(environ) get, post, files = get_form_vars(environ) if post.get('HTTP_REQUEST_METHOD', '').upper() in REQUEST_METHODS: method = post.get('HTTP_REQUEST_METHOD') else: method = server['REQUEST_METHOD'] request = Request( method, ImmutableMultiDict(get), ImmutableMultiDict(post), ImmutableMultiDict(files), ImmutableMultiDict(headers), ImmutableMultiDict(server), cookies) if session_class: request.define_session(session_class, session_options or {}) return request
def test_get_form_vars(self): environ = sample_environ(QUERY_STRING='test=test', REQUEST_METHOD='PUT') get, post, files = get_form_vars(environ) assert get['test'] == 'test' assert environ['CONTENT_TYPE'] == 'application/x-www-form-urlencoded'