def test_access_token(initialized_db):
  user = model.user.get_user('devtable')

  # Create a token.
  token = create_token(user, 'Some token')
  assert token.last_accessed is None

  # Lookup the token.
  token = access_valid_token(get_full_token_string(token))
  assert token.last_accessed is not None

  # Revoke the token.
  revoke_token(token)

  # Ensure it cannot be accessed
  assert access_valid_token(get_full_token_string(token)) is None
def test_gc(expiration, initialized_db):
  user = model.user.get_user('devtable')

  expiration_date = None
  is_expired = False
  if expiration:
    if expiration[0] == '-':
      is_expired = True
      expiration_date = datetime.now() - convert_to_timedelta(expiration[1:])
    else:
      expiration_date = datetime.now() + convert_to_timedelta(expiration)

  # Create a token.
  token = create_token(user, 'Some token', expiration=expiration_date)

  # GC tokens.
  gc_expired_tokens(timedelta(seconds=0))

  # Ensure the token was GCed if expired and not if it wasn't.
  assert (access_valid_token(get_full_token_string(token)) is None) == is_expired
def test_invalid_access_token(invalid_token, initialized_db):
  user = model.user.get_user('devtable')
  token = access_valid_token(invalid_token)
  assert token is None