45 lines
1.3 KiB
Plaintext
45 lines
1.3 KiB
Plaintext
|
var should = require('should')
|
||
|
var needle = require('./../')
|
||
|
|
||
|
describe('follow redirects when read_timeout is set', function () {
|
||
|
|
||
|
it('clear timeout before following redirect', function (done) {
|
||
|
var opts = {
|
||
|
open_timeout: 1000,
|
||
|
read_timeout: 3000,
|
||
|
follow: 5,
|
||
|
user_agent: 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36'
|
||
|
}
|
||
|
|
||
|
var timedOut = 0
|
||
|
var redirects = 0
|
||
|
|
||
|
var timer = setTimeout(function () {
|
||
|
var hasRedirects = redirects > 0
|
||
|
hasRedirects.should.equal(true)
|
||
|
done()
|
||
|
}, opts.read_timeout || 3000)
|
||
|
|
||
|
var resp = needle.get('http://google.com/', opts, function (err, resp, body) {
|
||
|
var noErr = err === null
|
||
|
var hasBody = body.length > 0
|
||
|
noErr.should.equal(true);
|
||
|
hasBody.should.equal(true);
|
||
|
});
|
||
|
|
||
|
resp.on('redirect', function (location) {
|
||
|
redirects++
|
||
|
// console.info(' Redirected to ', location)
|
||
|
})
|
||
|
|
||
|
resp.on('timeout', function (type) {
|
||
|
timedOut++
|
||
|
timedOut.should.equal(0)
|
||
|
// console.error(' ', type, 'timeout')
|
||
|
clearTimeout(timer)
|
||
|
done()
|
||
|
})
|
||
|
|
||
|
}).timeout(30000)
|
||
|
|
||
|
})
|