Я пытаюсь использовать Supertest для отправки запроса POST на мой сервер аутентификации, ожидая JWT, который я планирую сохранить в переменной. Ниже приведен мой код tokenGrabber.js
:
const fs = require('fs')
const supertest = require('supertest-with-proxy')
const agent = supertest.agent('<URL-for-auth-token-provider>')
const token = fs.readFileSync('./token.txt', 'utf-8');
const cookie = `token=${token};path=/;domain=domainName;`
let newToken = {}
async function setNewToken(){
const resp = await agent
.post('/token')
.proxy('http://<proxy-host:8080>')
.set('Cookie', cookie)
.timeout(5000)
.expect(200)
.then(function (error, response) {
if(error) {
newToken = undefined
throw error}
else {
console.log(response)
let refreshedCookie = JSON.parse(response.JSON)
fs.writeFile('./token.txt', refreshedCookie.token, function (err) {
if (err) throw err;
console.log('Saved!');
})
newToken = refreshedCookie.token
console.log(newToken)
}
})
}
setNewToken()
console.log(newToken)
Моя цель - инициировать newToken
в случае успеха или undefined
в случае сбоя запроса. Когда я запускаю этот скрипт, используя node tokenGrabber.js
, он просто печатает пустой объект. (Я только пытаюсь напечатать это сейчас, потому что я отлаживаю это, я буду экспортировать переменную после того, как я уверен, что логика работает)
Полный вывод:
{}
(node:3340) UnhandledPromiseRejectionWarning: Error: expected 200 "OK", got 500 "Internal Server Error"
at Test._assertStatus (/node_modules/supertest-with-proxy/lib/test.js:269:12)
at Test._assertFunction (/node_modules/supertest-with-proxy/lib/test.js:284:11)
at Test.assert (/node_modules/supertest-with-proxy/lib/test.js:174:18)
at localAssert (/node_modules/supertest-with-proxy/lib/test.js:132:12)
at /node_modules/supertest-with-proxy/lib/test.js:129:5
at Test.Request.callback (/node_modules/superagent/lib/node/index.js:728:3)
at parser (/node_modules/superagent/lib/node/index.js:916:18)
at IncomingMessage.res.on (/node_modules/superagent/lib/node/parsers/json.js:19:7)
at IncomingMessage.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1145:12)
(node:3340) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:3340) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Вопрос: что я делаю не так? Если он выдает ошибку, почему он не меняет переменную на неопределенную? Пожалуйста, прокомментируйте, если есть более чистый способ сделать это, все еще используя supertest. Я очень новичок в NodeJS и в самой JS любая критика приветствуется.