Я пишу модульный тест для S3 getObject. Я использовал aws -sdk-mock, но когда я запускаю его, у меня возникает проблема.
Error: the object {
"error": "InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records."
"status": false
} was thrown, throw an Error :)
Вот модульный тест, который я пишу:
const { expect } = require( 'chai' );
const utils = require( './s3Utils' );
const AWS = require( 'aws-sdk' );
const awsMock = require( 'aws-sdk-mock' );
const fs = require( 'fs' );
awsMock.setSDKInstance( AWS );
describe( 'S3 Utils', () => {
before(() => {
const rootPath = process.cwd();
awsMock.mock( 'S3', 'getObject', Buffer.from( fs.readFileSync( `${ rootPath }/file.js` )));
});
after(() => {
awsMock.restore( 'S3' );
});
it( 'Get the object from S3', async () => {
const result = await utils.getFilesFromS3( '/somepath' );
expect( result ).to.have.ownProperty( 'status' );
});
});
Вот функция, для которой я пишу модульный тест:
const { s3Handler, BUCKET } = require( './../../config/s3Config' );
exports.getFilesFromS3 =
( bucketPath, fileName = 'index.js', bucketName = BUCKET ) => new Promise(( resolve, reject ) => {
try {
const params = { Key: `${ bucketPath }/${ fileName }`, Bucket: bucketName };
s3Handler.getObject( params, ( error, data ) => {
if ( error ) {
reject({ status: false, error });
} else {
if (( data !== undefined || data !== null ) && Object.prototype.hasOwnProperty.call( data, 'Body' )) {
const contents = data.Body.toString( 'utf-8' );
resolve({ status: true, contents });
}
reject({ status: false, error: `No body present ${ bucketPath }/${ fileName }` });
}
});
} catch ( error ) {
reject({ status: false, error });
}
});
Что мне здесь не хватает?