def test_explicitOpenID11NSSerialzation(self): m = message.Message() m.setOpenIDNamespace(message.THE_OTHER_OPENID1_NS, implicit=False) post_args = m.toPostArgs() self.failUnlessEqual(post_args, {'openid.ns': message.THE_OTHER_OPENID1_NS})
def toMessage(self, message=None): """Add the arguments from this extension to the provided message, or create a new message containing only those arguments. @returns: The message with the extension arguments added """ if message is None: warnings.warn( 'Passing None to Extension.toMessage is deprecated. ' 'Creating a message assuming you want OpenID 2.', DeprecationWarning, stacklevel=2) message = message_module.Message(message_module.OPENID2_NS) implicit = message.isOpenID1() try: message.namespaces.addAlias(self.ns_uri, self.ns_alias, implicit=implicit) except KeyError: if message.namespaces.getAlias(self.ns_uri) != self.ns_alias: raise message.updateArgs(self.ns_uri, self.getExtensionArgs()) return message
def test_OpenID2(self): oid2_msg = message.Message(message.OPENID2_NS) ext = DummyExtension() ext.toMessage(oid2_msg) namespaces = oid2_msg.namespaces self.failIf(namespaces.isImplicit(DummyExtension.ns_uri)) self.failUnlessEqual( DummyExtension.ns_uri, namespaces.getNamespaceURI(DummyExtension.ns_alias)) self.failUnlessEqual(DummyExtension.ns_alias, namespaces.getAlias(DummyExtension.ns_uri))
def test_isOpenID1(self): v1_namespaces = [ # Yes, there are two of them. 'http://openid.net/signon/1.1', 'http://openid.net/signon/1.0', ] for ns in v1_namespaces: m = message.Message(ns) self.failUnless(m.isOpenID1(), "%r not recognized as OpenID 1" % (ns, )) self.failUnlessEqual(ns, m.getOpenIDNamespace()) self.failUnless( m.namespaces.isImplicit(ns), m.namespaces.getNamespaceURI(message.NULL_NAMESPACE))
def test_setOpenIDNamespace_invalid(self): m = message.Message() invalid_things = [ # Empty string is not okay here. '', # Good guess! But wrong. 'http://openid.net/signon/2.0', # What? u'http://specs%\\\r2Eopenid.net/auth/2.0', # Too much escapings! 'http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0', # This is a Type URI, not a openid.ns value. 'http://specs.openid.net/auth/2.0/signon', ] for x in invalid_things: self.failUnlessRaises(message.InvalidOpenIDNamespace, m.setOpenIDNamespace, x, False)
def test_setOpenIDNamespace_implicit(self): m = message.Message() m.setOpenIDNamespace(message.THE_OTHER_OPENID1_NS, True) self.failUnless(m.namespaces.isImplicit(message.THE_OTHER_OPENID1_NS))
def test_setOpenIDNamespace_explicit(self): m = message.Message() m.setOpenIDNamespace(message.THE_OTHER_OPENID1_NS, False) self.failIf(m.namespaces.isImplicit(message.THE_OTHER_OPENID1_NS))
def test_isOpenID2(self): ns = 'http://specs.openid.net/auth/2.0' m = message.Message(ns) self.failUnless(m.isOpenID2()) self.failIf(m.namespaces.isImplicit(message.NULL_NAMESPACE)) self.failUnlessEqual(ns, m.getOpenIDNamespace())
def setUp(self): self.msg = message.Message()