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?