Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_cgi.py @ 15842:f6cd36498a50 legacy-trunk
Document extensions to .pth files.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Sat, 13 Jan 2001 09:54:41 +0000 |
| parents | 07f24261c6e6 |
| children | bec0f61cfcd5 |
| rev | line source |
|---|---|
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
1 import cgi |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
2 import os |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
3 import sys |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
4 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
5 class HackedSysModule: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
6 # The regression test will have real values in sys.argv, which |
|
15305
07f24261c6e6
Make reindent.py happy (convert everything to 4-space indents!).
Fred Drake <fdrake@acm.org>
parents:
14606
diff
changeset
|
7 # will completely confuse the test of the cgi module |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
8 argv = [] |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
9 stdin = sys.stdin |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
10 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
11 cgi.sys = HackedSysModule() |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
12 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
13 try: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
14 from cStringIO import StringIO |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
15 except ImportError: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
16 from StringIO import StringIO |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
17 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
18 class ComparableException: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
19 def __init__(self, err): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
20 self.err = err |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
21 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
22 def __str__(self): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
23 return str(self.err) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
24 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
25 def __cmp__(self, anExc): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
26 if not isinstance(anExc, Exception): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
27 return -1 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
28 x = cmp(self.err.__class__, anExc.__class__) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
29 if x != 0: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
30 return x |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
31 return cmp(self.err.args, anExc.args) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
32 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
33 def __getattr__(self, attr): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
34 return getattr(self, self.err) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
35 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
36 def do_test(buf, method): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
37 env = {} |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
38 if method == "GET": |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
39 fp = None |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
40 env['REQUEST_METHOD'] = 'GET' |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
41 env['QUERY_STRING'] = buf |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
42 elif method == "POST": |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
43 fp = StringIO(buf) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
44 env['REQUEST_METHOD'] = 'POST' |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
45 env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded' |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
46 env['CONTENT_LENGTH'] = str(len(buf)) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
47 else: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
48 raise ValueError, "unknown method: %s" % method |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
49 try: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
50 return cgi.parse(fp, env, strict_parsing=1) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
51 except StandardError, err: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
52 return ComparableException(err) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
53 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
54 # A list of test cases. Each test case is a a two-tuple that contains |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
55 # a string with the query and a dictionary with the expected result. |
|
15305
07f24261c6e6
Make reindent.py happy (convert everything to 4-space indents!).
Fred Drake <fdrake@acm.org>
parents:
14606
diff
changeset
|
56 |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
57 parse_test_cases = [ |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
58 ("", ValueError("bad query field: ''")), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
59 ("&", ValueError("bad query field: ''")), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
60 ("&&", ValueError("bad query field: ''")), |
|
14606
f2fc66a6153b
fix bug #110661 (PR#356) -- accept either & or ; as separator for CGI
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14196
diff
changeset
|
61 (";", ValueError("bad query field: ''")), |
|
f2fc66a6153b
fix bug #110661 (PR#356) -- accept either & or ; as separator for CGI
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14196
diff
changeset
|
62 (";&;", ValueError("bad query field: ''")), |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
63 # Should the next few really be valid? |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
64 ("=", {}), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
65 ("=&=", {}), |
|
14606
f2fc66a6153b
fix bug #110661 (PR#356) -- accept either & or ; as separator for CGI
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14196
diff
changeset
|
66 ("=;=", {}), |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
67 # This rest seem to make sense |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
68 ("=a", {'': ['a']}), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
69 ("&=a", ValueError("bad query field: ''")), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
70 ("=a&", ValueError("bad query field: ''")), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
71 ("=&a", ValueError("bad query field: 'a'")), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
72 ("b=a", {'b': ['a']}), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
73 ("b+=a", {'b ': ['a']}), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
74 ("a=b=a", {'a': ['b=a']}), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
75 ("a=+b=a", {'a': [' b=a']}), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
76 ("&b=a", ValueError("bad query field: ''")), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
77 ("b&=a", ValueError("bad query field: 'b'")), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
78 ("a=a+b&b=b+c", {'a': ['a b'], 'b': ['b c']}), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
79 ("a=a+b&a=b+a", {'a': ['a b', 'b a']}), |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
80 ("x=1&y=2.0&z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}), |
|
14606
f2fc66a6153b
fix bug #110661 (PR#356) -- accept either & or ; as separator for CGI
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14196
diff
changeset
|
81 ("x=1;y=2.0&z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}), |
|
f2fc66a6153b
fix bug #110661 (PR#356) -- accept either & or ; as separator for CGI
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14196
diff
changeset
|
82 ("x=1;y=2.0;z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}), |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
83 ("Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=env", |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
84 {'Hbc5161168c542333633315dee1182227:key_store_seqid': ['400006'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
85 'cuyer': ['r'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
86 'expire': ['964546263'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
87 'kid': ['130003.300038'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
88 'lobale': ['en-US'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
89 'order_id': ['0bb2e248638833d48cb7fed300000f1b'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
90 'ss': ['env'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
91 'view': ['bustomer'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
92 }), |
|
15305
07f24261c6e6
Make reindent.py happy (convert everything to 4-space indents!).
Fred Drake <fdrake@acm.org>
parents:
14606
diff
changeset
|
93 |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
94 ("group_id=5470&set=custom&_assigned_to=31392&_status=1&_category=100&SUBMIT=Browse", |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
95 {'SUBMIT': ['Browse'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
96 '_assigned_to': ['31392'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
97 '_category': ['100'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
98 '_status': ['1'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
99 'group_id': ['5470'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
100 'set': ['custom'], |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
101 }) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
102 ] |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
103 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
104 def norm(list): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
105 if type(list) == type([]): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
106 list.sort() |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
107 return list |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
108 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
109 def first_elts(list): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
110 return map(lambda x:x[0], list) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
111 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
112 def first_second_elts(list): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
113 return map(lambda p:(p[0], p[1][0]), list) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
114 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
115 def main(): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
116 for orig, expect in parse_test_cases: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
117 # Test basic parsing |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
118 print repr(orig) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
119 d = do_test(orig, "GET") |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
120 assert d == expect, "Error parsing %s" % repr(orig) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
121 d = do_test(orig, "POST") |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
122 assert d == expect, "Error parsing %s" % repr(orig) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
123 |
|
14196
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
124 env = {'QUERY_STRING': orig} |
|
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
125 fcd = cgi.FormContentDict(env) |
|
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
126 sd = cgi.SvFormContentDict(env) |
|
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
127 fs = cgi.FieldStorage(environ=env) |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
128 if type(expect) == type({}): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
129 # test dict interface |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
130 assert len(expect) == len(fcd) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
131 assert norm(expect.keys()) == norm(fcd.keys()) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
132 assert norm(expect.values()) == norm(fcd.values()) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
133 assert norm(expect.items()) == norm(fcd.items()) |
|
14196
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
134 assert fcd.get("nonexistent field", "default") == "default" |
|
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
135 assert len(sd) == len(fs) |
|
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
136 assert norm(sd.keys()) == norm(fs.keys()) |
|
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
137 assert fs.getvalue("nonexistent field", "default") == "default" |
|
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
138 # test individual fields |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
139 for key in expect.keys(): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
140 expect_val = expect[key] |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
141 assert fcd.has_key(key) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
142 assert norm(fcd[key]) == norm(expect[key]) |
|
14196
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
143 assert fcd.get(key, "default") == fcd[key] |
|
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
144 assert fs.has_key(key) |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
145 if len(expect_val) > 1: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
146 single_value = 0 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
147 else: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
148 single_value = 1 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
149 try: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
150 val = sd[key] |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
151 except IndexError: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
152 assert not single_value |
|
14196
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
153 assert fs.getvalue(key) == expect_val |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
154 else: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
155 assert single_value |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
156 assert val == expect_val[0] |
|
14196
41234ae95d2a
Closing patch #101120 -- After everyone agreed.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
13842
diff
changeset
|
157 assert fs.getvalue(key) == expect_val[0] |
|
13842
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
158 assert norm(sd.getlist(key)) == norm(expect_val) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
159 if single_value: |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
160 assert norm(sd.values()) == \ |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
161 first_elts(norm(expect.values())) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
162 assert norm(sd.items()) == \ |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
163 first_second_elts(norm(expect.items())) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
164 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
165 # Test the weird FormContentDict classes |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
166 env = {'QUERY_STRING': "x=1&y=2.0&z=2-3.%2b0&1=1abc"} |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
167 expect = {'x': 1, 'y': 2.0, 'z': '2-3.+0', '1': '1abc'} |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
168 d = cgi.InterpFormContentDict(env) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
169 for k, v in expect.items(): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
170 assert d[k] == v |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
171 for k, v in d.items(): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
172 assert expect[k] == v |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
173 assert norm(expect.values()) == norm(d.values()) |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
174 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
175 print "Testing log" |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
176 cgi.initlog() |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
177 cgi.log("Testing") |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
178 cgi.logfp = sys.stdout |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
179 cgi.initlog("%s", "Testing initlog 1") |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
180 cgi.log("%s", "Testing log 2") |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
181 if os.path.exists("/dev/null"): |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
182 cgi.logfp = None |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
183 cgi.logfile = "/dev/null" |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
184 cgi.initlog("%s", "Testing log 3") |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
185 cgi.log("Testing log 4") |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
186 |
|
87488c3113f2
test the non-multipart sections of the cgi module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
187 main() |
