def _lookup_saml_token(self, db, patron): """Look up for a SAML token. :param db: Database session :type db: sqlalchemy.orm.session.Session :param patron: Patron object :type patron: core.model.patron.Patron :return: SAML subject (if any) :rtype: Optional[api.saml.metadata.Subject] """ self._logger.debug("Started looking up for a SAML token") from api.authenticator import BaseSAMLAuthenticationProvider credential = Credential.lookup_by_patron( db, BaseSAMLAuthenticationProvider.TOKEN_DATA_SOURCE_NAME, BaseSAMLAuthenticationProvider.TOKEN_TYPE, patron, allow_persistent_token=False, auto_create_datasource=True, ) self._logger.debug( "Finished looking up for a SAML token: {0}".format(credential) ) return credential
def test_save_proquest_token_saves_token(self): # Arrange credential_manager = ProQuestCredentialManager() patron = self._patron() expected_token = "12345" # Act credential_manager.save_proquest_token( self._db, patron, datetime.timedelta(hours=1), expected_token ) token = Credential.lookup_by_patron( self._db, self._data_source.name, ProQuestCredentialType.PROQUEST_JWT_TOKEN.value, patron, ) # Assert assert expected_token == token.credential
def lookup_proquest_token(self, db, patron): """Look up for a JWT bearer token used required to use ProQuest API. :param db: Database session :type db: sqlalchemy.orm.session.Session :param patron: Patron object :type patron: core.model.patron.Patron :return: Credential object containing the existing ProQuest JWT bearer token (if any) :rtype: Optional[core.model.credential.Credential] """ if not is_session(db): raise ValueError('"db" argument must be a valid SQLAlchemy session') if not isinstance(patron, Patron): raise ValueError('"patron" argument must be an instance of Patron class') self._logger.debug("Started looking up for a ProQuest JWT token") credential = Credential.lookup_by_patron( db, DataSourceConstants.PROQUEST, ProQuestCredentialType.PROQUEST_JWT_TOKEN.value, patron, allow_persistent_token=False, auto_create_datasource=True, ) self._logger.debug( "Finished looking up for a ProQuest JWT token: {0}".format(credential) ) if credential: return credential return None