Автор: Надежда Дудник  Заранее хочу сказать, что мне нравится Postman, просто Insomnia часто используемый инструмент для тестирования API у меня на работе, и важно поделиться информацией о его возможностях. Содержание: Введение Импорт коллекции Создание пользователя Работа с переменными и окружение Авторизация пользователя Получение токена Создание проекта   Аутентификация через вкладку "Headers" Аутентификация через вкладку "Auth" Дополнение про автоматизацию получения токена для методов, которые   требуют токен на предъявителя. Общая информация про Insomnia Установка сертификата Возможности автоматизации Импорт OpenAPI документации Создание первого автотеста при создания пользователя Заключение Insomnia - инструмент для тестирования REST API (клиент взаимодействия с API) Скачать Insomnia Для примера я буду использовать мной любимый сайт Vikunja. UI: https://try.vikunja.io/login  API documentation: https://try.vikunja.io/api/v1/docs Скачать API Документацию из https://try.vikunja.io/api/v1/docs (найти "Download OpenAPI specification на странице") Открыть приложение Insomnia (версия Insomnia.Core-2023.4.0 для Mac / Windows в момент написании статьи).  Я буду использовать приложение на Mac. Найти кнопку "Import" и нажать на нее. Insomnia предлагает загрузить данные.  Выбрать наш файл docs.json, скачанный из https://try.vikunja.io/api/v1/docs  Нажать на кнопку "Scan" -> "Import" Коллекция загружена: Выбрать коллекцию, и открывается содержимое коллекции: Разберу самый первый запрос, который связан с регистрацией пользователя на сайте. Папка "auth" -> запрос POST Register Прежде чем разобраться с отправкой самого запроса, проанализирую, а где создать переменную, и где она хранится. В адресной строке для POST запроса отображена переменная ".base_url". Выбрать "No Environment"  в левом верхнем углу Нажать на "Manage Environments". Нажать на "+". Указать название новой коллекции "Vikunja", создать переменную base_url внести данные как Нажать на кнопку "Close". Окружение "Environment" как "Vikunja" выбрано сразу по умолчанию. Нажать на ".base_url" в адресной строке -> откроется всплывающее окно для редактирования переменной в окружении. Проверить, что наше созданное значение base_url имеет следующий вид: Нажать на кнопку "Done". Указать в теле запроса значения на вкладке "Body -> JSON": Нажать на кнопку "Send". Создан новый пользователь в системе. Ура :)! Также есть вкладки "Auth", "Query", ''Headers", "Docs", их я разберу чуть ниже. Далее отправить следующий запрос на авторизацию пользователя Папка "auth" -> запрос POST Login и получить токен в ответе от сервера.  Согласно документации используется JWT-Auth: Authorization: Bearer <jwt-token>. Указать в теле запроса значения на вкладке "Body -> JSON": Нажать на кнопку "Send". Пользователь авторизован в систему. Получен токен. Ура :)! Теперь используем созданный токен в запросе для создания проекта. Найти папку "project", раскрыть ее, выбрать запрос  Папка "project" -> PUT Creates a new project Есть два способа, где можно указать переменную для токена (время жизни токена 30 минут или пользователь будет удален из системы через 30 минут). способ через вкладку "Headers" способ через вкладку "Auth" Предусловие: Выбрать "Vikunja" окружение в левом верхнем углу -> Выбрать "Manage Environments" -> Добавить новую переменную c значением: Нажать на кнопку "Close". _______________  Аутентификация через вкладку "Headers" Разберем 1 способ через вкладку "Headers". Выбрать вкладку "Headers". Нажать на ".api_key" -> откроется всплывающее окно для редактирования переменной в окружении. Отредактировать ".api_key" на ".token" и нажать на кнопку "Done" Установленная переменная имеет вид как ".token", и в начале обязательно добавить слово "Bearer" и пробел - важно указать для заголовка "Authorization", так как токен на предъявителя. Отредактировать тело запроса на вкладке "JSON" согласно требованию и нажать на кнопку "Send". В теле запроса указать только название проекта:  _______________ Аутентификация через вкладку "Auth" Разберем 2 способ через вкладку "Auth". Выбрать вкладку "Auth" , нажать на стрелочку вниз (точнее раскрыть) и выбрать тип аутентификации "Bearer Token" Отображается следующий вид: Начать вводить значение {{_ в поле "TOKEN" и выбрать переменную  ".token". Нажать на кнопку "Send". Создан новый проект! Ура!) Дополнение про автоматизацию получения токена для методов, которые требуют токен на предъявителя. Предусловие: Выбрать "Vikunja" окружение в левом верхнем углу -> Выбрать "Manage Environments" -> Добавить новую переменную c значением: После того как выбрано данное значение будет следующий вид: Нажать на  {% request 'oauth2', '', 0 %}  Далее выполнить конфигурацию, выбрать "Response - reference values from other request's responses" Будет отображено следующее окно, данные поля важно заполнить следующими значениями: Атрибут - значение из тела ответа от сервера Запрос - авторизация пользователя "POST Login" Указать конкретный ключ, начиная с $., а именно $.token, и в "Live Preview" сразу отображается значение токена. Trigger Behavior говорит о том, что когда токен затухает, то еще раз отправить запрос на авторизацию пользователя Можно нажать на "Refresh", токен обновится Нажать на "Done" Будет отображаться следующее окно, ВАЖНО указать значение токена в кавычках! сама команда выглядит так: Закрыть окно "Manage Environments". Выбрать вкладку "Auth" , нажать на стрелочку вниз (точнее раскрыть) и выбрать тип аутентификации "Bearer Token". Начать вводить значение {{ в поле "TOKEN" и выбрать переменную  ".token". Нажать на кнопку "Send". Ура! Проект создан! Главное не забываем создать пользователя, авторизоваться в систему, и токен таким способом будет получаться автоматически. Для других запросов можно также "вытащить" необходимые значения. Insomnia поддерживает отправку запросов через HTTP, gRPC, GraphQL, WebSocket. для HTTP request: Вкладки "Body" (указание тела запроса), "Auth" (указание типа авторизации), "Query" (указание параметров), ''Headers" (указание HTTP заголовков запроса), "Docs" (указание документации OpenApi для запроса Для запроса можно сделать следующие действия: Особенно важная функция как "Generate Code". Для HTTP response: Вкладки "Preview or Source or Raw" (указание тела ответа от сервера), ''Headers" (указание HTTP заголовков ответа), "Cookies", "Timeline" (информация про временные особенности) Например, Timeline после отправки запроса на создание проекта Preparing request to https://try.vikunja.io/api/v1/projects Current time is 2023-07-22T21:30:46.171Z Enable automatic URL encoding Using default HTTP version Enable SSL validation Too old connection (567 seconds), disconnect it и т.д. Про установку сертификата (например, для финтеха это самое первое, что нужно сделать прежде чем отправить запрос). Выбрать "Collection Settings" -> "Client Certificates". Нажать на "New Certificate". Все необходимые файлы и хосты должны предоставить коллеги (админы, спросите в общем чате). Указать "Host", нажать на "Choose Cert" и "Choose Key", добавить файлы. Нажать на кнопку "Create Certificate" Режим просмотра: Для нашей работы в настройках запроса убрать галочки в чек-боксах "Send cookies automatically" и "Store cookies automatically": Инструмент позволяет сделать тестовые сценарии: негативные и позитивные, используется язык JS для автоматизации, позволяет проводить прогоны и получать отчет прогона и сформировать CI для автозапуска из консоли. Нажать на иконку "Домашняя страница" ->  Найти "All Files" -> "Documents" -> Нажать на "+" Система отображает всплывающее окно "Create New Design Document", оставить "my-spec.yaml" и нажать на кнопку "Create" Создан New Document. Отображены три вкладки "DESIGN", "DEBUG", "TEST". Нажать на кнопку "Import OpenAPI" -> Выбрать "File". Выбрать наш файл docs.json, скачанный из https://try.vikunja.io/api/v1/docs  Отображена документация "Vikunja API". Выбрать вкладку "DEBUG" - > Добавить запрос на создание пользователя -> Предупреждаю, что при повторном создании пользователя необходимо изменить почту и имя пользователя. Так как я уже создала пользователя, то для автотеста я изменю значения почты и имени для пользователя. Выбрать вкладку "TEST" - > Найти и нажать "New Test Suite" -> Указать название "Tests" -> Нажать на кнопку "Create Suite" Нажать на кнопку "New Test" -> Оставить дефолтное название "Returns 200" (так как при создании пользователя возвращается статус код 200) -> нажать на "New Test" Выбрать dropdown "Select Request" -> Выбрать наш запрос на "Создание пользователя (регистрация)" из вкладки "DEBUG" Insomnia предлагает дефолтный фрагмент кода: Нажать на кнопку "Run Tests". Успешно выполнен тест, статус указан "Passed". Повторно нажать на кнопку "Run Tests". Тест провален, статус указан "Failed". Ура, написан простейший автотест. Еще примеры: Предусловия: изменены почта и имя пользователя на вкладке "DEBUG" Добавлены два теста на отправку регистрации пользователя "Response body has property Id" и ''Response body is json object". Каждый раз отправляется новый тест, поэтому второй тест будет отображать ошибку, что такой пользователь существует (для этого случая будет создан новый тест "User already exists". Код для тренировки: 1 тест "Response body has property Id"  2 тест ''Response body is json object" 3 тест на проверку, что такой пользователь существует ("User already exists"). Больше информации про скрипты в официальной документации. Есть такие возможности у Insomnia: встроенный DevTools, конвертация запроса в код, JSON|XML - читабельный вид (Beautify JSON), есть подсказки на валидацию введенных значений, история запросов. Также убедились, что есть возможность настроить окружение, создавать динамические переменные и тест-кейсы и прогонять их. Конечно, есть и минусы в запуске тест-кейсов, и все же этот инструмент становится лучше и обновляется. Благодарю за прочтение. С уважением,  Надежда Дудник (protestinginfo), главный инженер по тестированию в финтехе и ментор по тестированию ПО.  Главный инженер по тестированию