import pytest from flask import url_for from http import HTTPStatus from apollo_main_db.apollo.models import ApolloKeyValueStorage from tests.legacy.apollo_api import factories as apollo_factories @pytest.mark.parametrize( "params,expected_status,expected_result", ( ({}, HTTPStatus.BAD_REQUEST, {}), ({"key": "test_key"}, HTTPStatus.NOT_FOUND, {}), ({"key": "t_k_1"}, HTTPStatus.OK, {"key": "t_k_1", "value": "t_v_1"}), ({"key": "t_k_4"}, HTTPStatus.OK, {"key": "t_k_4", "value": "t_v_4"}), ), ) def test_get_values(params, expected_status, expected_result, client, user_id, patch_auth_user, db_session): patch_auth_user(user_id) for index in range(1, 5): apollo_factories.ApolloKeyValueStorageFactory(id=index, key=f"t_k_{index}", value=f"t_v_{index}") response = client.get(url_for("values.get_values", **params)) assert response.status_code == expected_status if expected_status == HTTPStatus.OK: assert response.json == expected_result @pytest.mark.parametrize( "params,expected_status,expected_result", ( ({}, HTTPStatus.BAD_REQUEST, {}), ({"key": "123"}, HTTPStatus.BAD_REQUEST, {}), ({"value": "123"}, HTTPStatus.BAD_REQUEST, {}), ({"key": "test_key", "value": "new_value"}, HTTPStatus.NOT_FOUND, {}), ({"key": "t_k_1", "value": "t_v_new"}, HTTPStatus.OK, {"key": "t_k_1", "value": "t_v_new"}), ({"key": "t_k_4", "value": "other_value"}, HTTPStatus.OK, {"key": "t_k_4", "value": "other_value"}), ), ) def test_put_values(params, expected_status, expected_result, client, user_id, patch_auth_user, db_session): patch_auth_user(user_id) for index in range(1, 5): apollo_factories.ApolloKeyValueStorageFactory(id=index, key=f"t_k_{index}", value=f"t_v_{index}") response = client.put(url_for("values.put_values", **params)) assert response.status_code == expected_status if expected_status == HTTPStatus.OK: assert response.json == expected_result result = ( db_session.query(ApolloKeyValueStorage.value).filter(ApolloKeyValueStorage.key == params["key"]).first() ) assert result[0] == params["value"]