tests.modjy.test_apps_dir.environ_tests.py Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython-standalone Show documentation
Show all versions of jython-standalone Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
# -*- coding: windows-1252 -*-
###
#
# Copyright Alan Kennedy.
#
# You may contact the copyright holder at this uri:
#
# http://www.xhaus.com/contact/modjy
#
# The licence under which this code is released is the Apache License v2.0.
#
# The terms and conditions of this license are listed in a file contained
# in the distribution that also contained this file, under the name
# LICENSE.txt.
#
# You may also read a copy of the license at the following web address.
#
# http://modjy.xhaus.com/LICENSE.txt
#
###
"""
A variety of app callables used to test the WSGI environment.
"""
def test_echo_wsgi_env(environ, start_response):
writer = start_response("200 OK", [])
output_dict = {}
for k in environ["QUERY_STRING"].split(';'):
output_dict[k] = environ[k]
return [repr(output_dict)]
def test_env_is_dict(environ, start_response):
writer = start_response("200 OK", [])
if type(environ) is type({}):
writer("true")
else:
writer("false")
return []
def test_env_is_mutable(environ, start_response):
writer = start_response("200 OK", [])
try:
environ['some_key'] = 'some value'
writer("true")
except:
writer("false")
return []
def test_env_contains_request_method(environ, start_response):
writer = start_response("200 OK", [])
try:
writer(environ['REQUEST_METHOD'])
except KeyError, k:
writer(str(k))
return []
def test_env_script_name_path_info(environ, start_response):
writer = start_response("200 OK", [])
writer("%s:::%s" % (environ['SCRIPT_NAME'], environ['PATH_INFO']))
return []
def test_env_query_string(environ, start_response):
writer = start_response("200 OK", [])
writer(environ['QUERY_STRING'])
return []
required_cgi_vars = [
'REQUEST_METHOD',
'SCRIPT_NAME',
'PATH_INFO',
'QUERY_STRING',
'CONTENT_TYPE',
'CONTENT_LENGTH',
'SERVER_NAME',
'SERVER_PORT',
'SERVER_PROTOCOL',
]
other_cgi_vars = [
]
def test_cgi_vars_are_str(environ, start_response):
start_response("200 OK", [])
for rcv in required_cgi_vars:
if environ.has_key(rcv) and not isinstance(environ[rcv], str):
return ["fail: '%s(%s)' is not 'str'" % (rcv, str(type(environ[rcv])))]
for ocv in other_cgi_vars:
if environ.has_key(ocv) and not isinstance(environ[ocv], str):
return ["fail: '%s(%s)' is not 'str'" % (ocv, str(type(environ[ocv])))]
for k in environ.keys():
if k.startswith('HTTP_') and not isinstance(environ[k], str):
return ["fail: '%s(%s)' is not 'str'" % (k, str(type(environ[k])))]
return ["pass"]
def test_multiple_header_values(environ, start_response):
start_response("200 OK", [])
env_var_name = 'HTTP_MULTIPLE'
env_var = environ[env_var_name]
if not isinstance(env_var, list):
return ["fail: environment variable '%s' is not a list, but a '%s'" % (env_var_name, type(env_var))]
for ix, ev in enumerate(env_var):
if not isinstance(ev, str):
return ["fail: environment variable '%s'[%d] is not a str, but a '%s'" % (env_var_name, ix, type(ev))]
return ["pass"]