我有一些Twisted代码,它创建了多个Deferred链.其中一些可能会失败而没有errback,这会将它们放回回调链.我无法为此代码编写单元测试 - 失败的Deferred导致测试在测试代码完成后失败.如何为此代码编写通过单元测试?是否期望在正常操作中可能失败的每个Deferred应该在链的末尾有一个errback,它将它放回回调链?
当DeferredList中的Deferred失败时,会发生同样的事情,除非我使用consumeErrors创建DeferredList.即使使用fireOnOneErrback创建DeferredList并给出一个将其放回回调链的errback,也是如此.除了抑制测试失败和错误记录之外,是否对consumeErrors有任何影响?如果每个Deferred在没有errback的情况下失败都可以放入DeferredList吗?
示例代码的示例测试:
from twisted.trial import unittest
from twisted.internet import defer
def get_dl(**kwargs):
"Return a DeferredList with a failure and any kwargs given."
return defer.DeferredList(
[defer.succeed(True), defer.fail(ValueError()), defer.succeed(True)],
**kwargs)
def two_deferreds():
"Create a failing Deferred, and create and return a succeeding Deferred."
d = defer.fail(ValueError())
return defer.succeed(True)
class DeferredChainTest(unittest.TestCase):
def check_success(self, result):
"If we're called, we're on the callback chain."
self.fail()
def check_error(self, failure):
"""
If we're called, we're on the errback chain.
Return to put us back …Run Code Online (Sandbox Code Playgroud) 为什么使用建议的OpenID OAuth扩展而不是另一个基于OAuth的协议?
发现似乎不是一个功能.尽管消费者仅需要声明的标识符来启动认证过程,但任何授权仍将要求消费者知道访问令牌URL,签名方法,并且与提供者具有共享密钥/秘密.
一个好处是有一种特定的授权方式,即认证请求的openid.oauth.scope参数.对此的一个具体好处是,仅为了消费者的利益而没有可验证令牌的认证是免费定义的,并且可以执行而无需担心跟踪未完成的令牌或他们可能需要的资源.
是否有使用替代方法的示例来指定要请求的范围,可能还有OpenID发现中的某些内容?或者,可以在OAuth流程之前使用某种REST导航有效地处理这种情况,其中通过从众所周知的URL开始解释超文本来发现特定于所需范围的多个请求令牌URL之一?
我正在研究具有多个授权范围的委托身份验证和授权系统,其中范围与不同的交互相关.换句话说,消费者需要告知提供者应该向用户呈现哪些范围以进行授权.