def test_invalid_header(): req = Request() req._write(open('%s/invalid_header.txt' % requestdir).read()) req._parse() assert len(req.headers) == 1 assert req.headers['Host'] == ['localhost:9999']
def test_get_params(): req = Request() req._write(open('%s/get_params.txt' % requestdir).read()) req._parse() assert len(req.get) == 2 assert req.get['test'] == ['hello'] assert req.get['foo'] == ['bar']
def test_single_file(): req = Request() req._input = open('%s/file.txt' % requestdir) req._parse() assert req.post == {} assert len(req.files) == 1 assert isinstance(req.files[0], UploadedFile) assert len(req.files[0].file.read()) == 21743
def test_cookies(): req = Request() with open('%s/cookie.txt' % requestdir) as f: req._write(f.read()) req._parse() assert len(req.cookies) == 2 assert req.cookies[0].name == 'name' assert req.cookies[0].value == 'value' assert req.cookies[1].name == 'name2' assert req.cookies[1].value == 'value2'
def test_data(): req = Request() req._input = open('%s/data.txt' % requestdir) req._parse() expected = { 'text1': 'foo', 'text2': 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc porta tempus venenatis. Proin lobortis tempor ante, id ornare nisl dignissim vitae. Nullam in placerat metus.\r\n\r\nDonec nisi nisi, ultricies cursus enim ac, tempor sodales sem. Sed sit amet fermentum nisi, id fringilla libero. Praesent eget ante lacus. Nunc pretium velit est, sed lacinia eros lacinia a. Donec in neque tempus, vehicula odio ac, condimentum mi. Nulla id tristique nisi, ac consequat eros.'} assert len(req.post) == 2 for key in expected: assert req.post[key][0] == expected[key]
def test_file_and_data(): req = Request() req._input = open('%s/mixed.txt' % requestdir) req._parse() assert len(req.post) == 1 assert len(req.files) == 1 assert req.post['text1'][0] == 'asdf' assert isinstance(req.files[0], UploadedFile) assert len(req.files[0].file.read()) == 21743 assert req.files[0].filename == 'panda-baby.jpg'
def test_data(): req = Request() req._input = open('%s/data.txt' % requestdir) req._parse() expected = { 'text1': 'foo', 'text2': 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc porta tempus venenatis. Proin lobortis tempor ante, id ornare nisl dignissim vitae. Nullam in placerat metus.\r\n\r\nDonec nisi nisi, ultricies cursus enim ac, tempor sodales sem. Sed sit amet fermentum nisi, id fringilla libero. Praesent eget ante lacus. Nunc pretium velit est, sed lacinia eros lacinia a. Donec in neque tempus, vehicula odio ac, condimentum mi. Nulla id tristique nisi, ac consequat eros.' } assert len(req.post) == 2 for key in expected: assert req.post[key][0] == expected[key]
def test_multiple_files(): req = Request() req._input = open('%s/files.txt' % requestdir) req._parse() assert len(req.post) == 0 assert len(req.files) == 2 assert isinstance(req.files[0], UploadedFile) assert len(req.files[0].file.read()) == 21743 assert req.files[0].filename == 'panda-baby.jpg' assert isinstance(req.files[1], UploadedFile) assert len(req.files[1].file.read()) == 16970 assert req.files[1].filename == 'puppy-small.jpg'
def test_static_file_handler(): req = Request() handler = StaticFileHandler() response = handler.get(req, 'panda-baby.jpg', staticdir) assert response.headers['Content-Type'] == ['image/jpeg'] s = str(response) image_data = s[s.index('\r\n\r\n') + 4:] assert len(image_data) == 21743
def test_headers(): req = Request() req._write(open('%s/mixed.txt' % requestdir).read()) req._parse() headers = { 'Host': 'localhost:9999', 'Connection': 'keep-alive', 'Content-Length': '22028', 'Cache-Control': 'max-age=0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Origin': 'null', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36', 'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundarygQtUpZGpES2gHbcb', 'Accept-Encoding': 'gzip,deflate,sdch', 'Accept-Language': 'en-US,en;q=0.8', } for k, v in headers.items(): assert req.headers[k] == [v]
def test_has_more_data(): req = Request() with open('%s/mixed.txt' % requestdir) as f: # First only write headers to request while True: line = f.readline() req._write(line) if not line.strip(): break # Headers contain content-length, so there must be more data assert req._has_more_data() == True # Write rest of request data = f.read() req._write(data) assert req._has_more_data() == False
def test_static_file_handler_directory(): req = Request() handler = StaticFileHandler() response = handler.get(req, 'empty', staticdir) assert response.status_code == 404
def test_execution_time(): req = Request() req._write(open('%s/get_params.txt' % requestdir).read()) req._parse() assert req._execution_time >= 0
def test_get_message_start(): req = Request() req._write(open('%s/mixed.txt' % requestdir).read()) req._parse() assert req._get_message_start() == 487
def test_x_forwarded_for(): req = Request() with open('%s/x_forwarded_for.txt' % requestdir) as f: req._write(f.read()) req._parse() assert req.ip == '9.9.9.9'
def test_message_bytes(): req = Request() req._write(open('%s/mixed.txt' % requestdir).read()) req._parse() assert req._message_bytes == 22028
def test_x_real_ip(): req = Request() with open('%s/x_real_ip.txt' % requestdir) as f: req._write(f.read()) req._parse() assert req.ip == '9.9.9.9'
def test_static_file_handler_404(): req = Request() handler = StaticFileHandler() response = handler.get(req, 'doesnotexist.jpg', staticdir) assert response.status_code == 404