1#!/usr/bin/env python2 2 3import os 4import sys 5import unittest 6from StringIO import StringIO 7 8sys.path.insert(1, os.path.abspath('../..')) 9 10from WebUtils.FieldStorage import FieldStorage 11 12 13class TestFieldStorage(unittest.TestCase): 14 15 def testGetRequest(self): 16 fs = FieldStorage(environ=dict( 17 REQUEST_METHOD='GET', QUERY_STRING='a=1&b=2&b=3&c=3')) 18 self.assertEqual(fs.getfirst('a'), '1') 19 self.assertEqual(fs.getfirst('b'), '2') 20 self.assertEqual(fs.getfirst('c'), '3') 21 self.assertEqual(fs.getlist('a'), ['1']) 22 self.assertEqual(fs.getlist('b'), ['2', '3']) 23 self.assertEqual(fs.getlist('c'), ['3']) 24 25 def testPostRequestWithQuery(self): 26 fs = FieldStorage(fp=StringIO(), environ=dict( 27 REQUEST_METHOD='GET', QUERY_STRING='a=1&b=2&b=3&c=3')) 28 self.assertEqual(fs.getfirst('a'), '1') 29 self.assertEqual(fs.getfirst('b'), '2') 30 self.assertEqual(fs.getfirst('c'), '3') 31 self.assertEqual(fs.getlist('a'), ['1']) 32 self.assertEqual(fs.getlist('b'), ['2', '3']) 33 self.assertEqual(fs.getlist('c'), ['3']) 34 35 def testPostRequestWithBody(self): 36 fs = FieldStorage( 37 fp=StringIO('d=4&e=5&e=6&f=6'), environ=dict( 38 REQUEST_METHOD='POST')) 39 self.assertEqual(fs.getfirst('d'), '4') 40 self.assertEqual(fs.getfirst('e'), '5') 41 self.assertEqual(fs.getfirst('f'), '6') 42 self.assertEqual(fs.getlist('d'), ['4']) 43 self.assertEqual(fs.getlist('e'), ['5', '6']) 44 self.assertEqual(fs.getlist('f'), ['6']) 45 46 def testPostRequestOverrides(self): 47 fs = FieldStorage( 48 fp=StringIO('b=8&c=9&d=4&e=5&e=6&f=6'), environ=dict( 49 REQUEST_METHOD='POST', QUERY_STRING='a=1&b=2&b=3&c=3')) 50 self.assertEqual(fs.getfirst('a'), '1') 51 self.assertEqual(fs.getfirst('b'), '8') 52 self.assertEqual(fs.getfirst('c'), '9') 53 self.assertEqual(fs.getfirst('d'), '4') 54 self.assertEqual(fs.getfirst('e'), '5') 55 self.assertEqual(fs.getfirst('f'), '6') 56 self.assertEqual(fs.getlist('a'), ['1']) 57 self.assertEqual(fs.getlist('b'), ['8']) 58 self.assertEqual(fs.getlist('c'), ['9']) 59 self.assertEqual(fs.getlist('d'), ['4']) 60 self.assertEqual(fs.getlist('e'), ['5', '6']) 61 self.assertEqual(fs.getlist('f'), ['6']) 62 63 def testPostRequestWithQueryWithSemicolon1(self): 64 fs = FieldStorage(fp=StringIO(), environ=dict( 65 REQUEST_METHOD='GET', QUERY_STRING='a=1&b=2;b=3&c=3')) 66 self.assertEqual(fs.getfirst('a'), '1') 67 self.assertEqual(fs.getfirst('b'), '2') 68 self.assertEqual(fs.getfirst('c'), '3') 69 self.assertEqual(fs.getlist('a'), ['1']) 70 self.assertEqual(fs.getlist('b'), ['2', '3']) 71 self.assertEqual(fs.getlist('c'), ['3']) 72 73 def testPostRequestWithQueryWithSemicolon2(self): 74 fs = FieldStorage(fp=StringIO(), environ=dict( 75 REQUEST_METHOD='GET', QUERY_STRING='a=1;b=2&b=3;c=3')) 76 self.assertEqual(fs.getfirst('a'), '1') 77 self.assertEqual(fs.getfirst('b'), '2') 78 self.assertEqual(fs.getfirst('c'), '3') 79 self.assertEqual(fs.getlist('a'), ['1']) 80 self.assertEqual(fs.getlist('b'), ['2', '3']) 81 self.assertEqual(fs.getlist('c'), ['3']) 82 83 84if __name__ == '__main__': 85 unittest.main() 86