Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
 def test_renderWithoutHost(self):
     """
     L{NameVirtualHost.render} returns the result of rendering the
     instance's C{default} if it is not C{None} and there is no I{Host}
     header in the request.
     """
     virtualHostResource = NameVirtualHost()
     virtualHostResource.default = Data("correct result", "")
     request = DummyRequest([''])
     self.assertEqual(virtualHostResource.render(request), "correct result")
 def test_renderWithoutHost(self):
     """
     L{NameVirtualHost.render} returns the result of rendering the
     instance's C{default} if it is not C{None} and there is no I{Host}
     header in the request.
     """
     virtualHostResource = NameVirtualHost()
     virtualHostResource.default = Data("correct result", "")
     request = DummyRequest([""])
     self.assertEqual(virtualHostResource.render(request), "correct result")
Пример #5
0
 def test_renderWithUnknownHost(self):
     """
     L{NameVirtualHost.render} returns the result of rendering the
     instance's C{default} if it is not C{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_renderWithUnknownHost(self):
     """
     L{NameVirtualHost.render} returns the result of rendering the
     instance's C{default} if it is not C{None} and there is no host
     matching the value of the I{Host} header in the request.
     """
     virtualHostResource = NameVirtualHost()
     virtualHostResource.default = Data("correct data", "")
     request = DummyRequest([''])
     request.headers['host'] = 'example.com'
     d = _render(virtualHostResource, request)
     def cbRendered(ignored):
         self.assertEqual(''.join(request.written), "correct data")
     d.addCallback(cbRendered)
     return d
Пример #7
0
    def setupSite(self):
        html.WebStatus.setupSite(self)
        resource = self.site.resource

        docdevPath = os.path.join(self.master.basedir, "doc-dev")
        docdev = File(docdevPath)

        File.contentTypes[".py,cover"] = "text/plain"
        File.contentTypes[".svg"] = "image/svg+xml"
        File.contentTypes[".json"] = "application/json"

        # Historical name
        resultsPath = os.path.join(self.master.basedir, "private_html")
        results = File(resultsPath)
        resource.putChild(b'results', results)

        resource.putChild(b'metrics', PrometheusMetrics())

        vhost = NameVirtualHost()
        vhost.default = resource
        vhost.addHost('doc-dev.clusterhq.com', docdev)
        self.site.resource = vhost
Пример #8
0
    def setupSite(self):
        html.WebStatus.setupSite(self)
        resource = self.site.resource

        docdevPath = os.path.join(self.master.basedir, "doc-dev")
        docdev = File(docdevPath)

        File.contentTypes[".py,cover"] = "text/plain"
        File.contentTypes[".svg"] = "image/svg+xml"
        File.contentTypes[".json"] = "application/json"

        # Historical name
        resultsPath = os.path.join(self.master.basedir, "private_html")
        results = File(resultsPath)
        resource.putChild(b'results', results)

        resource.putChild(b'metrics', PrometheusMetrics())

        vhost = NameVirtualHost()
        vhost.default = resource
        vhost.addHost('doc-dev.clusterhq.com', docdev)
        self.site.resource = vhost
Пример #9
0
    def setUp(self):
        # prepare the authentication systems
        self.userdb = cred.InMemoryUnicodeUsernamePasswordDatabase()
        self.sitedb = cred.InMemoryUnicodeUsernamePasswordDatabase()
        self.userrealm = TestUserRealm()
        self.siterealm = TestSiteRealm()
        self.userportal = portal.Portal(self.userrealm)
        self.siteportal = portal.Portal(self.siterealm)
        self.userportal.registerChecker(self.userdb)
        self.siteportal.registerChecker(self.sitedb)

        # register tokens
        self.sitedb.addUser(
            self.SITE_A_TOKEN,
            self.SITE_A_SECRET,
        )
        self.siterealm.register_csauth_perm(
            self.SITE_A_TOKEN,
            TestWebAuthPermission(
                self.SITE_A_NAME,
                "http://{}/login".format(self.WEB_NAME),
                full_username=True,
            ),
        )
        self.sitedb.addUser(
            self.SITE_B_TOKEN,
            self.SITE_B_SECRET,
        )
        self.siterealm.register_csauth_perm(
            self.SITE_B_TOKEN,
            TestWebAuthPermission(
                self.SITE_B_NAME,
                "http://{}/bpage".format(self.WEB_NAME),
                full_username=False,
            ),
        )

        # register Users
        self.userdb.addUser(
            self.USER_A_NAME,
            self.USER_A_PSWD,
        )
        self.userdb.addUser(
            self.USER_B_NAME,
            self.USER_B_PSWD,
        )

        # prepare the auth site
        lr = BasicLoginResource()
        authpage = AuthResource(
            self.siteportal,
            self.userportal,
            lr,
            url=u"http://{}/auth".format(self.AUTH_NAME),
        )
        arr = DebugResource("auth")
        arr.putChild(b"auth", authpage)
        arr.putChild(b"expire", SessionExpiringResource())

        # prepare the web site
        lrr = DebugResource("web")

        # add the login page
        loginpage = TestLoginResource(
            u"http://{}/auth".format(self.AUTH_NAME),
            self.SITE_A_TOKEN,
            self.SITE_A_SECRET,
        )
        lrr.putChild(b"login", loginpage)

        # add a login page with a different permission
        bpage = TestLoginResource(
            u"http://{}/auth".format(self.AUTH_NAME),
            self.SITE_B_TOKEN,
            self.SITE_B_SECRET,
        )
        lrr.putChild(b"bpage", bpage)

        # add a resource with an invalid token/secret combination
        invalidepage = TestLoginResource(
            u"http://{}/auth".format(self.AUTH_NAME),
            self.SITE_A_TOKEN,
            self.SITE_B_SECRET,  # <- site B secret
        )
        lrr.putChild(b"invalid", invalidepage)

        # create and install treq stubs
        supersite = NameVirtualHost()
        supersite.addHost(self.AUTH_NAME.encode("ascii"), arr)
        supersite.addHost(self.WEB_NAME.encode("ascii"), lrr)
        supersite.default = DebugResource("default")

        self.treq = StubTreq(supersite)
        loginpage._set_request_dispatcher(self.treq)
        bpage._set_request_dispatcher(self.treq)
        invalidepage._set_request_dispatcher(self.treq)