Add a worker to automatically GC expired app specific tokens
Fixes https://jira.coreos.com/browse/QUAY-822
This commit is contained in:
parent
06d25816be
commit
d45161b120
7 changed files with 77 additions and 5 deletions
|
@ -63,11 +63,11 @@ def get_expiring_tokens(user, soon):
|
|||
AppSpecificAuthToken.expiration <= soon_datetime))
|
||||
|
||||
|
||||
def gc_expired_tokens(user):
|
||||
""" Deletes all expired tokens owned by the given user. """
|
||||
def gc_expired_tokens(expiration_window):
|
||||
""" Deletes all expired tokens outside of the expiration window. """
|
||||
(AppSpecificAuthToken
|
||||
.delete()
|
||||
.where(AppSpecificAuthToken.user == user, AppSpecificAuthToken.expiration < datetime.now())
|
||||
.where(AppSpecificAuthToken.expiration < (datetime.now() - expiration_window))
|
||||
.execute())
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from mock import patch
|
||||
|
||||
import pytest
|
||||
|
@ -36,7 +36,7 @@ def test_gc(expiration, initialized_db):
|
|||
token = create_token(user, 'Some token', expiration=expiration_date)
|
||||
|
||||
# GC tokens.
|
||||
gc_expired_tokens(user)
|
||||
gc_expired_tokens(timedelta(seconds=0))
|
||||
|
||||
# Ensure the token was GCed if expired and not if it wasn't.
|
||||
assert (access_valid_token(token.token_code) is None) == is_expired
|
||||
|
|
Reference in a new issue