Example #1
0
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"])
Example #2
0
    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