From bc29abc39fa86adab4b8e56f6ba41a11a4d5fa86 Mon Sep 17 00:00:00 2001 From: jinqiming Date: Sat, 16 Mar 2019 03:50:06 +0800 Subject: [PATCH] improve --- lib/msghandler.js | 6 +++-- test/test-getDownloadSlaveFn.js | 46 +++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/lib/msghandler.js b/lib/msghandler.js index 5f95303..d5d79f1 100644 --- a/lib/msghandler.js +++ b/lib/msghandler.js @@ -84,9 +84,10 @@ function getDownloadFn (filename, msgId, interfaceUrl, headers = {}) { return new Promise( (resolve, reject) => self.s0(options) + .on('error', () => resolve(false)) // pipe input error .pipe(fs.createWriteStream(filename, { autoClose: true })) .on('finish', () => resolve(true)) - .on('error', () => resolve(false)) // how to ut it? + .on('error', () => resolve(false)) // pipe output error ) } } @@ -110,9 +111,10 @@ function getDownloadSlaveFn (filename, msgId, interfaceUrl = 'webwxgetmsgimg', h return new Promise( (resolve, reject) => self.s0(options) + .on('error', () => resolve(false)) // pipe input error .pipe(fs.createWriteStream(filename, { autoClose: true })) .on('finish', () => resolve(true)) - .on('error', () => resolve(false)) // how to ut it? + .on('error', () => resolve(false)) // pipe output error ) } } diff --git a/test/test-getDownloadSlaveFn.js b/test/test-getDownloadSlaveFn.js index 183485a..136b652 100644 --- a/test/test-getDownloadSlaveFn.js +++ b/test/test-getDownloadSlaveFn.js @@ -1,6 +1,7 @@ 'use strict' let log4js = require('log4js') +let fs = require('fs') let logger = log4js.getLogger('chatwe') var http = require('http') var Wechat = require('../index') @@ -25,6 +26,13 @@ var s = http.createServer(function (req, res) { if (req.url.startsWith('/xyz')) { res.end(ret) } + if (req.url.startsWith('/timeout')) { + setTimeout(function () { + res.writeHead(200, { 'content-type': 'text/plain' }) + res.write('waited') + res.end() + }, 200) + } }) test('setup', function (t) { @@ -40,17 +48,55 @@ test('setup', function (t) { test('wechat getDownloadSlaveFn 1', async function (t) { wechat.loginInfo['url'] = Config.BASE_URL wechat.loginInfo['User'] = {} + fname = '/tmp/a' let resp = await (wechat.getDownloadSlaveFn(fname, 111))() t.equal(resp, true) }) +test('wechat getDownloadSlaveFn 2', async function (t) { + wechat.loginInfo['url'] = Config.BASE_URL + wechat.loginInfo['User'] = {} + fname = '/tmp' + let resp = await (wechat.getDownloadSlaveFn(fname, 111))() + t.equal(resp, false) +}) + test('wechat getDownloadFn 1', async function (t) { wechat.loginInfo['url'] = Config.BASE_URL wechat.loginInfo['User'] = {} + fname = '/tmp/a' let resp = await (wechat.getDownloadFn(fname, 111, 'xyz'))() t.equal(resp, true) }) +test('wechat getDownloadFn 2', async function (t) { + wechat.loginInfo['url'] = Config.BASE_URL + wechat.loginInfo['User'] = {} + fname = '/tmp' + let resp = await (wechat.getDownloadFn(fname, 111, 'xyz'))() + t.equal(resp, false) +}) + +async function testPipe () { + var shouldTimeout = { + url: 'http://127.0.0.1:12345/timeout', + timeout: 100 + } + fname = '/tmp' + return new Promise( + (resolve, reject) => wechat.s0(shouldTimeout) + .on('error', () => resolve(false)) + .pipe(fs.createWriteStream(fname, { autoClose: true })) + .on('finish', () => resolve(true)) + .on('error', () => resolve(false)) + ) +} + +test('wechat testerror 1', async function (t) { + let resp = await testPipe() + t.equal(resp, false) +}) + test('cleanup', function (t) { s.close(function () { t.end()