2016-10-20 4 views
0

私は、クライアントがサーバーにs3バケットにファイルをアップロードする要求を送信し、サーバーが署名済みの要求を送り返してクライアントがこれを実行できるようにする方法を使用しています。テスト用にmocha/chaiを通してファイルをどのようにアップロードしますか?

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

誰もが、私はこのためにAPIエンドポイントのテストを書くことができる方法を知っています - 私はこのチュートリアルで、次のよ?私はそれがiPhoneのアプリだから私はクライアント側のコードをやっていないが、私はまだ私のテストで私のエンドポイントをテストしたい。あなたのリンクからそのようなコードに基づいて

答えて

0

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(); 
    }); 
}); 

完全統合テストはテストENVにAWSアカウントに依存しますように私は、ユニットテストを行うだろう。そのために私はreqs3.getSignedUrlを模倣し、正しいパラメータでgetSignedUrlが呼び出されることをテストします。また、正しいjsonが返されることを確認するために、模擬テストを追加します。

関連する問題