Jest Test failed on AWS S3 select[Finished]

Viewed 260

I'm focus on write a program for querying somethings by AWS S3 selectObjectContent uesd Typescript. But when I taked the unit test by jest, I don't know how to make the mock and test it.

There are my code:

import AWS from 'aws-sdk';
import {promisify} from 'util';

const params = {
  Bucket: bucket,
  Key: key,
  ExpressionType: 'SQL',
  Expression: query,
  InputSerialization: {
    JSON: {
      Type: 'DOCUMENT',
    }
  },
  OutputSerialization: {
    JSON: {
      RecordDelimiter: ','
    }
  }
}

const getDataUsingS3Select = async (params) => {
  const s3 = new AWS.S3();
  const s = promisify(s3.selectObjectContent).bind(s3);
  return new Promise((resolve, reject) => {
    s(params).then((data) => {
      if (!data) {
        return reject('Empty data object');
      }

      const payload = data.Payload;
      if (!paylaod || payload instanceof Array) {
        return reject('invalid payload');
      }

      const records = []
      payload.on('data', (event) => {
        if (event.Records) {
          records.push(event.Records.Payload);
        }
      });


      payload.on('error', (err) => {
        reject(err);
      });

      payload.on('end', () => {
        let planetString = Buffer.concat(records).toString('utf8');
        planetString = planetString.replace(/\,$/, '');
        planetString = `[${planetString}]`;
        try {
          const planetData = JSON.parse(planetString);
          resolve(planetData);
        } catch (e) {
          reject(new Error('error'));
        }
      });
    }).catch((err) => {
      reject(err);
    });
});
}

someone can tell me how to test this function?

0 Answers
Related