1import time 2import unittest 3import unit 4 5class TestUnitPythonApplication(unit.TestUnitApplicationPython): 6 7 def setUpClass(): 8 unit.TestUnit().check_modules('python') 9 10 def test_python_application_variables(self): 11 self.load('variables') 12 13 body = 'Test body string.' 14 15 resp = self.post(headers={ 16 'Host': 'localhost', 17 'Content-Type': 'text/html', 18 'Custom-Header': 'blah' 19 }, body=body) 20 21 self.assertEqual(resp['status'], 200, 'status') 22 headers = resp['headers'] 23 self.assertRegex(headers.pop('Server'), r'unit/[\d\.]+', 24 'server header') 25 self.assertLess(abs(time.mktime(time.gmtime()) - 26 time.mktime(time.strptime(headers.pop('Date'), 27 '%a, %d %b %Y %H:%M:%S GMT'))), 5, 'date header') 28 self.assertDictEqual(headers, { 29 'Content-Length': str(len(body)), 30 'Content-Type': 'text/html', 31 'Request-Method': 'POST', 32 'Request-Uri': '/', 33 'Http-Host': 'localhost', 34 'Server-Protocol': 'HTTP/1.1', 35 'Custom-Header': 'blah' 36 }, 'headers') 37 self.assertEqual(resp['body'], body, 'body') 38 39 def test_python_application_query_string(self): 40 self.load('query_string') 41 42 resp = self.get(url='/?var1=val1&var2=val2') 43 44 self.assertEqual(resp['headers']['Query-String'], 'var1=val1&var2=val2', 45 'Query-String header') 46 47 @unittest.expectedFailure 48 def test_python_application_server_port(self): 49 self.load('server_port') 50 51 self.assertEqual(self.get()['headers']['Server-Port'], '7080', 52 'Server-Port header') 53 54 @unittest.expectedFailure 55 def test_python_application_204_transfer_encoding(self): 56 self.load('204_no_content') 57 58 self.assertNotIn('Transfer-Encoding', self.get()['headers'], 59 '204 header transfer encoding') 60 61if __name__ == '__main__': 62 unittest.main() 63