If multiple chunks of data got queued up, the abort on data test would erroneously fail. Wait till the end of the tick before considering 'data' events as errors.
55 lines
1.1 KiB
JavaScript
55 lines
1.1 KiB
JavaScript
var Buffer = require('buffer').Buffer
|
|
var fs = require('fs')
|
|
var test = require('tape')
|
|
|
|
var http = require('../..')
|
|
|
|
test('abort before response', function (t) {
|
|
var req = http.get('/basic.txt', function (res) {
|
|
t.fail('unexpected response')
|
|
})
|
|
req.abort()
|
|
t.end()
|
|
})
|
|
|
|
test('abort on response', function (t) {
|
|
var req = http.get('/basic.txt', function (res) {
|
|
req.abort()
|
|
t.end()
|
|
|
|
res.on('end', function () {
|
|
t.fail('unexpected end')
|
|
})
|
|
|
|
res.on('data', function (data) {
|
|
t.fail('unexpected data')
|
|
})
|
|
})
|
|
})
|
|
|
|
test('abort on data', function (t) {
|
|
var req = http.get('/browserify.png?copies=5', function (res) {
|
|
var firstData = true
|
|
var failOnData = false
|
|
|
|
res.on('end', function () {
|
|
t.fail('unexpected end')
|
|
})
|
|
|
|
res.on('data', function (data) {
|
|
if (failOnData)
|
|
t.fail('unexpected data')
|
|
else if (firstData) {
|
|
firstData = false
|
|
req.abort()
|
|
t.end()
|
|
process.nextTick(function () {
|
|
// Wait for any data that may have been queued
|
|
// in the stream before considering data events
|
|
// as errors
|
|
failOnData = true
|
|
})
|
|
}
|
|
})
|
|
})
|
|
}) |