Модульный тест для под-метода, который вызывается из основного метода и включает авторизацию http-запроса - PullRequest
0 голосов
/ 13 июня 2018

Я столкнулся с действительно сложным сценарием, надеюсь вы, ребята, дадите мне подсказку.

Итак, у меня есть метод 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, но срок его действия уже истек, поэтому он бесполезен.

1 Ответ

0 голосов
/ 26 июня 2018

Когда вы тестируете модуль Api, вы можете смоделировать apiAuthorization для двух сценариев (true или false) и проверить, работает ли Api так, как ожидалось.Не беспокойтесь о том, что происходит внутри метода sub для тестов Api, так как здесь вы тестируете Api, и основное внимание не уделяется тому, что происходит внутри метода sub, apiAuthorization.

...