Документация1С-Битрикс: Модулиnative.apiПроверка работы

Сценарии проверки

После базовой проверки выполните сценарии для используемых в проекте механизмов.

Подготовка

Проверки с изменением прав, ограничений, карт роутов и данных выполняйте на тестовой копии сайта. Подготовьте отдельного пользователя, двух API-клиентов и тестовый роут с контролируемым результатом. Административные права проверяйте под пользователем без прав администратора.

Используйте адреса API и документации из настроек своего сайта. Каждое ограничение проверяйте отдельно: остальные условия должны разрешать запрос. Если механизм не используется в проекте, отметьте пункт как неприменимый.

Установка и удаление

Этот сценарий выполняйте на отдельной тестовой копии сайта, которую можно восстановить. Обычная проверка после обновления не требует удаления модуля.

ПроверитьКак проверитьОжидаемый результат
УстановкаПройдите мастер установки и откройте дашбордВсе шаги завершены; административные страницы и настроенные точки входа доступны согласно правам
Удаление с сохранением данныхСоздайте тестовые данные, при удалении оставьте соответствующие категории невыбранными, затем установите модуль повторноСохранённые данные доступны после повторной установки; при сохранении действующих токенов они продолжают работать
Удаление с очисткойНа восстановленной копии повторите удаление, выбрав категории для очистки, затем установите модуль сноваДанные выбранных категорий удалены. Несвязанные данные сайта и файлы других модулей сохранены

После установки

Выполните эти проверки после первоначального запуска. После обновления повторите их перед проверкой собственных доработок.

Точки входа

ПроверитьКак проверитьОжидаемый результат
Точки входаОткройте настроенные адреса API и документации. Выполните запрос к существующему и отсутствующему роутуСуществующий роут возвращает ответ модуля, отсутствующий — HTTP 404. Документация открывается при наличии права чтения
ДокументацияОткройте её под пользователями с разными правами на страницу и группы роутов, затем повторите проверку после заполнения кешаПользователь видит только доступные ему роуты. Без права чтения доступ к документации запрещён
Сервисные роутыВключите сервисные роуты и выполните запросы из документации, затем отключите ихВключённые роуты отвечают согласно своим описаниям и правам доступа; отключённые недоступны

Авторизация и токены

ПроверитьКак проверитьОжидаемый результат
Защищённый роутВыполните запрос с верными данными авторизации, без них и с неверными даннымиВерные данные дают доступ; отсутствие или ошибка обязательной авторизации возвращает HTTP 401
Выпуск и список токеновВыпустите пары токенов для двух клиентов одного пользователя и запросите список сессийУ клиентов отдельные пары; список содержит их сессии без исходных значений токенов
Обновление токеновОбновите пару первого клиента через refresh-токен, затем повторите запрос со старым refresh-токеномНовая пара работает; повторное использование старого refresh-токена отклоняется. Второй клиент продолжает работать
Срок действия и отзывПроверьте доступ с истёкшим токеном. Отзовите сессию первого клиента и повторите запросы обоих клиентовИстёкший и отозванный токены не дают доступ; сессия второго клиента остаётся действующей

Для токенов, выпущенных через API, проверьте работу с теми же заголовками клиента и отказ после их изменения. При отказе обновления из-за смены заголовков исходная пара должна оставаться действующей для прежнего клиента.

Права в админке

ПроверитьКак проверитьОжидаемый результат
Чтение страниц модуляРазрешите пользователю чтение дашборда, токенов, входящих запросов или настроек, затем отзовите право. Проверьте меню и прямой переход на страницуРаздел доступен только при наличии права; отсутствие пункта меню нельзя обойти прямой ссылкой
Изменение данныхС правом только чтения попробуйте сохранить настройки или изменить токены, в том числе прямым запросом. Повторите с правом измененияИзменяющие операции требуют соответствующего права. Очистка кеша модуля отдельно разрешена пользователю с правом чтения настроек

Для журналов отдельно проверьте видимость ссылок в меню модуля и доступ к системному журналу событий. Просмотр самого журнала регулируется правами платформы: скрытая ссылка в меню модуля не запрещает прямой переход пользователю с таким доступом.

После обновления

Дополнительно проверьте используемые в проекте настройки, свои карты роутов, контроллеры и обработчики событий. Сравнивайте ответы с ожидаемым поведением вашей интеграции до обновления.

На дашборде проверьте гаджет «Логирование»: его флаги должны совпадать с настройками одноимённой вкладки, включая разные состояния записи в базу и файлы. Если гаджета нет в сохранённой раскладке, добавьте его через «Добавить гаджет». Успешность самой записи проверяйте по журналам после нового запроса.

Роуты и расширения

ПроверитьКак проверитьОжидаемый результат
Пользовательская картаВызовите собственный роут и роут, переопределённый локальной картой, с указанными в карте HTTP-методамиВызываются нужные контроллеры и действия; параметры, права и формат ответа соответствуют вашей карте
Роут провайдераВызовите разрешённый метод, затем метод вне разрешённого списка и явно запрещённый методРазрешённый вызов выполняется; остальные отклоняются до выполнения метода. Явный запрет имеет приоритет
Рекурсивная валидацияПередайте корректные параметры, затем по одному нарушайте обязательность, типы и допустимые значения, включая вложенные объекты и элементы списковКорректные данные доходят до контроллера; ошибочные отклоняются на проверке параметров, действие контроллера не выполняется
Событийная модельПодключите свои обработчики событий и проверьте их вызов и влияние на результат. Повторите запрос с кешированием ответаОбработчики работают на соответствующих этапах. При попадании в кеш ответа контроллер и события до и после него повторно не вызываются

Кеширование

ПроверитьКак проверитьОжидаемый результат
Кеш карты и роутовВыполните запрос после очистки кеша и повторно. Измените тестовую карту, очистите кеш модуля и снова вызовите роутПервичное и повторное обращения используют одинаковые правила; после изменения и очистки применяется новая карта
Кеш настроекСохраните изменение настройки, влияющей на запрос, и сразу повторите запросНовое значение применяется без ожидания истечения прежнего кеша
Общее кеширование ответовДля тестового GET-роута без собственного срока кеша задайте общий срок. По счётчику вызовов контроллера проверьте первый запрос, повторный и запрос после истечения срокаПовторный запрос получает сохранённый результат без вызова контроллера; после истечения срока контроллер выполняется снова
Кеш отдельного роутаЗадайте собственный срок кеша роута при отключённом общем кеше. Затем отключите кеш роута при включённом общемНастройка роута имеет приоритет: в первом случае результат кешируется, во втором контроллер вызывается при каждом запросе
Разделение ответов и праваПроверьте один роут с разными параметрами, пользователями и клиентами. После заполнения кеша запретите доступ одному из них и повторите запросРезультаты разных пользователей и клиентов не смешиваются; изменённые параметры учитываются. Запрет доступа действует и при заполненном кеше

Ограничения доступа

ПроверитьКак проверитьОжидаемый результат
Режим работыНастройте разрешённый интервал и проверьте запрос внутри и вне него, учитывая день недели и время сервера PHPВнутри разрешённого интервала запрос проходит; вне него отклоняется
Количество запросовНастройте небольшой лимит на тестовом стенде. Последовательно выполните запросы до его достижения, сверх него и после освобождения лимитаВ пределах лимита запросы проходят; превышение возвращает HTTP 429. После освобождения лимита доступ восстанавливается
CORSВыполните запросы из браузера с разрешённого и запрещённого источника. Проверьте предварительный OPTIONS-запрос с разрешёнными и запрещёнными заголовкамиРазрешённый источник получает нужные CORS-заголовки; запрещённый источник или заголовки отклоняются. Разрешённый OPTIONS завершается без вызова контроллера
IP-адресаПроверьте запросы с разрешённого адреса, адреса вне белого списка и адреса из чёрного спискаДоступ соответствует спискам; чёрный список имеет приоритет при совпадении
Группы пользователейВыполните запрос под пользователями из разрешённых, неразрешённых и явно запрещённых группРоут доступен только разрешённым группам; явный запрет имеет приоритет

Для групповых ограничений используйте авторизацию, предусмотренную роутом: вход в административную часть сайта сам по себе не авторизует API-запрос.

Проверка собственных обработчиков

Если интеграция использует события, проверьте её результат при успешном запросе и отказе в доступе. Повторите запрос с включённым кешированием: обязательные действия не должны зависеть от событий контроллера, которые при попадании в кеш не вызываются.

Для обработчика, возвращающего ответ досрочно, проверьте HTTP-статус, заголовки и данные клиента. Последующие обработчики и контроллер выполняться не должны.

История и данные запросов

Проверьте сбор запросов и четыре независимых направления записи. Используйте тестовые значения секретов.

УсловиеОжидаемый результат
Сбор включён, лимит выключенОдна запись на запрос, включая отказ, OPTIONS и досрочный ответ события
Сбор выключен, лимит действуетТолько основная запись; флаги данных не создают записи в базе или файлы
Сбор и лимит выключеныИстория и журналы данных не создаются
Сбор включён, флаги данных включаются по одномуЗаписывается только выбранное направление: входящие или исходящие данные, база или файл
Данные записываются только в файлыКарточка сообщает об отсутствии данных в базе; файлы доступны по REQUEST_ID
JSON, XML, HEAD и нестандартный ответФормат и отсутствие тела соответствуют ответу; непустое неподдерживаемое тело заменено маской
Вложенные пароли, токены, Authorization и CookieРаспознаваемые секреты замаскированы в базе и файлах
Запрос с включённым лимитомВ подсчёт входит только статус PROCESSED; ошибка контроллера после проверки лимита не меняет его
Удаление запросаОсновная запись и связанные данные удалены из базы; файлы сохранены

После запроса обновите список истории и откройте его карточку.

Завершение проверки

Зафиксируйте версию модуля, окружение, проверенные сценарии и результат каждого пункта. Для ошибки сохраните шаги воспроизведения, HTTP-статус и ответ без паролей и токенов.

Удалите тестовые данные и обработчики, восстановите временно изменённые настройки, права и карты роутов либо восстановите тестовый стенд из снимка.