def test_extensionResponse(self): resp = SuccessResponse(self.endpoint, { 'openid.unittest.one':'1', 'openid.unittest.two':'2', 'openid.sreg.nickname':'j3h', 'openid.return_to':'return_to', }) utargs = resp.extensionResponse('unittest') self.failUnlessEqual(utargs, {'one':'1', 'two':'2'}) sregargs = resp.extensionResponse('sreg') self.failUnlessEqual(sregargs, {'nickname':'j3h'})
def test_fromSuccessResponseWithData(self): name = 'ext0' value = 'snozzberry' uri = "http://willy.wonka.name/" args = { 'mode': 'id_res', 'ns': OPENID2_NS, 'ns.ax': ax.AXMessage.ns_uri, 'ax.update_url': 'http://example.com/realm/update_path', 'ax.mode': 'fetch_response', 'ax.type.' + name: uri, 'ax.count.' + name: '1', 'ax.value.%s.1' % name: value, } sf = ['openid.' + i for i in list(args.keys())] msg = Message.fromOpenIDArgs(args) class Endpoint: claimed_id = 'http://invalid.' resp = SuccessResponse(Endpoint(), msg, signed_fields=sf) ax_resp = ax.FetchResponse.fromSuccessResponse(resp) values = ax_resp.get(uri) # coming through the system they'll be bytes-ified... self.assertEqual([value], values)
def make_response_ax(self, schema="http://axschema.org/", fullname="Some User", nickname="someuser", email="*****@*****.**", first=None, last=None, verified=False): endpoint = OpenIDServiceEndpoint() message = Message(OPENID2_NS) attributes = [("nickname", schema + "namePerson/friendly", nickname), ("fullname", schema + "namePerson", fullname), ("email", schema + "contact/email", email), ("account_verified", "http://ns.login.ubuntu.com/2013/validation/account", "token_via_email" if verified else "no")] if first: attributes.append( ("first", "http://axschema.org/namePerson/first", first)) if last: attributes.append( ("last", "http://axschema.org/namePerson/last", last)) message.setArg(AX_NS, "mode", "fetch_response") for (alias, uri, value) in attributes: message.setArg(AX_NS, "type.%s" % alias, uri) message.setArg(AX_NS, "value.%s" % alias, value) return SuccessResponse(endpoint, message, signed_fields=message.toPostArgs().keys())
def create_sreg_response(self, fullname='', email='', identifier=''): message = Message(OPENID2_NS) message.setArg(SREG_NS, "fullname", fullname) message.setArg(SREG_NS, "email", email) endpoint = OpenIDServiceEndpoint() endpoint.display_identifier = identifier return SuccessResponse(endpoint, message, signed_fields=message.toPostArgs().keys())
def test_fromSuccessResponse_no_signed(self): params = { 'openid.mode': 'checkid_setup', 'openid.trust_root': 'http://localhost/', 'openid.return_to': 'http://localhost/', 'openid.identity': IDENTIFIER_SELECT, } openid_store = getUtility(IOpenIDConsumerStore) openid_server = Server(openid_store, get_server_url()) orequest = openid_server.decodeRequest(params) success_resp = SuccessResponse(orequest, orequest.message) resp = MacaroonResponse.fromSuccessResponse(success_resp) self.assertIsNone(resp.discharge_macaroon_raw)
def test_extract_user_details_sreg(self): endpoint = OpenIDServiceEndpoint() message = Message(OPENID2_NS) message.setArg(SREG_NS, "nickname", "someuser") message.setArg(SREG_NS, "fullname", "Some User") message.setArg(SREG_NS, "email", "*****@*****.**") response = SuccessResponse( endpoint, message, signed_fields=message.toPostArgs().keys()) data = self.backend._extract_user_details(response) self.assertEqual(data, {"nickname": "someuser", "first_name": "Some", "last_name": "User", "email": "*****@*****.**"})
def test_fromSuccessResponseWithoutExtension(self): """return None for SuccessResponse with no AX paramaters.""" args = { 'mode': 'id_res', 'ns': OPENID2_NS, } sf = ['openid.' + i for i in args.keys()] msg = Message.fromOpenIDArgs(args) class Endpoint: claimed_id = 'http://invalid.' oreq = SuccessResponse(Endpoint(), msg, signed_fields=sf) r = ax.FetchResponse.fromSuccessResponse(oreq) self.assertIsNone(r)
def make_openid_response(self, sreg_args=None, teams_args=None): endpoint = OpenIDServiceEndpoint() endpoint.claimed_id = 'some-id' message = Message(OPENID2_NS) if sreg_args is not None: for key, value in sreg_args.items(): message.setArg(SREG_NS, key, value) if teams_args is not None: for key, value in teams_args.items(): message.setArg(TEAMS_NS, key, value) response = SuccessResponse(endpoint, message, signed_fields=message.toPostArgs().keys()) return response
def test_fromSuccessResponseWithoutData(self): """return something for SuccessResponse with AX paramaters, even if it is the empty set.""" args = { 'mode': 'id_res', 'ns': OPENID2_NS, 'ns.ax': ax.AXMessage.ns_uri, 'ax.mode': 'fetch_response', } sf = ['openid.' + i for i in args.keys()] msg = Message.fromOpenIDArgs(args) class Endpoint: claimed_id = 'http://invalid.' oreq = SuccessResponse(Endpoint(), msg, signed_fields=sf) r = ax.FetchResponse.fromSuccessResponse(oreq) self.assertIsNotNone(r)
def test_extract_user_details_ax(self): endpoint = OpenIDServiceEndpoint() message = Message(OPENID2_NS) attributes = [ ("nickname", "http://axschema.org/namePerson/friendly", "someuser"), ("fullname", "http://axschema.org/namePerson", "Some User"), ("email", "http://axschema.org/contact/email", "*****@*****.**"), ] message.setArg(AX_NS, "mode", "fetch_response") for (alias, uri, value) in attributes: message.setArg(AX_NS, "type.%s" % alias, uri) message.setArg(AX_NS, "value.%s" % alias, value) response = SuccessResponse( endpoint, message, signed_fields=message.toPostArgs().keys()) data = self.backend._extract_user_details(response) self.assertEqual(data, {"nickname": "someuser", "first_name": "Some", "last_name": "User", "email": "*****@*****.**"})
def test_returnTo(self): resp = SuccessResponse(self.endpoint, {'openid.return_to':'return_to'}) self.failUnlessEqual(resp.getReturnTo(), 'return_to')
def test_noReturnTo(self): resp = SuccessResponse(self.endpoint, {}) self.failUnless(resp.getReturnTo() is None)
def to_response(self): return SuccessResponse( self.endpoint, self, signed_fields=self.toPostArgs().keys())