Spaces:
Running
Running
""" | |
APIを無効化するテスト | |
""" | |
from typing import Literal | |
from fastapi.testclient import TestClient | |
from voicevox_engine.app.application import generate_app | |
# clientとschemaとパスを受け取ってリクエストを送信し、レスポンスが403であることを確認する | |
def _assert_request_and_response_403( | |
client: TestClient, | |
method: Literal["post", "get", "put", "delete"], | |
path: str, | |
) -> None: | |
if method == "post": | |
response = client.post(path) | |
elif method == "get": | |
response = client.get(path) | |
elif method == "put": | |
response = client.put(path) | |
elif method == "delete": | |
response = client.delete(path) | |
else: | |
raise ValueError("methodはpost, get, put, deleteのいずれかである必要があります") | |
assert response.status_code == 403, f"{method} {path} が403を返しませんでした" | |
def test_disable_mutable_api(app_params: dict) -> None: | |
"""エンジンの静的なデータを変更するAPIを無効化するテスト""" | |
client = TestClient(generate_app(**app_params, disable_mutable_api=True)) | |
# APIが無効化されているか確認 | |
_assert_request_and_response_403(client, "post", "/add_preset") | |
_assert_request_and_response_403(client, "post", "/update_preset") | |
_assert_request_and_response_403(client, "post", "/delete_preset") | |
_assert_request_and_response_403(client, "post", "/user_dict_word") | |
_assert_request_and_response_403(client, "put", "/user_dict_word/dummy") | |
_assert_request_and_response_403(client, "delete", "/user_dict_word/dummy") | |
_assert_request_and_response_403(client, "post", "/import_user_dict") | |
_assert_request_and_response_403(client, "post", "/setting") | |
# FIXME: EngineManifestをDI可能にし、EngineManifestに従ってこれらのAPIを加える | |
# _assert_request_and_response_403(client, "post", "/install_library/dummy") | |
# _assert_request_and_response_403(client, "post", "/uninstall_library/dummy") | |
# 他のAPIは有効 | |
response = client.get("/version") | |
assert response.status_code == 200 | |