# テスト API

> **注意**
>
> テスト API はテスト目的のためだけに利用してください

## 概要

テスト API は意図的に発生させるのが難しい状況を API 経由で発生させるための API です。

## 設定

テスト API を利用するには `sora.conf` の [test_api](SORA_CONF.html#a2f020) を `true` に設定する必要があります。

デフォルトは `false` です。

## 注意

- テスト API は利便性を最優先にするため破壊的変更を積極的に行います


## GenerateCrashLog

**x-sora-target**: Sora_20380119.GenerateCrashLog

意図的に Sora のクラッシュログを発生させます。クラッシュログの監視のテストなどに利用してください。

この API はかならずステータスコード `500` を返します。

* - キー
  - 型
* - info
  - object

```console
$ http POST 127.0.0.1:3000/ x-sora-target:Sora_20380119.GenerateCrashLog \
    info:='{"spam": "egg"}' \
    -vvv
```


## FailArchive

*バージョン 2024.1.0 で追加。*

*バージョン 2024.2.0 で変更。*
クラスターに対応しました

**x-sora-target**: Sora_20380119.FailArchive

意図的に Sora の録画を失敗させます。 `archive.failed` ウェブフックを意図的に出力させたい場合に利用してください。

テストの利便性を考えランダムな値である `connection_id` ではなく、固定値として設定できる `client_id` を指定できるようにしています。

`client_id` は指定しなければ `connection_id` が設定されるので、
`client_id` を指定しない場合、 `client_id` に `connection_id` を指定しても動作します。

* - キー
  - 型
* - channel_id
  - string
* - client_id
  - string

```console
$ http POST 127.0.0.1:3000/ x-sora-target:Sora_20380119.FailArchive \
    channel_id=sora \
    client_id=test \
    -vvv
```


## SendSignalingNotify

*バージョン 2024.1.0 で追加。*

**x-sora-target**: Sora_20380119.SendSignalingNotify

指定した内容のシグナリング通知として送信します。シグナリング通知のテストなどに利用してください。

- 指定したチャネルの参加者全員に json に指定した値がそのまま通知されます
- クラスター機能を利用していた場合、API を実行したノードでのみ通知されます

* - キー
  - 型
* - channel_id
  - string
* - json
  - object

```console
$ http POST 127.0.0.1:3000/ x-sora-target:Sora_20380119.SendSignalingNotify \
    channel_id=sora \
    json:='{"type": "notify", "event_type": "audio-streaming-failed"}' \
    -vvv
```


## LockIceConnectionState

*バージョン 2024.2.0 で追加。*

**x-sora-target**: Sora_20380119.LockIceConnectionState

ICE コネクションステートの状態を指定した状態に変更しロックします。ICE コネクションステートのテストなどに利用してください。

一度でもこの API で状態を変更した場合は、ICE コネクションステート機能は機能しなくなりますので注意してください。
ただし状態を変更した際のシグナリング通知は通知されます。

* - キー
  - 型
* - channel_id
  - string
* - connection_id
  - string
* - state_name
  - string (connected | checking | disconnected)

```console
$ http POST 127.0.0.1:3000/ x-sora-target:Sora_20380119.LockIceConnectionState \
    channel_id=sora \
    connection_id=6V9VANDZZH71HCQGVKBWKJ8GS0 \
    state_name=checking \
    -vvv
```
