Exemple #1
0
  def test_purge_expired_tokens(self):
    """ Generate tokens with current time as expiration date/time.
    That is, tokens are expired as soon as they are generated.

    """
    for user in self.users:
      token = generate_user_auth_token(user,
                                       'password hash',
                                       timeout=0)
      auth_token = lookup_user_auth_token(user, token)
      self.assertEqual(None, auth_token)

    # As expired tokens are purged from the DB just before
    # they are generated, the above should leave us with one
    # expired token in the DB
    query = Session.gql("WHERE expire_date <= :1", api.utcnow())
    expired_tokens = query.count()
    self.assertEqual(1, expired_tokens)

    # Generate another token to trigger cache purging which
    # should leave us with no expired sessions in the DB (as
    # this token is generated with a future expiration date.)
    token = generate_user_auth_token('fake user', 'password hash')

    query = Session.gql("WHERE expire_date <= :1", api.utcnow())
    expired_tokens = query.count()
    self.assertEqual(0, expired_tokens)
Exemple #2
0
def purge_expired_user_auth_token_keys():
  """ Remove expired tokens from the database. """

  #TODO: Remove hard coded limit
  limit = 10
  try:
    query = Session.gql("WHERE expire_date <= :1", api.utcnow())
    expired_tokens = query.count()
    if expired_tokens:
      db.delete(query.fetch(limit))
      logging.info("Removed %d expired user authentication "
                   "tokens (%d remaining)",
                   min(limit, expired_tokens),
                   max(0, expired_tokens-limit))
  except Exception, e:
    logging.exception('Unhandled exception while removing expired tokens')