Spaces:
Paused
Paused
| """ | |
| 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 | |