Ejemplo n.º 1
0
    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'
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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'
Ejemplo n.º 4
0
    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'
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
 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'