#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.