Postman скрипт для получения токена

Разберем, как можно добавить Pre-request скрипт, чтобы выполнять запрос токена (логин) и использовать его для выполнения других запросов, требующих аутентификацию с этим токеном.

Проблема

Создаем и отправляем запросы в Postman для тестирования работы с API, но каждый раз токен приходится вводить вручную. Токен вводим в первый и в последующие разы при каждом запуске, что занимает время, но понятно что есть способ использовать обширный набор инструментов Postman.

Как организована авторизация в Postman

Структура проекта в нашем случае такая: Корень проекта (в терминах Postamn называется API), Папка-коллекция (набор запросов), Папка (по названию Controller) и Запросы (описание каждого запроса, который нужно тестировать).
Здесь и далее речь идет о конфигурации Папки-коллекции и ее Запросов. Настройка авторизации в запросах по умолчанию находится в значении «Inherit auth from parent». Это значит, то мы можем для всех Запросов настроить авторизацию в их родительской Папке-коллекции.

По шагам

В данном случае используем авторизации типа Bearer Token. Необходимо перед каждым запросом, который есть в Папке-Коллекции выполнять предварительный запрос аутентификации для получения Токена. Токен из ответа сервера будет помещен в переменную MyToken. Значение переменной MyToken будет использовано как токен.

1. Выбрать Папку-Коллекцию PizzaWebApi.Web;

2. Выбрать таб с настройками «Authorization» (для текущей коллекции);

3. Выберем метод авторизации Type = «Bearer Token»;
4. Выберем Token = «{{MyToken}}» (без кавычек);

5. Выбрать таб Variables;
6. Создать переменную со значение baseUrl = «http://localhost:5118» (без кавычек, стандартный порт ASP Core);

7. Создать переменную MyToken без значения;

8. Выбрать таб Pre-request Script;

9. В пустое поле внести следующий код

pm.sendRequest({
    url: pm.variables.get('baseUrl') + "/api/login",
    method: 'POST',
    header: { 
        'content-type': 'application/json',
    },
    body: {
        mode: 'raw',
        raw: JSON.stringify({ "UserNameOrEmail": 'John', "Password": 'Aa123456' })
    }
}, function (err, res) {
    const jsonResponse = res.json();
    const newAccessToken = jsonResponse.token;
    pm.variables.set("MyToken", newAccessToken);
});

10. Нажать кнопку Save.

Чтобы проверить код скрипта нажмите кнопку Run. Детали исполнения запроса скрипта смотри в Консоли Postamn. Тестируемое API должно быть активно.

Выполните любой Request из этой коллекции и убедитесь, что метол login будет предварительно исполнен (см. скрин).


Опубликовано в Postman