# -*- coding: utf-8 -*- import webob import webob.exc import webapp2 import test_base class TestMiscellaneous(test_base.BaseTestCase): def test_abort(self): self.assertRaises(webob.exc.HTTPOk, webapp2.abort, 200) self.assertRaises(webob.exc.HTTPCreated, webapp2.abort, 201) self.assertRaises(webob.exc.HTTPAccepted, webapp2.abort, 202) self.assertRaises(webob.exc.HTTPNonAuthoritativeInformation, webapp2.abort, 203) self.assertRaises(webob.exc.HTTPNoContent, webapp2.abort, 204) self.assertRaises(webob.exc.HTTPResetContent, webapp2.abort, 205) self.assertRaises(webob.exc.HTTPPartialContent, webapp2.abort, 206) self.assertRaises(webob.exc.HTTPMultipleChoices, webapp2.abort, 300) self.assertRaises(webob.exc.HTTPMovedPermanently, webapp2.abort, 301) self.assertRaises(webob.exc.HTTPFound, webapp2.abort, 302) self.assertRaises(webob.exc.HTTPSeeOther, webapp2.abort, 303) self.assertRaises(webob.exc.HTTPNotModified, webapp2.abort, 304) self.assertRaises(webob.exc.HTTPUseProxy, webapp2.abort, 305) self.assertRaises(webob.exc.HTTPTemporaryRedirect, webapp2.abort, 307) self.assertRaises(webob.exc.HTTPClientError, webapp2.abort, 400) self.assertRaises(webob.exc.HTTPUnauthorized, webapp2.abort, 401) self.assertRaises(webob.exc.HTTPPaymentRequired, webapp2.abort, 402) self.assertRaises(webob.exc.HTTPForbidden, webapp2.abort, 403) self.assertRaises(webob.exc.HTTPNotFound, webapp2.abort, 404) self.assertRaises(webob.exc.HTTPMethodNotAllowed, webapp2.abort, 405) self.assertRaises(webob.exc.HTTPNotAcceptable, webapp2.abort, 406) self.assertRaises(webob.exc.HTTPProxyAuthenticationRequired, webapp2.abort, 407) self.assertRaises(webob.exc.HTTPRequestTimeout, webapp2.abort, 408) self.assertRaises(webob.exc.HTTPConflict, webapp2.abort, 409) self.assertRaises(webob.exc.HTTPGone, webapp2.abort, 410) self.assertRaises(webob.exc.HTTPLengthRequired, webapp2.abort, 411) self.assertRaises(webob.exc.HTTPPreconditionFailed, webapp2.abort, 412) self.assertRaises(webob.exc.HTTPRequestEntityTooLarge, webapp2.abort, 413) self.assertRaises(webob.exc.HTTPRequestURITooLong, webapp2.abort, 414) self.assertRaises(webob.exc.HTTPUnsupportedMediaType, webapp2.abort, 415) self.assertRaises(webob.exc.HTTPRequestRangeNotSatisfiable, webapp2.abort, 416) self.assertRaises(webob.exc.HTTPExpectationFailed, webapp2.abort, 417) self.assertRaises(webob.exc.HTTPInternalServerError, webapp2.abort, 500) self.assertRaises(webob.exc.HTTPNotImplemented, webapp2.abort, 501) self.assertRaises(webob.exc.HTTPBadGateway, webapp2.abort, 502) self.assertRaises(webob.exc.HTTPServiceUnavailable, webapp2.abort, 503) self.assertRaises(webob.exc.HTTPGatewayTimeout, webapp2.abort, 504) self.assertRaises(webob.exc.HTTPVersionNotSupported, webapp2.abort, 505) # Invalid use 500 as default. self.assertRaises(KeyError, webapp2.abort, 0) self.assertRaises(KeyError, webapp2.abort, 999999) self.assertRaises(KeyError, webapp2.abort, 'foo') def test_import_string(self): self.assertEqual(webapp2.import_string('webob.exc'), webob.exc) self.assertEqual(webapp2.import_string('webob'), webob) self.assertEqual(webapp2.import_string('asdfg', silent=True), None) self.assertEqual(webapp2.import_string('webob.asdfg', silent=True), None) self.assertRaises(webapp2.ImportStringError, webapp2.import_string, 'asdfg') self.assertRaises(webapp2.ImportStringError, webapp2.import_string, 'webob.asdfg') def test_to_utf8(self): res = webapp2._to_utf8('ábcdéf'.decode('utf-8')) self.assertEqual(isinstance(res, str), True) res = webapp2._to_utf8('abcdef') self.assertEqual(isinstance(res, str), True) ''' # removed to simplify the codebase. def test_to_unicode(self): res = webapp2.to_unicode(unicode('foo')) self.assertEqual(isinstance(res, unicode), True) res = webapp2.to_unicode('foo') self.assertEqual(isinstance(res, unicode), True) ''' def test_http_status_message(self): self.assertEqual(webapp2.Response.http_status_message(404), 'Not Found') self.assertEqual(webapp2.Response.http_status_message(500), 'Internal Server Error') self.assertRaises(KeyError, webapp2.Response.http_status_message, 9999) def test_cached_property(self): count = [0] class Foo(object): @webapp2.cached_property def bar(self): count[0] += 1 return count[0] self.assertTrue(isinstance(Foo.bar, webapp2.cached_property)) foo = Foo() self.assertEqual(foo.bar, 1) self.assertEqual(foo.bar, 1) self.assertEqual(foo.bar, 1) def test_redirect(self): app = webapp2.WSGIApplication() req = webapp2.Request.blank('/') req.app = app app.set_globals(app=app, request=req) rsp = webapp2.redirect('http://www.google.com/', code=301, body='Weee') self.assertEqual(rsp.status_int, 301) self.assertEqual(rsp.body, 'Weee') self.assertEqual(rsp.headers.get('Location'), 'http://www.google.com/') def test_redirect_to(self): app = webapp2.WSGIApplication([ webapp2.Route('/home', handler='', name='home'), ]) req = webapp2.Request.blank('/') req.app = app app.set_globals(app=app, request=req) rsp = webapp2.redirect_to('home', _code=301, _body='Weee') self.assertEqual(rsp.status_int, 301) self.assertEqual(rsp.body, 'Weee') self.assertEqual(rsp.headers.get('Location'), 'http://localhost/home') if __name__ == '__main__': test_base.main()