Песочница
Отлаживать интеграцию на живых учениках — плохо, а отлаживать её негде — ещё хуже. Песочница закрывает этот выбор: побочные эффекты выключаются, а всё остальное работает по-настоящему.
У GetCourse API на пробном тарифе просто недоступно, и отлаживаться приходится на живой школе.
Как включить #
Ключом. Заведите в настройках ключ с префиксом lms_test_ и используйте его
вместо боевого:
curl -X GET 'https://school.example.com/api/v1/users' \
-H 'Authorization: Bearer lms_test_5c1e9d2b74a5f8e0c1d3b5a7f9e2ca8f' \
-H 'Accept: application/json'
Никакого отдельного адреса, отдельного домена и отдельной настройки — тестовый режим включает сам ключ. Одно место, которое можно забыть переключить, вместо трёх.
Что меняется #
| Что | В тестовом режиме |
|---|---|
| Платежи | Уходят в тестовый режим провайдера. Реальных денег не двигают |
| Сообщения | Наружу не уходят. Складываются в журнал с пометкой — их видно, но ученик их не получает |
| Вебхуки | Шлются на отдельный адрес подписки, а не на боевой приёмник |
Всё остальное — те же операции, те же права, те же лимиты, те же коды ответа и те же ошибки. В этом смысл: отлаживается тот код, который потом пойдёт в бой, а не его тестовый двойник.
Чего это не заменяет #
Здесь три оговорки, и первая важнее двух остальных.
Это та же установка и те же данные #
Песочница не изолирует данные. Тестовый ключ работает против вашей боевой школы: созданный им пользователь — настоящая строка в вашей базе, выданный доступ — настоящий доступ, изменённый курс — изменённый по-настоящему.
Изолируются побочные эффекты наружу: деньги, сообщения, вебхуки. Всё, что происходит внутри школы, происходит на самом деле.
Практически это значит:
- удаление тестовым ключом удаляет по-настоящему. Права ключа песочницы стоит сужать так же тщательно, как боевого, а лучше — сильнее;
- тестовые данные надо за собой убирать. Через месяц отладки в школе живут
сорок человек с почтой вида
test+7@…, и они попадают в сегменты и отчёты; - заводите тестового ученика заранее и работайте с ним, а не с первым попавшимся живым.
Это не отдельный стенд #
Если нужно проверить обновление, миграцию или поведение при пустой базе — нужна вторая установка, а не тестовый ключ. Песочница — про интеграцию, а не про инфраструктуру.
Тестовый режим провайдера — не наш #
Платежи уходят в тестовый режим платёжного провайдера, и что именно он в нём позволяет, решает он. Тестовые карты, сценарии отказа, задержки — всё это в его документации, не в нашей.
Как этим пользоваться #
Порядок, который экономит день отладки:
1. Завести ключ lms_test_ с теми правами, которые нужны интеграции. Не с полными.
2. Завести тестового ученика и тестовый курс — руками, один раз.
3. Подписать вебхуки на тестовый адрес приёмника.
4. Прогнать сценарий целиком: заказ, оплата, выдача доступа, сообщение.
5. Проверить журнал сообщений: они должны быть там с пометкой, а не у ученика.
6. Заменить ключ на боевой и прогнать ещё раз — на себе, а не на клиенте.
Шаг 6 не лишний. Тестовый режим не ловит две вещи: неверный боевой адрес приёмника вебхуков и права боевого ключа, которые вы могли задать иначе.
Как понять, каким ключом вы работаете #
По префиксу — но не глазами, а в коде. Проверка ключ.startsWith('lms_test_')
на старте вашей интеграции с явным сообщением в журнал стоит одну строку
и однажды покажет, что ночная задача полгода ходила тестовым ключом.
Обратный случай неприятнее: боевой ключ в отладочном окружении. Поэтому в примерах на экране создания ключа подставлен именно тот ключ, который вы только что создали — чтобы не копировать чужой из документации.
Чего здесь ещё нет #
Проверенного поведения. Раздел описывает решение, а не работающий код: API пока нет. Что именно попадёт в журнал сообщений и как будет выглядеть пометка тестового платежа, станет понятно при реализации.