
# 연결의 최신 테스트 결과 가져오기

`GET /v1/connections/{connection_id}/test-results/latest` · 권한 `connections:write`

지난 24시간 안에 실행된 엔터프라이즈 연결의 가장 최근 [테스트 로그인](test.md) 결과를 반환합니다. 상태, 실패 사유, IdP가 보낸 속성 또는 클레임의 **이름**, 그룹 수, 속성 매핑을 통해 값을 받은 사용자 필드를 포함합니다. 속성 값, 원본 SAML 어설션, ID 토큰은 저장되거나 반환되지 않습니다. 테스트 결과는 24시간 동안 보관됩니다. 조회는 감사되지 않습니다.

## 요청

| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| `connection_id` | 경로 | 예 | 엔터프라이즈 연결 ID(`conn_…`). |

## 응답

`200 OK`:

```json
{
  "test_id": "conntest_01j9xr4a6b8c0d2e4f6g8h0j2k",
  "status": "passed",
  "failure_reason": null,
  "attribute_names": ["email", "given_name", "groups"],
  "group_count": 2,
  "mapped_fields": ["email", "given_name"],
  "started_at": "2026-10-20T10:00:00Z",
  "completed_at": "2026-10-20T10:01:12Z"
}
```

| 필드 | 설명 |
|---|---|
| `status` | `pending`(URL을 아직 열지 않았거나 IdP가 아직 응답하지 않음), `passed` 또는 `failed`. |
| `failure_reason` | 실패한 테스트의 기계가 읽을 수 있는 사유(예: 테스트 중 연결이 변경되면 `configuration_changed`). 그 밖에는 `null`. |
| `attribute_names` | IdP가 보낸 속성 또는 클레임의 이름(값은 아님). |
| `group_count` | 받은 그룹 수. |
| `mapped_fields` | 속성 매핑을 통해 값을 받은 사용자 필드(값은 아님). |
| `started_at`, `completed_at` | 테스트 시작 시각과 IdP 응답 처리 완료 시각. `pending` 상태에서는 `completed_at`이 `null`입니다. |

## 오류

| HTTP | code | 발생 조건 |
|---|---|---|
| 404 | `not_found` | 이 환경에 연결이 없거나, 엔터프라이즈 연결이 아니거나, 지난 24시간 안의 테스트 결과가 없습니다. |
| 401 | `unauthenticated` | 자격 증명이 없거나, 잘못되었거나, 취소되었습니다. |
| 403 | `insufficient_permissions` | 자격 증명에 필요한 권한이 없습니다. |
| 429 | `rate_limited` | 요청 한도를 초과했습니다. `Retry-After` 기간이 지난 후 다시 시도하세요. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. `Retry-After` 기간이 지난 후 다시 시도하세요. |

## 예시

```bash
curl "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/test-results/latest" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

```bash
keenauth connections test-results latest conn_01j9xp6q0r1s5t7v9w1x3y5z7b
```
