diff options
Diffstat (limited to 'websdk/werkzeug/testsuite/internal.py')
-rw-r--r-- | websdk/werkzeug/testsuite/internal.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/websdk/werkzeug/testsuite/internal.py b/websdk/werkzeug/testsuite/internal.py new file mode 100644 index 0000000..1de1b5d --- /dev/null +++ b/websdk/werkzeug/testsuite/internal.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +""" + werkzeug.testsuite.internal + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Internal tests. + + :copyright: (c) 2011 by Armin Ronacher. + :license: BSD, see LICENSE for more details. +""" +import unittest + +from datetime import datetime +from warnings import filterwarnings, resetwarnings + +from werkzeug.testsuite import WerkzeugTestCase +from werkzeug.wrappers import Request, Response + +from werkzeug import _internal as internal +from werkzeug.test import create_environ + + +class InternalTestCase(WerkzeugTestCase): + + def test_date_to_unix(self): + assert internal._date_to_unix(datetime(1970, 1, 1)) == 0 + assert internal._date_to_unix(datetime(1970, 1, 1, 1, 0, 0)) == 3600 + assert internal._date_to_unix(datetime(1970, 1, 1, 1, 1, 1)) == 3661 + x = datetime(2010, 2, 15, 16, 15, 39) + assert internal._date_to_unix(x) == 1266250539 + + def test_easteregg(self): + req = Request.from_values('/?macgybarchakku') + resp = Response.force_type(internal._easteregg(None), req) + assert 'About Werkzeug' in resp.data + assert 'the Swiss Army knife of Python web development' in resp.data + + def test_wrapper_internals(self): + req = Request.from_values(data={'foo': 'bar'}, method='POST') + req._load_form_data() + assert req.form.to_dict() == {'foo': 'bar'} + + # second call does not break + req._load_form_data() + assert req.form.to_dict() == {'foo': 'bar'} + + # check reprs + assert repr(req) == "<Request 'http://localhost/' [POST]>" + resp = Response() + assert repr(resp) == '<Response 0 bytes [200 OK]>' + resp.data = 'Hello World!' + assert repr(resp) == '<Response 12 bytes [200 OK]>' + resp.response = iter(['Test']) + assert repr(resp) == '<Response streamed [200 OK]>' + + # unicode data does not set content length + response = Response([u'Hällo Wörld']) + headers = response.get_wsgi_headers(create_environ()) + assert 'Content-Length' not in headers + + response = Response(['Hällo Wörld']) + headers = response.get_wsgi_headers(create_environ()) + assert 'Content-Length' in headers + + # check for internal warnings + filterwarnings('error', category=Warning) + response = Response() + environ = create_environ() + response.response = 'What the...?' + self.assert_raises(Warning, lambda: list(response.iter_encoded())) + self.assert_raises(Warning, lambda: list(response.get_app_iter(environ))) + response.direct_passthrough = True + self.assert_raises(Warning, lambda: list(response.iter_encoded())) + self.assert_raises(Warning, lambda: list(response.get_app_iter(environ))) + resetwarnings() + + +def suite(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(InternalTestCase)) + return suite |