@@ -19,7 +19,7 @@ def testGetRequest(self):
19
19
20
20
def testPostRequestWithQuery (self ):
21
21
fs = FieldStorage (fp = BytesIO (), environ = dict (
22
- REQUEST_METHOD = 'GET ' , QUERY_STRING = 'a=1&b=2&b=3&c=3' ))
22
+ REQUEST_METHOD = 'POST ' , QUERY_STRING = 'a=1&b=2&b=3&c=3' ))
23
23
self .assertEqual (fs .getfirst ('a' ), '1' )
24
24
self .assertEqual (fs .getfirst ('b' ), '2' )
25
25
self .assertEqual (fs .getfirst ('c' ), '3' )
@@ -53,22 +53,66 @@ def testPostRequestOverrides(self):
53
53
self .assertEqual (fs .getlist ('e' ), ['5' , '6' ])
54
54
self .assertEqual (fs .getlist ('f' ), ['6' ])
55
55
56
+ def testPostRequestWithTooManyFields (self ):
57
+ fs = FieldStorage (fp = BytesIO (), environ = dict (
58
+ REQUEST_METHOD = 'POST' , QUERY_STRING = 'a=1&a=2&a=3&a=4' ),
59
+ max_num_fields = 4 )
60
+ self .assertEqual (fs .getlist ('a' ), ['1' , '2' , '3' , '4' ])
61
+ if hasattr (fs , 'max_num_fields' ): # only test if this is supported
62
+ self .assertRaises (
63
+ ValueError , FieldStorage ,
64
+ fp = BytesIO (), environ = dict (
65
+ REQUEST_METHOD = 'POST' , QUERY_STRING = 'a=1&a=2&a=3&a=4' ),
66
+ max_num_fields = 3 )
67
+
56
68
def testPostRequestWithQueryWithSemicolon1 (self ):
57
69
fs = FieldStorage (fp = BytesIO (), environ = dict (
58
- REQUEST_METHOD = 'GET ' , QUERY_STRING = 'a=1&b=2;b=3&c=3' ))
70
+ REQUEST_METHOD = 'POST ' , QUERY_STRING = 'a=1&b=2;b=3&c=3' ))
59
71
self .assertEqual (fs .getfirst ('a' ), '1' )
60
- self .assertEqual (fs .getfirst ('b' ), '2' )
61
72
self .assertEqual (fs .getfirst ('c' ), '3' )
62
73
self .assertEqual (fs .getlist ('a' ), ['1' ])
63
- self .assertEqual (fs .getlist ('b' ), ['2' , '3' ])
64
74
self .assertEqual (fs .getlist ('c' ), ['3' ])
75
+ separator = getattr (fs , 'separator' , None )
76
+ if separator : # new Python version, splits only &
77
+ self .assertEqual (fs .getfirst ('b' ), '2;b=3' )
78
+ self .assertEqual (fs .getlist ('b' ), ['2;b=3' ])
79
+ fs = FieldStorage (fp = BytesIO (), environ = dict (
80
+ REQUEST_METHOD = 'POST' , QUERY_STRING = 'a=1&b=2&b=3&c=3' ),
81
+ separator = '&' )
82
+ self .assertEqual (fs .getfirst ('a' ), '1' )
83
+ self .assertEqual (fs .getfirst ('b' ), '2' )
84
+ self .assertEqual (fs .getfirst ('c' ), '3' )
85
+ self .assertEqual (fs .getlist ('a' ), ['1' ])
86
+ self .assertEqual (fs .getlist ('b' ), ['2' , '3' ])
87
+ self .assertEqual (fs .getlist ('c' ), ['3' ])
88
+ else : # old Python version, splits ; and &
89
+ self .assertEqual (fs .getfirst ('b' ), '2' )
90
+ self .assertEqual (fs .getlist ('b' ), ['2' , '3' ])
65
91
66
92
def testPostRequestWithQueryWithSemicolon2 (self ):
67
93
fs = FieldStorage (fp = BytesIO (), environ = dict (
68
- REQUEST_METHOD = 'GET' , QUERY_STRING = 'a=1;b=2&b=3;c=3' ))
69
- self .assertEqual (fs .getfirst ('a' ), '1' )
70
- self .assertEqual (fs .getfirst ('b' ), '2' )
71
- self .assertEqual (fs .getfirst ('c' ), '3' )
72
- self .assertEqual (fs .getlist ('a' ), ['1' ])
73
- self .assertEqual (fs .getlist ('b' ), ['2' , '3' ])
74
- self .assertEqual (fs .getlist ('c' ), ['3' ])
94
+ REQUEST_METHOD = 'POST' , QUERY_STRING = 'a=1;b=2&b=3;c=3' ))
95
+ separator = getattr (fs , 'separator' , None )
96
+ if separator : # new Python version, splits only &
97
+ self .assertEqual (fs .getfirst ('a' ), '1;b=2' )
98
+ self .assertEqual (fs .getfirst ('b' ), '3;c=3' )
99
+ self .assertIsNone (fs .getfirst ('c' ))
100
+ self .assertEqual (fs .getlist ('a' ), ['1;b=2' ])
101
+ self .assertEqual (fs .getlist ('b' ), ['3;c=3' ])
102
+ self .assertEqual (fs .getlist ('c' ), [])
103
+ fs = FieldStorage (fp = BytesIO (), environ = dict (
104
+ REQUEST_METHOD = 'POST' , QUERY_STRING = 'a=1;b=2;b=3;c=3' ),
105
+ separator = ';' )
106
+ self .assertEqual (fs .getfirst ('a' ), '1' )
107
+ self .assertEqual (fs .getfirst ('b' ), '2' )
108
+ self .assertEqual (fs .getfirst ('c' ), '3' )
109
+ self .assertEqual (fs .getlist ('a' ), ['1' ])
110
+ self .assertEqual (fs .getlist ('b' ), ['2' , '3' ])
111
+ self .assertEqual (fs .getlist ('c' ), ['3' ])
112
+ else : # old Python version, splits ; and &
113
+ self .assertEqual (fs .getfirst ('a' ), '1' )
114
+ self .assertEqual (fs .getfirst ('b' ), '2' )
115
+ self .assertEqual (fs .getfirst ('c' ), '3' )
116
+ self .assertEqual (fs .getlist ('a' ), ['1' ])
117
+ self .assertEqual (fs .getlist ('b' ), ['2' , '3' ])
118
+ self .assertEqual (fs .getlist ('c' ), ['3' ])
0 commit comments