From e555ce9230efd3800f6bc466abd782ccf8de9c82 Mon Sep 17 00:00:00 2001 From: Tyler Stewart Date: Fri, 18 Aug 2017 12:04:51 -0600 Subject: [PATCH] test(stor): add failure test --- test/index.spec.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/index.spec.js b/test/index.spec.js index 416a75f..3bd6afc 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -1,5 +1,6 @@ /* eslint no-unused-expressions: 0 */ const {expect} = require('chai'); +const sinon = require('sinon'); const bunyan = require('bunyan'); const fs = require('fs'); @@ -10,10 +11,13 @@ before(() => require('dotenv').load()); describe('FtpServer', function () { this.timeout(2000); + let sandbox; let log = bunyan.createLogger({name: 'test'}); let server; let client; + let connection; + before(() => { server = new FtpServer(process.env.FTP_URL, { log, @@ -26,11 +30,18 @@ describe('FtpServer', function () { greeting: ['hello', 'world'] }); server.on('login', (data, resolve) => { + connection = data.connection; resolve({root: process.cwd()}); }); return server.listen(); }); + beforeEach(() => { + sandbox = sinon.sandbox.create(); + }); + afterEach(() => { + sandbox.restore(); + }); after(() => { server.close(); }); @@ -109,6 +120,22 @@ describe('FtpServer', function () { }); }); + it('STOR fail.txt', done => { + sandbox.stub(connection.fs, 'write').callsFake(function () { + const fsPath = './test/fail.txt'; + const stream = require('fs').createWriteStream(fsPath, {flags: 'w+'}); + stream.once('error', () => fs.unlink(fsPath)); + setTimeout(() => stream.emit('error', new Error('STOR fail test'), 1)); + return stream; + }); + const buffer = Buffer.from('test text file'); + client.put(buffer, 'fail.txt', err => { + expect(err).to.exist; + expect(fs.existsSync('./test/fail.txt')).to.equal(false); + done(); + }); + }); + it('STOR tést.txt', done => { const buffer = Buffer.from('test text file'); client.put(buffer, 'tést.txt', err => {