1# -*- coding: utf-8 -*- 2from tests.compat import unittest 3from webob import Request 4from webtest.debugapp import debug_app 5from webtest import http 6 7 8class TestServer(unittest.TestCase): 9 10 def setUp(self): 11 self.s = http.StopableWSGIServer.create(debug_app) 12 13 def test_server(self): 14 s = self.s 15 s.wait() 16 self.assertEqual(200, 17 http.check_server(s.adj.host, s.adj.port, 18 '/__application__')) 19 self.assertEqual(200, 20 http.check_server(s.adj.host, s.adj.port, 21 '/__file__?__file__=' + __file__)) 22 self.assertEqual(404, 23 http.check_server(s.adj.host, s.adj.port, 24 '/__file__?__file__=XXX')) 25 26 self.assertEqual(304, 27 http.check_server(s.adj.host, s.adj.port, 28 '/?status=304')) 29 30 def test_wsgi_wrapper(self): 31 s = self.s 32 s.wait() 33 req = Request.blank('/__application__') 34 resp = req.get_response(s.wrapper) 35 self.assertEqual(resp.status_int, 200) 36 37 req = Request.blank('/__file__?__file__=' + __file__) 38 resp = req.get_response(s.wrapper) 39 self.assertEqual(resp.status_int, 200) 40 41 req = Request.blank('/__file__?__file__=XXX') 42 resp = req.get_response(s.wrapper) 43 self.assertEqual(resp.status_int, 404) 44 45 req = Request.blank('/?status=304') 46 resp = req.get_response(s.wrapper) 47 self.assertEqual(resp.status_int, 304) 48 49 def tearDown(self): 50 self.s.shutdown() 51 52 53class TestBrokenServer(unittest.TestCase): 54 55 def test_shutdown_non_running(self): 56 host, port = http.get_free_port() 57 s = http.StopableWSGIServer(debug_app, host=host, port=port) 58 self.assertFalse(s.wait(retries=-1)) 59 self.assertTrue(s.shutdown()) 60 61 62class TestClient(unittest.TestCase): 63 64 def test_no_server(self): 65 host, port = http.get_free_port() 66 self.assertEqual(0, http.check_server(host, port, retries=2)) 67