Модульное тестирование S3 getObject с проблемой aws -sdk-mock при модульном тестировании - PullRequest
0 голосов
/ 15 апреля 2020

Я пишу модульный тест для 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 });
  }
});

Что мне здесь не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...