2020-10-23 09:31:16 +00:00
|
|
|
import datetime
|
2021-12-20 22:57:27 +00:00
|
|
|
|
2023-04-09 09:37:04 +00:00
|
|
|
from canaille.app import models
|
2023-04-09 14:14:38 +00:00
|
|
|
from canaille.commands import cli
|
2020-10-23 09:31:16 +00:00
|
|
|
from werkzeug.security import gen_salt
|
|
|
|
|
|
|
|
|
2023-05-20 15:17:46 +00:00
|
|
|
def test_clean_command(testclient, backend, client, user):
|
2023-04-09 09:37:04 +00:00
|
|
|
valid_code = models.AuthorizationCode(
|
2022-02-16 17:00:30 +00:00
|
|
|
authorization_code_id=gen_salt(48),
|
2023-01-30 18:58:00 +00:00
|
|
|
code="my-valid-code",
|
2023-03-08 22:53:53 +00:00
|
|
|
client=client,
|
|
|
|
subject=user,
|
2022-01-11 16:57:58 +00:00
|
|
|
redirect_uri="https://foo.bar/callback",
|
|
|
|
response_type="code",
|
2023-11-23 21:07:42 +00:00
|
|
|
scope=["openid", "profile"],
|
2022-01-11 16:57:58 +00:00
|
|
|
nonce="nonce",
|
2023-03-17 23:38:56 +00:00
|
|
|
issue_date=datetime.datetime.now(datetime.timezone.utc).replace(microsecond=0),
|
2023-01-30 18:58:00 +00:00
|
|
|
lifetime=3600,
|
2022-01-11 16:57:58 +00:00
|
|
|
challenge="challenge",
|
|
|
|
challenge_method="method",
|
2020-10-23 09:31:16 +00:00
|
|
|
)
|
2023-01-30 18:58:00 +00:00
|
|
|
valid_code.save()
|
2023-04-09 09:37:04 +00:00
|
|
|
expired_code = models.AuthorizationCode(
|
2023-01-30 18:58:00 +00:00
|
|
|
authorization_code_id=gen_salt(48),
|
|
|
|
code="my-expired-code",
|
2023-03-08 22:53:53 +00:00
|
|
|
client=client,
|
|
|
|
subject=user,
|
2023-01-30 18:58:00 +00:00
|
|
|
redirect_uri="https://foo.bar/callback",
|
|
|
|
response_type="code",
|
2023-11-23 21:07:42 +00:00
|
|
|
scope=["openid", "profile"],
|
2023-01-30 18:58:00 +00:00
|
|
|
nonce="nonce",
|
|
|
|
issue_date=(
|
2023-03-17 23:38:56 +00:00
|
|
|
datetime.datetime.now(datetime.timezone.utc).replace(microsecond=0)
|
|
|
|
- datetime.timedelta(days=1)
|
2023-01-30 18:58:00 +00:00
|
|
|
),
|
|
|
|
lifetime=3600,
|
|
|
|
challenge="challenge",
|
|
|
|
challenge_method="method",
|
|
|
|
)
|
|
|
|
expired_code.save()
|
2020-10-23 09:31:16 +00:00
|
|
|
|
2023-04-09 09:37:04 +00:00
|
|
|
valid_token = models.Token(
|
2023-01-30 18:58:00 +00:00
|
|
|
token_id=gen_salt(48),
|
|
|
|
access_token="my-valid-token",
|
2023-03-08 22:53:53 +00:00
|
|
|
client=client,
|
|
|
|
subject=user,
|
2023-01-30 18:58:00 +00:00
|
|
|
refresh_token=gen_salt(48),
|
2023-11-23 21:07:42 +00:00
|
|
|
scope=["openid", "profile"],
|
2023-03-17 23:38:56 +00:00
|
|
|
issue_date=(
|
|
|
|
datetime.datetime.now(datetime.timezone.utc).replace(microsecond=0)
|
|
|
|
),
|
2023-01-30 18:58:00 +00:00
|
|
|
lifetime=3600,
|
|
|
|
)
|
|
|
|
valid_token.save()
|
2023-04-09 09:37:04 +00:00
|
|
|
expired_token = models.Token(
|
2022-02-16 17:00:30 +00:00
|
|
|
token_id=gen_salt(48),
|
2023-01-30 18:58:00 +00:00
|
|
|
access_token="my-expired-token",
|
2023-03-08 22:53:53 +00:00
|
|
|
client=client,
|
|
|
|
subject=user,
|
2022-01-11 16:57:58 +00:00
|
|
|
refresh_token=gen_salt(48),
|
2023-11-23 21:07:42 +00:00
|
|
|
scope=["openid", "profile"],
|
2023-01-30 18:58:00 +00:00
|
|
|
issue_date=(
|
2023-03-17 23:38:56 +00:00
|
|
|
datetime.datetime.now(datetime.timezone.utc).replace(microsecond=0)
|
|
|
|
- datetime.timedelta(days=1)
|
2023-01-30 18:58:00 +00:00
|
|
|
),
|
|
|
|
lifetime=3600,
|
2020-10-23 09:31:16 +00:00
|
|
|
)
|
2023-01-30 18:58:00 +00:00
|
|
|
expired_token.save()
|
2020-10-23 09:31:16 +00:00
|
|
|
|
2023-04-09 09:37:04 +00:00
|
|
|
assert models.AuthorizationCode.get(code="my-expired-code")
|
|
|
|
assert models.Token.get(access_token="my-expired-token")
|
2023-01-30 18:58:00 +00:00
|
|
|
assert expired_code.is_expired()
|
|
|
|
assert expired_token.is_expired()
|
2020-10-23 09:31:16 +00:00
|
|
|
|
|
|
|
runner = testclient.app.test_cli_runner()
|
2023-04-09 12:35:58 +00:00
|
|
|
res = runner.invoke(cli, ["clean"])
|
|
|
|
assert res.exit_code == 0, res.stdout
|
2020-10-23 09:31:16 +00:00
|
|
|
|
2023-11-15 17:20:13 +00:00
|
|
|
assert models.AuthorizationCode.get() == valid_code
|
|
|
|
assert models.Token.get() == valid_token
|