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""])
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''])
async def listen(self, private_key_path: FilePath, cert_path: FilePath): """ Context manager that runs a HTTPS server with the given private key and certificate. Returns a URL that will connect to the server. """ location_hint, endpoint_string = self._port_assigner.assign(reactor) underlying_endpoint = serverFromString(reactor, endpoint_string) endpoint = _TLSEndpointWrapper.from_paths(underlying_endpoint, private_key_path, cert_path) root = Data(b"YOYODYNE", "text/plain") root.isLeaf = True listening_port = await endpoint.listen(Site(root)) try: yield f"https://127.0.0.1:{listening_port.getHost().port}/" finally: await listening_port.stopListening() # Make sure all server connections are closed :( No idea why this # is necessary when it's not for IStorageServer HTTPS tests. await deferLater(reactor, 0.01)