Я создаю решение, которое читает файл из корзины s3 в aws и записывает в местоположение sftp.Я использую следующий код, чтобы сделать это, однако, как мне выполнить модульное тестирование, в котором обещание будет отклонено. Как мне заглушить или смоделировать conn.on внутри функции?
const fileTransferToSftp = (s3Params, key) => {
return new Promise(function(resolve, reject) {
conn.on('error', err => {
console.log('SSH - Connection Error: ' + err);
conn.end();
reject(err);
});
conn.on('end', () => {
console.log('SSH - Connection Closed');
});
conn
.on('ready', () => {
conn.sftp((err, sftp) => {
if (err) reject(err);
const readStream = s3.getObject(s3Params).createReadStream();
const writeStream = sftp.createWriteStream(`/Inbox/${key}`);
writeStream.on('error', err => {
console.log('Error writing file: ' + err.message);
reject(err);
}); // 'path-to-remote-file.txt'
readStream.on('error', err => {
console.log('Error reading file: ' + err.message);
reject(err);
});
writeStream.on('close', () => {
console.log('- file transferred successfully');
resolve(conn.destroy());
});
writeStream.on('end', () => {
console.log('sftp connection closed');
conn.close();
});
// Initiate transfer of file
readStream.pipe(writeStream);
});
})
.connect(sftpCredentials);
});
};