mirror of
https://github.com/nioc/xmpp-bot.git
synced 2024-12-04 22:23:36 +01:00
Add timeout to outgoing webhook (default: 5000 ms)
This commit is contained in:
parent
003ab013d3
commit
18f8df74c0
4 changed files with 32 additions and 1 deletions
|
@ -84,6 +84,7 @@
|
||||||
{
|
{
|
||||||
"code": "w1",
|
"code": "w1",
|
||||||
"url": "https://domain.ltd:port/path/resource?parameter1=value1",
|
"url": "https://domain.ltd:port/path/resource?parameter1=value1",
|
||||||
|
"timeout": 500,
|
||||||
"strictSSL": true,
|
"strictSSL": true,
|
||||||
"contentType": "application/json",
|
"contentType": "application/json",
|
||||||
"authMethod": "basic",
|
"authMethod": "basic",
|
||||||
|
|
|
@ -67,6 +67,7 @@ module.exports = async (logger, config, xmpp, user, destination, message, type,
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
options.timeout = webhook.timeout || 5000
|
||||||
logger.trace('Outgoing webhook options:', options)
|
logger.trace('Outgoing webhook options:', options)
|
||||||
try {
|
try {
|
||||||
const { statusCode, body } = await request(options)
|
const { statusCode, body } = await request(options)
|
||||||
|
|
|
@ -124,6 +124,17 @@
|
||||||
"user": null,
|
"user": null,
|
||||||
"password": null,
|
"password": null,
|
||||||
"bearer": null
|
"bearer": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "timeout-error",
|
||||||
|
"url": "https://domain.ltd:port/path/timeout-error",
|
||||||
|
"timeout": 500,
|
||||||
|
"strictSSL": true,
|
||||||
|
"contentType": "application/json",
|
||||||
|
"authMethod": null,
|
||||||
|
"user": null,
|
||||||
|
"password": null,
|
||||||
|
"bearer": null
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ const nock = require('nock')
|
||||||
const Outgoing = require('./../lib/outgoing')
|
const Outgoing = require('./../lib/outgoing')
|
||||||
|
|
||||||
describe('Outgoing webhook component', () => {
|
describe('Outgoing webhook component', () => {
|
||||||
let logger, config, xmppSendStub, xmpp, scope, scopeUnauthorized, scopeWithError, reqSpy
|
let logger, config, xmppSendStub, xmpp, scope, scopeUnauthorized, scopeWithError, scopeWithTimeout, reqSpy
|
||||||
|
|
||||||
before('Setup', () => {
|
before('Setup', () => {
|
||||||
// create default logger
|
// create default logger
|
||||||
|
@ -50,6 +50,12 @@ describe('Outgoing webhook component', () => {
|
||||||
.replyWithError('error in request')
|
.replyWithError('error in request')
|
||||||
scopeWithError.on('request', reqSpy)
|
scopeWithError.on('request', reqSpy)
|
||||||
|
|
||||||
|
scopeWithTimeout = nock('https://domain.ltd:port')
|
||||||
|
.post('/path/timeout-error')
|
||||||
|
.delay(1000)
|
||||||
|
.reply(200, { reply: 'This is a reply' })
|
||||||
|
scopeWithTimeout.on('request', reqSpy)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -131,4 +137,16 @@ describe('Outgoing webhook component', () => {
|
||||||
sinon.assert.calledOnce(reqSpy)
|
sinon.assert.calledOnce(reqSpy)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('POST with timeout', () => {
|
||||||
|
it('Should handle error and throw an exception', async () => {
|
||||||
|
try {
|
||||||
|
await Outgoing(logger, config, xmpp, 'user', 'destination', 'This a second message', 'type', 'timeout-error')
|
||||||
|
should.fail(0, 1, 'Exception not thrown')
|
||||||
|
} catch (error) {
|
||||||
|
error.message.should.equal('ESOCKETTIMEDOUT')
|
||||||
|
}
|
||||||
|
sinon.assert.calledOnce(reqSpy)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue