Skip to content

バックエンドAPI (app/api) 手動操作テストケース定義書

最終更新: 2026-08-18 対象: API (Cloudflare Workers / Hono / Prisma 共通サーバーAPI)

APIサーバーへの直接アクセス、OpenAPIドキュメントの動作、CORSポリシー、およびセキュリティ監査ログの整合性に関する詳細なテスト手順と期待結果を定義します。


1. OpenAPI & ドキュメント表示 (Documentation)

API-DOC-01: 開発環境での Swagger UI 描画

  • 操作手順:
    1. ローカルでAPIサーバーを起動する (npm run dev)。
    2. ブラウザを起動し、http://localhost:8787/ui(および /v1/ui)を開く。
    3. ブラウザの開発者ツール(F12)の「Console」タブを開く。
  • 期待される結果:
    • Swagger UI 画面がレイアウト崩れなく表示され、各エンドポイントの一覧(GET/POST等)が表示されること。
    • コンソール上に「Content-Security-Policy」起因のスクリプト実行拒否やスタイルシート読み込みエラーが表示されないこと。

API-DOC-02: OpenAPI JSON スキーマの取得

  • 操作手順:
    1. ブラウザまたはAPIクライアント(Postman/curl等)から http://localhost:8787/doc(および /v1/doc)へGETリクエストを送信する。
  • 期待される結果:
    • レスポンスヘッダーの Content-Typeapplication/json であること。
    • 返却されたJSON内に "openapi": "3.0.0" および各ルーティングパス、定義したスキーマ名(FacilityDocumentNotice 等)が正しく含まれていること。

2. セキュリティ & CORSポリシー (Security)

API-SEC-01: オリジン拒否によるCORS検証

  • 操作手順:
    1. cURL やブラウザ拡張機能等を用いて、リクエストヘッダーに Origin: http://malicious-website.com を付与し、APIサーバー(例: http://localhost:8787/v1/auth/login)へ OPTIONS または POST リクエストを送信する。
  • 期待される結果:
    • レスポンスヘッダーに Access-Control-Allow-Origin が含まれない、または許可された特定のオリジンのみが含まれ、http://malicious-website.com のアクセスが許可されないこと。

API-SEC-02: APIアクセスキー/トークンのバリデーション

  • 操作手順:
    1. 有効期限切れの JWT トークン、またはデタラメな署名トークンを Authorization: Bearer [Invalid_Token] ヘッダーに設定して認証が必要なエンドポイント(例: GET /v1/children)へリクエストを送信する。
  • 期待される結果:
    • HTTP ステータスコード 401 Unauthorized が返却されること。
    • レスポンスボディにエラー原因を示すオブジェクト(例: {"error": "Unauthorized"})が含まれていること。

3. 監査ログと改ざん防止 (Audit Logs)

API-AUD-01: 操作履歴のハッシュチェーン検証

  • 操作手順:
    1. 管理者アプリまたは指導員アプリから監査ログ対象の操作(例: 児童情報のCSVインポート、または打刻時間の手動修正)を実行する。
    2. データベースの AuditLog テーブルから直近のレコードを2件以上取得する(例: レコードN と レコードN+1)。
    3. 各レコードの previous_hash および current_hash を確認する。
  • 期待される結果:
    • レコードN+1 の previous_hash の値が、レコードN の current_hash の値と完全に一致していること。
    • いずれかの値を意図的に書き換えた場合、app/api/scripts/verify-audit-log-chain.tsok: falseを返し、current-hash-mismatchまたはprevious-hash-mismatchを報告すること。

注意: writeAuditLog は通常 ExecutionContext.waitUntil でバックグラウンド書き込みされます。高同時実行時は同一施設の previous_hash が直列化されない可能性があるため、検証ツールで定期検査し、必要に応じて書き込み直列化を追加してください。


4. ローカル実行ログ (Local Execution Logs)

API-LOG-01: ローカル実行ログファイル出力の動作検証

  • 操作手順:
    1. ローカル開発環境で API サーバーを起動する (npm run dev)。
    2. ブラウザまたはAPIクライアントから、任意のエンドポイント(例: GET /health)およびエラーを誘発する無効なリクエスト(例: 存在しないエンドポイントへのアクセス GET /v1/invalid-route)を送信する。
    3. app/api/local-api-execution.log ファイルが生成されていることを確認する。
    4. ファイルを開き、記録されたログの内容を確認する。
  • 期待される結果:
    • local-api-execution.log ファイルが自動生成されること。
    • ログがJSON形式で1行ずつ出力され、各行に timestamp, method, path, status, responseTimeMs のキーが含まれていること。
    • 正常なリクエストでは error: null、エラー(ステータスコードが400以上、またはサーバーエラー)が発生したリクエストでは error フィールドにエラー詳細やHTTPステータスの情報が記録されていること。

放課後リンク 開発プロジェクト