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):