def test_userinfo_deser(): CLAIM = Claims(name={"essential": True}, nickname=None, email={"essential": True}, email_verified={"essential": True}, picture=None) pre_uic = UserInfoClaim(claims=CLAIM, format="signed") uic = userinfo_deser(pre_uic.to_json(), format="json") assert _eq(uic.keys(), ["claims", "format"])
def _collect_user_info(self, session, userinfo_claims=None): """ Collect information about a user. This can happen in two cases, either when constructing a IdToken or when returning user info through the UserInfo endpoint :param session: Session information :param userinfo_claims: user info claims :return: User info """ if userinfo_claims is None: uic = {} for scope in session["scope"]: try: claims = dict([(name, None) for name in SCOPE2CLAIMS[scope]]) uic.update(claims) except KeyError: pass if "oidreq" in session: oidreq = OpenIDRequest().deserialize(session["oidreq"], "json") logger.debug("OIDREQ: %s" % oidreq.to_dict()) if "userinfo" in oidreq: userinfo_claims = oidreq["userinfo"] _claim = oidreq["userinfo"]["claims"] for key, val in uic.items(): if key not in _claim: _claim[key] = val elif uic: userinfo_claims = UserInfoClaim(claims=uic) else: userinfo_claims = None elif uic: userinfo_claims = UserInfoClaim(claims=uic) else: userinfo_claims = None logger.debug("userinfo_claim: %s" % userinfo_claims.to_dict()) logger.debug("userdb: %s" % self.userdb.keys()) info = self.function["userinfo"](self, self.userdb, session["user_id"], session["client_id"], userinfo_claims) logger.debug("user_info_response: %s" % (info,)) return info