get_reservation unit test factors
- Operation:
getReservation - Endpoint:
GET /reservations/{reservationId}
0. Router層の暗黙処理
| Case ID | 処理 | 発生条件 | 期待観点 |
|---|---|---|---|
R001 |
FastAPI Depends(get_caller_identity) | Authorization ヘッダのBearer tokenが未指定、または署名・issuer・client・用途・期限を検証できない場合。 | HTTP 401 error response: authentication_required / invalid_token |
R002 |
FastAPI/Pydantic request validation | Path/Query/Header/Body が型または制約に一致しない場合。 | HTTP 422 error response: invalid_input |
1. 要因ごとの要素
F01 条件分岐
- 対象: 条件分岐: 呼び出し元が予約者本人または管理者でない場合。
- AST:
not await api_functions.has_reservation_view_permission(reservation, caller)
| 要素ID | 要素 | 期待観点 |
|---|---|---|
F01-true |
成立 | HTTP 403 error response: forbidden log message_id: getReservation.caller_cannot_view_reservation log summary: 呼び出し元が予約者本人でも管理者でもないため、予約詳細の参照を拒否した。 |
F01-false |
不成立 | 条件不成立側または後続処理を継続する。 |
F02 例外処理
- 対象: 例外処理: ROUTER_HANDLED_EXCEPTIONS
- AST:
ROUTER_HANDLED_EXCEPTIONS
| 要素ID | 要素 | 期待観点 |
|---|---|---|
F02-normal |
発生しない | try bodyを継続し、このexcept handlerへ遷移しない。 |
F02-raised-apifunctionerror |
ApiFunctionError | HTTP 500 error response: forced router error |
F02-raised-externalapierror |
ExternalApiError | HTTP 502 error response: external service request failed |
F02-raised-httpexception |
HTTPException | HTTP 400 error response: forced http exception |
2. 直積したテストケース一覧
| Case ID | F01 | F02 |
|---|---|---|
TC001 |
成立 |
- |
TC002 |
不成立 |
発生しない |
TC003 |
不成立 |
ApiFunctionError |
TC004 |
不成立 |
ExternalApiError |
TC005 |
不成立 |
HTTPException |
3. テスト詳細
TC001
| 要因 | 要素 | 期待観点 |
|---|---|---|
F01 条件分岐: 呼び出し元が予約者本人または管理者でない場合。 |
成立 | HTTP 403 error response: forbidden log message_id: getReservation.caller_cannot_view_reservation log summary: 呼び出し元が予約者本人でも管理者でもないため、予約詳細の参照を拒否した。 |
TC002
| 要因 | 要素 | 期待観点 |
|---|---|---|
F01 条件分岐: 呼び出し元が予約者本人または管理者でない場合。 |
不成立 | 条件不成立側または後続処理を継続する。 |
F02 例外処理: ROUTER_HANDLED_EXCEPTIONS |
発生しない | try bodyを継続し、このexcept handlerへ遷移しない。 |
| API正常応答 | 正常 | HTTP 200 success response |
TC003
| 要因 | 要素 | 期待観点 |
|---|---|---|
F01 条件分岐: 呼び出し元が予約者本人または管理者でない場合。 |
不成立 | 条件不成立側または後続処理を継続する。 |
F02 例外処理: ROUTER_HANDLED_EXCEPTIONS |
ApiFunctionError | HTTP 500 error response: forced router error |
TC004
| 要因 | 要素 | 期待観点 |
|---|---|---|
F01 条件分岐: 呼び出し元が予約者本人または管理者でない場合。 |
不成立 | 条件不成立側または後続処理を継続する。 |
F02 例外処理: ROUTER_HANDLED_EXCEPTIONS |
ExternalApiError | HTTP 502 error response: external service request failed |
TC005
| 要因 | 要素 | 期待観点 |
|---|---|---|
F01 条件分岐: 呼び出し元が予約者本人または管理者でない場合。 |
不成立 | 条件不成立側または後続処理を継続する。 |
F02 例外処理: ROUTER_HANDLED_EXCEPTIONS |
HTTPException | HTTP 400 error response: forced http exception |