def testRenderHTTPAllowDefault(self): streamer = FakeStreamer(mediumClass=FakeAuthFailingMedium) httpauth = HTTPAuthentication(streamer) resource = resources.HTTPStreamingResource(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 callRemoteLogging(self, level, stackDepth, name, *args, **kwargs): """ Call the given method with the given arguments remotely on the server-side avatar. Gets serialized to server-side perspective_ methods. @param level: the level we should log at (log.DEBUG, log.INFO, etc) @type level: int @param stackDepth: the number of stack frames to go back to get file and line information, negative or zero. @type stackDepth: non-positive int @param name: name of the remote method @type name: str """ if level is not None: debugClass = str(self.__class__).split(".")[-1].upper() startArgs = [self.remoteLogName, debugClass, name] formatString, debugArgs = log.getFormatArgs( '%s --> %s: callRemote(%s, ', startArgs, ')', (), args, kwargs) logKwArgs = self.doLog(level, stackDepth - 1, formatString, *debugArgs) if not self.remote: self.warning('Tried to callRemote(%s), but we are disconnected' % name) return defer.fail(errors.NotConnectedError()) def callback(result): formatString, debugArgs = log.getFormatArgs( '%s <-- %s: callRemote(%s, ', startArgs, '): %s', (log.ellipsize(result), ), args, kwargs) self.doLog(level, -1, formatString, *debugArgs, **logKwArgs) return result def errback(failure): formatString, debugArgs = log.getFormatArgs( '%s <-- %s: callRemote(%s, ', startArgs, '): %r', (failure, ), args, kwargs) self.doLog(level, -1, formatString, *debugArgs, **logKwArgs) return failure d = self.remote.callRemote(name, *args, **kwargs) if level is not None: d.addCallbacks(callback, errback) return d