From d8943cf126c980543913d6b535afe23bebb7ee4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Casaj=C3=BAs?= Date: Tue, 25 Jul 2023 17:15:18 +0200 Subject: [PATCH] Fix: Allow to create more than one api key if the user has more than one (#1822) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Adrià Casajús --- app/dashboard/views/api_key.py | 2 ++ tests/dashboard/test_api_keys.py | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/dashboard/views/api_key.py b/app/dashboard/views/api_key.py index aa380755..5c190432 100644 --- a/app/dashboard/views/api_key.py +++ b/app/dashboard/views/api_key.py @@ -18,6 +18,8 @@ class NewApiKeyForm(FlaskForm): def clean_up_unused_or_old_api_keys(user_id: int): total_keys = ApiKey.filter_by(user_id=user_id).count() + if total_keys <= config.MAX_API_KEYS: + return # Remove oldest unused for api_key in ( ApiKey.filter_by(user_id=user_id, last_used=None) diff --git a/tests/dashboard/test_api_keys.py b/tests/dashboard/test_api_keys.py index c00cda42..80cdfebb 100644 --- a/tests/dashboard/test_api_keys.py +++ b/tests/dashboard/test_api_keys.py @@ -37,6 +37,17 @@ def test_create_delete_api_key(flask_client): assert ApiKey.filter(ApiKey.user_id == user.id).count() == 1 assert api_key.name == "for test" + # create second api_key + create_r = flask_client.post( + url_for("dashboard.api_key"), + data={"form-name": "create", "name": "for test 2"}, + follow_redirects=True, + ) + assert create_r.status_code == 200 + api_key_2 = ApiKey.filter_by(user_id=user.id).order_by(ApiKey.id.desc()).first() + assert ApiKey.filter(ApiKey.user_id == user.id).count() == 2 + assert api_key_2.name == "for test 2" + # delete api_key delete_r = flask_client.post( url_for("dashboard.api_key"), @@ -44,7 +55,7 @@ def test_create_delete_api_key(flask_client): follow_redirects=True, ) assert delete_r.status_code == 200 - assert ApiKey.count() == nb_api_key + assert ApiKey.count() == nb_api_key + 1 def test_delete_all_api_keys(flask_client):