# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Tests for L{twisted.web.script}. """ import os from twisted.trial.unittest import TestCase from twisted.python.filepath import FilePath from twisted.web.http import NOT_FOUND from twisted.web.script import ResourceScriptDirectory, PythonScript from twisted.web.test._util import _render from twisted.web.test.requesthelper import DummyRequest class ResourceScriptDirectoryTests(TestCase): """ Tests for L{ResourceScriptDirectory}. """ def test_renderNotFound(self): """ L{ResourceScriptDirectory.render} sets the HTTP response code to I{NOT FOUND}. """ resource = ResourceScriptDirectory(self.mktemp()) request = DummyRequest([b'']) d = _render(resource, request) def cbRendered(ignored): self.assertEqual(request.responseCode, NOT_FOUND) d.addCallback(cbRendered) return d def test_notFoundChild(self): """ L{ResourceScriptDirectory.getChild} returns a resource which renders an response with the HTTP I{NOT FOUND} status code if the indicated child does not exist as an entry in the directory used to initialized the L{ResourceScriptDirectory}. """ path = self.mktemp() os.makedirs(path) resource = ResourceScriptDirectory(path) request = DummyRequest([b'foo']) child = resource.getChild("foo", request) d = _render(child, request) def cbRendered(ignored): self.assertEqual(request.responseCode, NOT_FOUND) d.addCallback(cbRendered) return d def test_render(self): """ L{ResourceScriptDirectory.getChild} returns a resource which renders a response with the HTTP 200 status code and the content of the rpy's C{request} global. """ tmp = FilePath(self.mktemp()) tmp.makedirs() tmp.child("test.rpy").setContent(b""" from twisted.web.resource import Resource class TestResource(Resource): isLeaf = True def render_GET(self, request): return b'ok' resource = TestResource()""") resource = ResourceScriptDirectory(tmp._asBytesPath()) request = DummyRequest([b'']) child = resource.getChild(b"test.rpy", request) d = _render(child, request) def cbRendered(ignored): self.assertEqual(b"".join(request.written), b"ok") d.addCallback(cbRendered) return d class PythonScriptTests(TestCase): """ Tests for L{PythonScript}. """ def test_notFoundRender(self): """ If the source file a L{PythonScript} is initialized with doesn't exist, L{PythonScript.render} sets the HTTP response code to I{NOT FOUND}. """ resource = PythonScript(self.mktemp(), None) request = DummyRequest([b'']) d = _render(resource, request) def cbRendered(ignored): self.assertEqual(request.responseCode, NOT_FOUND) d.addCallback(cbRendered) return d def test_renderException(self): """ L{ResourceScriptDirectory.getChild} returns a resource which renders a response with the HTTP 200 status code and the content of the rpy's C{request} global. """ tmp = FilePath(self.mktemp()) tmp.makedirs() child = tmp.child("test.epy") child.setContent(b'raise Exception("nooo")') resource = PythonScript(child._asBytesPath(), None) request = DummyRequest([b'']) d = _render(resource, request) def cbRendered(ignored): self.assertIn(b"nooo", b"".join(request.written)) d.addCallback(cbRendered) return d
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 108 B | 0644 |
|
_util.py | File | 2.51 KB | 0644 |
|
injectionhelpers.py | File | 5.5 KB | 0644 |
|
requesthelper.py | File | 10.6 KB | 0644 |
|
test_agent.py | File | 113.19 KB | 0644 |
|
test_cgi.py | File | 13.29 KB | 0644 |
|
test_client.py | File | 1.34 KB | 0644 |
|
test_distrib.py | File | 16.02 KB | 0644 |
|
test_domhelpers.py | File | 10.84 KB | 0644 |
|
test_error.py | File | 15.83 KB | 0644 |
|
test_flatten.py | File | 17.83 KB | 0644 |
|
test_html.py | File | 1.23 KB | 0644 |
|
test_http.py | File | 122.6 KB | 0644 |
|
test_http2.py | File | 105.98 KB | 0644 |
|
test_http_headers.py | File | 19.91 KB | 0644 |
|
test_httpauth.py | File | 22.75 KB | 0644 |
|
test_newclient.py | File | 102.47 KB | 0644 |
|
test_proxy.py | File | 19.62 KB | 0644 |
|
test_resource.py | File | 8.02 KB | 0644 |
|
test_script.py | File | 3.7 KB | 0644 |
|
test_stan.py | File | 5.53 KB | 0644 |
|
test_static.py | File | 62.22 KB | 0644 |
|
test_tap.py | File | 10.34 KB | 0644 |
|
test_template.py | File | 24.99 KB | 0644 |
|
test_util.py | File | 12.29 KB | 0644 |
|
test_vhost.py | File | 7.22 KB | 0644 |
|
test_web.py | File | 55.24 KB | 0644 |
|
test_web__responses.py | File | 877 B | 0644 |
|
test_webclient.py | File | 57.45 KB | 0644 |
|
test_wsgi.py | File | 73.06 KB | 0644 |
|
test_xml.py | File | 41.36 KB | 0644 |
|
test_xmlrpc.py | File | 28.24 KB | 0644 |
|