__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
"""
Tests for L{twisted.web.vhost}.
"""
from twisted.internet.defer import gatherResults
from twisted.trial.unittest import TestCase
from twisted.web.http import NOT_FOUND
from twisted.web.resource import NoResource
from twisted.web.server import Site
from twisted.web.static import Data
from twisted.web.test._util import _render
from twisted.web.test.test_web import DummyRequest
from twisted.web.vhost import NameVirtualHost, VHostMonsterResource, _HostResource
class HostResourceTests(TestCase):
"""
Tests for L{_HostResource}.
"""
def test_getChild(self):
"""
L{_HostResource.getChild} returns the proper I{Resource} for the vhost
embedded in the URL. Verify that returning the proper I{Resource}
required changing the I{Host} in the header.
"""
bazroot = Data(b"root data", "")
bazuri = Data(b"uri data", "")
baztest = Data(b"test data", "")
bazuri.putChild(b"test", baztest)
bazroot.putChild(b"uri", bazuri)
hr = _HostResource()
root = NameVirtualHost()
root.default = Data(b"default data", "")
root.addHost(b"baz.com", bazroot)
request = DummyRequest([b"uri", b"test"])
request.prepath = [b"bar", b"http", b"baz.com"]
request.site = Site(root)
request.isSecure = lambda: False
request.host = b""
step = hr.getChild(b"baz.com", request) # Consumes rest of path
self.assertIsInstance(step, Data)
request = DummyRequest([b"uri", b"test"])
step = root.getChild(b"uri", request)
self.assertIsInstance(step, NoResource)
class NameVirtualHostTests(TestCase):
"""
Tests for L{NameVirtualHost}.
"""
def test_renderWithoutHost(self):
"""
L{NameVirtualHost.render} returns the result of rendering the
instance's C{default} if it is not L{None} and there is no I{Host}
header in the request.
"""
virtualHostResource = NameVirtualHost()
virtualHostResource.default = Data(b"correct result", "")
request = DummyRequest([b""])
self.assertEqual(virtualHostResource.render(request), b"correct result")
def test_renderWithoutHostNoDefault(self):
"""
L{NameVirtualHost.render} returns a response with a status of I{NOT
FOUND} if the instance's C{default} is L{None} and there is no I{Host}
header in the request.
"""
virtualHostResource = NameVirtualHost()
request = DummyRequest([b""])
d = _render(virtualHostResource, request)
def cbRendered(ignored):
self.assertEqual(request.responseCode, NOT_FOUND)
d.addCallback(cbRendered)
return d
def test_renderWithHost(self):
"""
L{NameVirtualHost.render} returns the result of rendering the resource
which is the value in the instance's C{host} dictionary corresponding
to the key indicated by the value of the I{Host} header in the request.
"""
virtualHostResource = NameVirtualHost()
virtualHostResource.addHost(b"example.org", Data(b"winner", ""))
request = DummyRequest([b""])
request.requestHeaders.addRawHeader(b"host", b"example.org")
d = _render(virtualHostResource, request)
def cbRendered(ignored, request):
self.assertEqual(b"".join(request.written), b"winner")
d.addCallback(cbRendered, request)
# The port portion of the Host header should not be considered.
requestWithPort = DummyRequest([b""])
requestWithPort.requestHeaders.addRawHeader(b"host", b"example.org:8000")
dWithPort = _render(virtualHostResource, requestWithPort)
def cbRendered(ignored, requestWithPort):
self.assertEqual(b"".join(requestWithPort.written), b"winner")
dWithPort.addCallback(cbRendered, requestWithPort)
return gatherResults([d, dWithPort])
def test_renderWithUnknownHost(self):
"""
L{NameVirtualHost.render} returns the result of rendering the
instance's C{default} if it is not L{None} and there is no host
matching the value of the I{Host} header in the request.
"""
virtualHostResource = NameVirtualHost()
virtualHostResource.default = Data(b"correct data", "")
request = DummyRequest([b""])
request.requestHeaders.addRawHeader(b"host", b"example.com")
d = _render(virtualHostResource, request)
def cbRendered(ignored):
self.assertEqual(b"".join(request.written), b"correct data")
d.addCallback(cbRendered)
return d
def test_renderWithUnknownHostNoDefault(self):
"""
L{NameVirtualHost.render} returns a response with a status of I{NOT
FOUND} if the instance's C{default} is L{None} and there is no host
matching the value of the I{Host} header in the request.
"""
virtualHostResource = NameVirtualHost()
request = DummyRequest([b""])
request.requestHeaders.addRawHeader(b"host", b"example.com")
d = _render(virtualHostResource, request)
def cbRendered(ignored):
self.assertEqual(request.responseCode, NOT_FOUND)
d.addCallback(cbRendered)
return d
async def test_renderWithHTMLHost(self):
"""
L{NameVirtualHost.render} doesn't echo unescaped HTML when present in
the I{Host} header.
"""
virtualHostResource = NameVirtualHost()
request = DummyRequest([b""])
request.requestHeaders.addRawHeader(b"host", b"<b>example</b>.com")
await _render(virtualHostResource, request)
self.assertNotIn(b"<b>", b"".join(request.written))
def test_getChild(self):
"""
L{NameVirtualHost.getChild} returns correct I{Resource} based off
the header and modifies I{Request} to ensure proper prepath and
postpath are set.
"""
virtualHostResource = NameVirtualHost()
leafResource = Data(b"leaf data", "")
leafResource.isLeaf = True
normResource = Data(b"norm data", "")
virtualHostResource.addHost(b"leaf.example.org", leafResource)
virtualHostResource.addHost(b"norm.example.org", normResource)
request = DummyRequest([])
request.requestHeaders.addRawHeader(b"host", b"norm.example.org")
request.prepath = [b""]
self.assertIsInstance(virtualHostResource.getChild(b"", request), NoResource)
self.assertEqual(request.prepath, [b""])
self.assertEqual(request.postpath, [])
request = DummyRequest([])
request.requestHeaders.addRawHeader(b"host", b"leaf.example.org")
request.prepath = [b""]
self.assertIsInstance(virtualHostResource.getChild(b"", request), Data)
self.assertEqual(request.prepath, [])
self.assertEqual(request.postpath, [b""])
class VHostMonsterResourceTests(TestCase):
"""
Tests for L{VHostMonsterResource}.
"""
def test_getChild(self):
"""
L{VHostMonsterResource.getChild} returns I{_HostResource} and modifies
I{Request} with correct L{Request.isSecure}.
"""
vhm = VHostMonsterResource()
request = DummyRequest([])
self.assertIsInstance(vhm.getChild(b"http", request), _HostResource)
self.assertFalse(request.isSecure())
request = DummyRequest([])
self.assertIsInstance(vhm.getChild(b"https", request), _HostResource)
self.assertTrue(request.isSecure())
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| __init__.py | File | 107 B | 0644 |
|
| _util.py | File | 3.26 KB | 0644 |
|
| injectionhelpers.py | File | 5.46 KB | 0644 |
|
| requesthelper.py | File | 15.07 KB | 0644 |
|
| test_agent.py | File | 119.75 KB | 0644 |
|
| test_cgi.py | File | 14.76 KB | 0644 |
|
| test_client.py | File | 1.52 KB | 0644 |
|
| test_distrib.py | File | 17.58 KB | 0644 |
|
| test_domhelpers.py | File | 11.18 KB | 0644 |
|
| test_error.py | File | 16.37 KB | 0644 |
|
| test_flatten.py | File | 25.67 KB | 0644 |
|
| test_html.py | File | 1.21 KB | 0644 |
|
| test_http.py | File | 153.63 KB | 0644 |
|
| test_http2.py | File | 105.17 KB | 0644 |
|
| test_http_headers.py | File | 24.38 KB | 0644 |
|
| test_httpauth.py | File | 23.23 KB | 0644 |
|
| test_newclient.py | File | 106.8 KB | 0644 |
|
| test_pages.py | File | 3.56 KB | 0644 |
|
| test_proxy.py | File | 19.57 KB | 0644 |
|
| test_resource.py | File | 10.37 KB | 0644 |
|
| test_script.py | File | 3.91 KB | 0644 |
|
| test_soap.py | File | 3.04 KB | 0644 |
|
| test_stan.py | File | 7.08 KB | 0644 |
|
| test_static.py | File | 66.6 KB | 0644 |
|
| test_tap.py | File | 11.86 KB | 0644 |
|
| test_template.py | File | 28.38 KB | 0644 |
|
| test_util.py | File | 14.76 KB | 0644 |
|
| test_vhost.py | File | 7.49 KB | 0644 |
|
| test_web.py | File | 67.52 KB | 0644 |
|
| test_web__responses.py | File | 837 B | 0644 |
|
| test_webclient.py | File | 11.52 KB | 0644 |
|
| test_wsgi.py | File | 73.83 KB | 0644 |
|
| test_xml.py | File | 42.28 KB | 0644 |
|
| test_xmlrpc.py | File | 29.85 KB | 0644 |
|