1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# -*- coding: utf-8 -*-
''' Tests for the FileUpload wrapper. '''
import unittest
import sys, os.path
import bottle
from bottle import FileUpload, BytesIO, tob
import tempfile
class TestFileUpload(unittest.TestCase):
def test_name(self):
self.assertEqual(FileUpload(None, 'abc', None).name, 'abc')
def test_raw_filename(self):
self.assertEqual(FileUpload(None, None, 'x/x').raw_filename, 'x/x')
def test_content_type(self):
fu = FileUpload(None, None, None, {"Content-type": "text/plain"})
self.assertEqual(fu.content_type, 'text/plain')
def assertFilename(self, bad, good):
fu = FileUpload(None, None, bad)
self.assertEqual(fu.filename, good)
def test_filename(self):
self.assertFilename('with space', 'with-space')
self.assertFilename('with more \t\n\r space', 'with-more-space')
self.assertFilename('with/path', 'path')
self.assertFilename('../path', 'path')
self.assertFilename('..\\path', 'path')
self.assertFilename('..', 'empty')
self.assertFilename('.name.', 'name')
self.assertFilename('.name.cfg', 'name.cfg')
self.assertFilename(' . na me . ', 'na-me')
self.assertFilename('path/', 'empty')
self.assertFilename(bottle.tob('ümläüts$'), 'umlauts')
self.assertFilename(bottle.touni('ümläüts$'), 'umlauts')
self.assertFilename('', 'empty')
self.assertFilename('a'+'b'*1337+'c', 'a'+'b'*254)
def test_preserve_case_issue_582(self):
self.assertFilename('UpperCase', 'UpperCase')
def test_save_buffer(self):
fu = FileUpload(open(__file__, 'rb'), 'testfile', __file__)
buff = BytesIO()
fu.save(buff)
buff.seek(0)
self.assertEqual(fu.file.read(), buff.read())
def test_save_file(self):
fu = FileUpload(open(__file__, 'rb'), 'testfile', __file__)
buff = tempfile.TemporaryFile()
fu.save(buff)
buff.seek(0)
self.assertEqual(fu.file.read(), buff.read())
def test_save_overwrite_lock(self):
fu = FileUpload(open(__file__, 'rb'), 'testfile', __file__)
self.assertRaises(IOError, fu.save, __file__)
def test_save_dir(self):
fu = FileUpload(open(__file__, 'rb'), 'testfile', __file__)
dirpath = tempfile.mkdtemp()
filepath = os.path.join(dirpath, fu.filename)
fu.save(dirpath)
self.assertEqual(fu.file.read(), open(filepath, 'rb').read())
os.unlink(filepath)
os.rmdir(dirpath)
|