def testRenderReachedMaxClients(self): streamer = FakeStreamer() httpauth = HTTPAuthentication(streamer) resource = MultiFdSinkStreamingResource(streamer, httpauth) self.failIf(resource.isReady()) streamer.caps = True self.failUnless(resource.isReady()) #assert resource.maxAllowedClients() == 974 resource._requests = ' ' * (resource.maxclients + 1) self.failUnless(resource.reachedServerLimits()) request = FakeRequest(ip='127.0.0.1') data = resource.render(request) error_code = http.SERVICE_UNAVAILABLE self.assertEquals(request.headers.get('content-type', ''), 'text/html') self.assertEquals(request.headers.get('server', ''), HTTP_VERSION) self.assertEquals(request.response, error_code) expected = ERROR_TEMPLATE % { 'code': error_code, 'error': http.RESPONSES[error_code] } self.assertEquals(data, expected)
def testRenderHTTPAllowDefault(self): streamer = FakeStreamer(mediumClass=FakeAuthFailingMedium) httpauth = HTTPAuthentication(streamer) resource = MultiFdSinkStreamingResource(streamer, httpauth) httpauth.setBouncerName('fakebouncer') streamer.caps = True self.failUnless(resource.isReady()) d = defer.Deferred() def wrongToken(_): request = FakeRequest(user='******') return self.deferAssertUnauthorized(httpauth, request) def errorDisallowDefault(_, error): streamer.medium.failure = error request = FakeRequest(user='******') return self.deferAssertInternalServerError(httpauth, request) def errorAllowDefault(_, error): streamer.medium.failure = error httpauth.setAllowDefault(True) request = FakeRequest(user='******') return self.deferAssertAuthorized(httpauth, request) d.addCallback(wrongToken) d.addCallback(errorDisallowDefault, errors.NotConnectedError()) d.addCallback(errorDisallowDefault, errors.UnknownComponentError()) d.addCallback(errorAllowDefault, errors.NotConnectedError()) d.addCallback(errorAllowDefault, errors.UnknownComponentError()) d.callback(None) return d
def testRenderHTTPTokenAuthorized(self): streamer = FakeStreamer(mediumClass=FakeTokenMedium) httpauth = HTTPAuthentication(streamer) resource = MultiFdSinkStreamingResource(streamer, httpauth) # override issuer httpauth.setBouncerName('fakebouncer') httpauth.setDomain('FakeDomain') streamer.caps = True self.failUnless(resource.isReady()) d = defer.Deferred() def rightToken(_): request = FakeRequest(ip='127.0.0.1', args={'token': 'LETMEIN'}) return self.deferAssertAuthorized(httpauth, request) def rightTokenTwice(_): request = FakeRequest(ip='127.0.0.1', args={'token': ['LETMEIN', 'LETMEIN']}) return self.deferAssertAuthorized(httpauth, request) d.addCallback(rightToken) d.addCallback(rightTokenTwice) d.callback(None) return d
def testRenderNotReady(self): streamer = FakeStreamer() httpauth = HTTPAuthentication(streamer) resource = MultiFdSinkStreamingResource(streamer, httpauth) self.failIf(resource.isReady()) status = resource.render(FakeRequest(ip='')) self.assertEquals(status, server.NOT_DONE_YET)
def testRenderHTTPAuthUnauthorized(self): streamer = FakeStreamer() httpauth = HTTPAuthentication(streamer) resource = MultiFdSinkStreamingResource(streamer, httpauth) httpauth.setBouncerName('fakebouncer') httpauth.setDomain('FakeDomain') streamer.caps = True self.failUnless(resource.isReady()) request = FakeRequest(ip='127.0.0.1', user='******') return self.deferAssertUnauthorized(httpauth, request)
def testRenderReachedMaxClients(self): streamer = FakeStreamer() httpauth = HTTPAuthentication(streamer) resource = MultiFdSinkStreamingResource(streamer, httpauth) self.failIf(resource.isReady()) streamer.caps = True self.failUnless(resource.isReady()) #assert resource.maxAllowedClients() == 974 resource._requests = ' ' * (resource.maxclients + 1) self.failUnless(resource.reachedServerLimits()) request = FakeRequest(ip='127.0.0.1') data = resource.render(request) error_code = http.SERVICE_UNAVAILABLE self.assertEquals(request.headers.get('content-type', ''), 'text/html') self.assertEquals(request.headers.get('server', ''), HTTP_VERSION) self.assertEquals(request.response, error_code) expected = ERROR_TEMPLATE % { 'code': error_code, 'error': http.RESPONSES[error_code]} self.assertEquals(data, expected)