Я столкнулся с действительно сложным сценарием, надеюсь вы, ребята, дадите мне подсказку.
Итак, у меня есть метод main, который является конечной точкой API, этот метод вызывает другой метод, чтобы проверить, авторизован ли пользователь использовать эту конечную точку или нет.Субконечная точка, которую я назвал apiAuthoramation, отправляет запрос get на URL-адрес третьего лица, а этот сторонний ответ возвращает ответ, в котором говорится, авторизован этот пользователь или нет!
Итак, у меня уже есть юнит-тест для основного метода, но теперь я хочу добавить к нему эту часть авторизации.Я знаю, что могу использовать грязные библиотеки, такие как Nock или другие подобные библиотеки, но моя проблема в том, как я могу добавить этот суб-метод в свой тест uit.
Это мой метод конечной точки API:
module.exports.api = (event, context, callback) => {
// Authorization
let getBearertoken = event.headers.Authorization.replace("Bearer ", '');
let isAuhtorized = utilities.apiAuthorazation(getBearertoken);
//Some other Codes
}
Как вы можете видеть, я передал токен на предъявителя своему под-методу, и метод apiAuthorazing отправит этот токен стороннему API, и метод будет таким:
module.exports.apiAuthorazation = function (token){
let url = process.env.authApiUrl
requestLib(`${url}/${token}`, function (error, response, body) {
if (error) console.log('Error while checking token :', error);
if(response.isValidUser){
return true;
}
else{
return false;
}
});
}
Теперь мой вопрос: как я могу включить этот суб-метод в мой основной метод модульного теста?Я использую mocha и chai для модульного тестирования, потому что токен для berear скоро истечет, поэтому, когда я запускаю тест, я отправляю пример события, в котором есть токен berear, но срок его действия уже истек, поэтому он бесполезен.