Я использую сторонний API с /places
конечной точкой, которая возвращает информацию о местах, где аутентифицированный пользователь имеет разрешения в виде JSON. Этот API использует JWT в качестве аутентификации, токен помещается в заголовок X-Auth-Token
.
В моем проекте есть служба, которая аутентифицируется для этого стороннего API с несколькими учетными записями пользователей. Один из моих тестовых примеров - тестирование этой службы, так что /places
вызывается дважды. Служба аутентифицируется в стороннем API и устанавливает токен на X-Auth-Token
перед запросом /places
.
Я пытался имитировать сторонний API следующим образом:
nock(apiUrl)
.matchHeaders("x-auth-token", firstToken)
.get(/places/)
.reply(200, placeList1);
nock(apiUrl)
.matchHeaders("x-auth-token", secondToken)
.get(/places/)
.reply(200, placeList2)
Но Нок выдает мне ошибку, что совпадения по запросу не найдено. Если я попробую
nock(apiUrl)
.matchHeaders("x-auth-token", (value) => {
console.log(value)
return value === firstToken;
})
.get(/places/)
.reply(200, placeList1);
Я вижу, что значение X-Auth-Token
является правильным для одного из запросов, но конечная точка по-прежнему не соответствует.
Я делаю что-то неправильно? Или возможно даже иметь несколько запросов к одному и тому же пути одной и той же области с разными ответами с помощью Nock? Поскольку моя служба использует обещания, я не могу полагаться на порядок, в котором создаются запросы.
Я использую request-promise-native
в своей службе и провожу тесты с Mocka.