Как бы вы загрузили файл через mocha / chai для тестирования?

#node.js #amazon-web-services #testing #mocha.js #chai

#node.js #amazon-веб-сервисы #тестирование #mocha.js #чай

Вопрос:

Я использую метод, при котором клиент отправляет запрос серверу на загрузку файла в корзину s3, а затем сервер отправляет обратно подписанный запрос, чтобы разрешить клиенту это сделать. Я следую этому руководству —

https://devcenter.heroku.com/articles/s3-upload-node

Кто-нибудь знает, как я могу написать тест конечной точки API для этого? Я не использую код на стороне клиента, поскольку это приложение для iPhone, но я все еще хочу протестировать свою конечную точку в своих тестах.

Ответ №1:

Основываясь на подобном коде по вашей ссылке :

 app.get('/sign-s3', (req, res) => {
  const s3 = new aws.S3();
  const fileName = req.query['file-name'];
  const fileType = req.query['file-type'];
  const s3Params = {
    Bucket: S3_BUCKET,
    Key: fileName,
    Expires: 60,
    ContentType: fileType,
    ACL: 'public-read'
  };

  s3.getSignedUrl('putObject', s3Params, (err, data) => {
    if(err){
      console.log(err);
      return res.end();
    }
    const returnData = {
      signedRequest: data,
      url: `https://${S3_BUCKET}.s3.amazonaws.com/${fileName}`
    };
    res.write(JSON.stringify(returnData));
    res.end();
  });
});
  

Я бы провел модульный тест, поскольку полный интеграционный тест будет зависеть от вашей учетной записи aws в тестовой среде. Для этого я бы смоделировал req и s3.getSignedUrl и проверил, что getSignedUrl вызывается с правильными параметрами. Я бы также добавил тест, все еще с mock, чтобы убедиться, что возвращается правильный json.