def test_attfncontqs(self): disptype, params = multipart.parse_content_disposition( r'attachment; filename*0="foo"; filename*1="\b\a\r.html"') self.assertEqual('attachment', disptype) self.assertEqual({ 'filename*0': 'foo', 'filename*1': 'bar.html' }, params)
def test_attfnboth3(self): disptype, params = multipart.parse_content_disposition( "attachment; filename*0*=ISO-8859-15''euro-sign%3d%a4;" " filename*=ISO-8859-1''currency-sign%3d%a4") self.assertEqual('attachment', disptype) self.assertEqual( { 'filename*': u'currency-sign=¤', 'filename*0*': "ISO-8859-15''euro-sign%3d%a4" }, params)
def test_attfnboth2(self): disptype, params = multipart.parse_content_disposition( "attachment; filename*=UTF-8''foo-%c3%a4.html;" ' filename="foo-ae.html"') self.assertEqual('attachment', disptype) self.assertEqual( { 'filename': 'foo-ae.html', 'filename*': u'foo-ä.html' }, params)
def test_attfncontenc(self): disptype, params = multipart.parse_content_disposition( 'attachment; filename*0*=UTF-8' 'foo-%c3%a4; filename*1=".html"') self.assertEqual('attachment', disptype) self.assertEqual( { 'filename*0*': 'UTF-8' 'foo-%c3%a4', 'filename*1': '.html' }, params)
def test_attwithfn2231utf8comp(self): disptype, params = multipart.parse_content_disposition( "attachment; filename*=UTF-8''foo-a%cc%88.html") self.assertEqual('attachment', disptype) self.assertEqual({'filename*': u'foo-ä.html'}, params)
def test_attmissingdisposition4(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( 'filename=foo.html, filename=bar.html') self.assertEqual(None, disptype) self.assertEqual({}, params)
def test_attwithfn2231noc(self): disptype, params = multipart.parse_content_disposition( "attachment; filename*=''foo-%c3%a4-%e2%82%ac.html") self.assertEqual('attachment', disptype) self.assertEqual({'filename*': u'foo-ä-€.html'}, params)
def test_attwithfn2231dpct(self): disptype, params = multipart.parse_content_disposition( "attachment; filename*=UTF-8''A-%2541.html") self.assertEqual('attachment', disptype) self.assertEqual({'filename*': 'A-%41.html'}, params)
def test_attfncont(self): disptype, params = multipart.parse_content_disposition( 'attachment; filename*0="foo."; filename*1="html"') self.assertEqual('attachment', disptype) self.assertEqual({'filename*0': 'foo.', 'filename*1': 'html'}, params)
def test_attwithfn2231ws3(self): disptype, params = multipart.parse_content_disposition( "attachment; filename* =UTF-8''foo-%c3%a4.html") self.assertEqual('attachment', disptype) self.assertEqual({'filename*': u'foo-ä.html'}, params)
def test_attwithfn2231singleqmissing(self): with self.assertWarns(multipart.BadContentDispositionParam): disptype, params = multipart.parse_content_disposition( "attachment; filename*=UTF-8'foo-%c3%a4.html") self.assertEqual('attachment', disptype) self.assertEqual({}, params)
def test_attreversed(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( 'filename=foo.html; attachment') self.assertEqual(None, disptype) self.assertEqual({}, params)
def test_attconfusedparam(self): disptype, params = multipart.parse_content_disposition( 'attachment; xfilename=foo.html') self.assertEqual('attachment', disptype) self.assertEqual({'xfilename': 'foo.html'}, params)
def test_attmultinstances(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( 'attachment; filename=foo.html, attachment; filename=bar.html') self.assertEqual(None, disptype) self.assertEqual({}, params)
def test_attmissingdelim3(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( 'attachment filename=bar') self.assertEqual(None, disptype) self.assertEqual({}, params)
def test_attbrokenquotedfn3(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( 'attachment; filename=foo"bar;baz"qux') self.assertEqual(None, disptype) self.assertEqual({}, params)
def test_doublecolon(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( ': inline; attachment; filename=foo.html') self.assertEqual(None, disptype) self.assertEqual({}, params)
def test_emptydisposition(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( '; filename=foo.html') self.assertEqual(None, disptype) self.assertEqual({}, params)
def test_attwithfn2231utf8_bad(self): with self.assertWarns(multipart.BadContentDispositionParam): disptype, params = multipart.parse_content_disposition( "attachment; filename*=iso-8859-1''foo-%c3%a4-%e2%82%ac.html") self.assertEqual('attachment', disptype) self.assertEqual({}, params)
def test_attabspathwin(self): disptype, params = multipart.parse_content_disposition( 'attachment; filename="\\foo.html"') self.assertEqual('attachment', disptype) self.assertEqual({'filename': 'foo.html'}, params)
def test_attwithfn2231iso_bad(self): with self.assertWarns(multipart.BadContentDispositionParam): disptype, params = multipart.parse_content_disposition( "attachment; filename*=utf-8''foo-%E4.html") self.assertEqual('attachment', disptype) self.assertEqual({}, params)
def test_attmdate(self): disptype, params = multipart.parse_content_disposition( 'attachment; modification-date="Wed, 12 Feb 1997 16:29:51 -0500"') self.assertEqual('attachment', disptype) self.assertEqual( {'modification-date': 'Wed, 12 Feb 1997 16:29:51 -0500'}, params)
def test_attwithfn2231quot2(self): with self.assertWarns(multipart.BadContentDispositionParam): disptype, params = multipart.parse_content_disposition( "attachment; filename*=\"foo%20bar.html\"") self.assertEqual('attachment', disptype) self.assertEqual({}, params)
def test_attfnbrokentokenutf(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( 'attachment; filename=foo-ä.html') self.assertEqual(None, disptype) self.assertEqual({}, params)
def test_attwithfn2231nbadpct2(self): with self.assertWarns(multipart.BadContentDispositionParam): disptype, params = multipart.parse_content_disposition( "attachment; filename*=UTF-8''f%oo.html") self.assertEqual('attachment', disptype) self.assertEqual({}, params)
def test_dispextbadfn(self): disptype, params = multipart.parse_content_disposition( 'attachment; example="filename=example.txt"') self.assertEqual('attachment', disptype) self.assertEqual({'example': 'filename=example.txt'}, params)
def test_attwithfn2231abspathdisguised(self): disptype, params = multipart.parse_content_disposition( "attachment; filename*=UTF-8''%5cfoo.html") self.assertEqual('attachment', disptype) self.assertEqual({'filename*': '\\foo.html'}, params)
def test_attwithisofn2231iso(self): disptype, params = multipart.parse_content_disposition( "attachment; filename*=iso-8859-1''foo-%E4.html") self.assertEqual('attachment', disptype) self.assertEqual({'filename*': u'foo-ä.html'}, params)
def test_dispext(self): disptype, params = multipart.parse_content_disposition('foobar') self.assertEqual('foobar', disptype) self.assertEqual({}, params)
def test_attmissingdisposition3(self): with self.assertWarns(multipart.BadContentDispositionHeader): disptype, params = multipart.parse_content_disposition( '"foo; filename=bar;baz"; filename=qux') self.assertEqual(None, disptype) self.assertEqual({}, params)