mirror of
https://github.com/wu736139669/ASHEBShop-h5.git
synced 2026-08-05 05:55:36 +00:00
222 lines
5.3 KiB
JavaScript
222 lines
5.3 KiB
JavaScript
var assert = require('assert');
|
|
var https = require('https');
|
|
var http = require('http');
|
|
var util = require('util');
|
|
var transport = require('spdy-transport');
|
|
|
|
var fixtures = require('./fixtures');
|
|
var spdy = require('../');
|
|
|
|
describe('SPDY Client', function() {
|
|
describe('regular', function() {
|
|
fixtures.everyConfig(function(protocol, npn, version, plain) {
|
|
var server;
|
|
var agent;
|
|
var hmodule;
|
|
|
|
beforeEach(function(done) {
|
|
hmodule = plain ? http : https;
|
|
|
|
var options = util._extend({
|
|
spdy: {
|
|
plain: plain
|
|
}
|
|
}, fixtures.keys);
|
|
server = spdy.createServer(options, function(req, res) {
|
|
var body = '';
|
|
req.on('data', function(chunk) {
|
|
body += chunk;
|
|
});
|
|
req.on('end', function() {
|
|
res.writeHead(200, req.headers);
|
|
res.addTrailers({ trai: 'ler' });
|
|
|
|
var push = res.push('/push', {
|
|
request: {
|
|
push: 'yes'
|
|
}
|
|
}, function(err) {
|
|
assert(!err);
|
|
|
|
push.end('push');
|
|
push.on('error', function() {
|
|
});
|
|
|
|
res.end(body || 'okay');
|
|
});
|
|
});
|
|
});
|
|
|
|
server.listen(fixtures.port, function() {
|
|
agent = spdy.createAgent({
|
|
rejectUnauthorized: false,
|
|
port: fixtures.port,
|
|
spdy: {
|
|
plain: plain,
|
|
protocol: plain ? npn : null,
|
|
protocols: [ npn ]
|
|
}
|
|
});
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
afterEach(function(done) {
|
|
var waiting = 2;
|
|
agent.close(next);
|
|
server.close(next);
|
|
|
|
function next() {
|
|
if (--waiting === 0)
|
|
done();
|
|
}
|
|
});
|
|
|
|
it('should send GET request', function(done) {
|
|
var req = hmodule.request({
|
|
agent: agent,
|
|
|
|
method: 'GET',
|
|
path: '/get',
|
|
headers: {
|
|
a: 'b'
|
|
}
|
|
}, function(res) {
|
|
assert.equal(res.statusCode, 200);
|
|
assert.equal(res.headers.a, 'b');
|
|
|
|
fixtures.expectData(res, 'okay', done);
|
|
});
|
|
req.end();
|
|
});
|
|
|
|
it('should send POST request', function(done) {
|
|
var req = hmodule.request({
|
|
agent: agent,
|
|
|
|
method: 'POST',
|
|
path: '/post',
|
|
|
|
headers: {
|
|
post: 'headers'
|
|
}
|
|
}, function(res) {
|
|
assert.equal(res.statusCode, 200);
|
|
assert.equal(res.headers.post, 'headers');
|
|
|
|
fixtures.expectData(res, 'post body', done);
|
|
});
|
|
|
|
agent._spdyState.socket.once(plain ? 'connect' : 'secureConnect',
|
|
function() {
|
|
req.end('post body');
|
|
});
|
|
});
|
|
|
|
it('should receive PUSH_PROMISE', function(done) {
|
|
var req = hmodule.request({
|
|
agent: agent,
|
|
|
|
method: 'GET',
|
|
path: '/get'
|
|
}, function(res) {
|
|
assert.equal(res.statusCode, 200);
|
|
|
|
res.resume();
|
|
});
|
|
req.on('push', function(push) {
|
|
assert.equal(push.path, '/push');
|
|
assert.equal(push.headers.push, 'yes');
|
|
|
|
push.resume();
|
|
push.once('end', done);
|
|
});
|
|
req.end();
|
|
});
|
|
|
|
it('should receive trailing headers', function(done) {
|
|
var req = hmodule.request({
|
|
agent: agent,
|
|
|
|
method: 'GET',
|
|
path: '/get'
|
|
}, function(res) {
|
|
assert.equal(res.statusCode, 200);
|
|
|
|
res.on('trailers', function(headers) {
|
|
assert.equal(headers.trai, 'ler');
|
|
fixtures.expectData(res, 'okay', done);
|
|
});
|
|
});
|
|
req.end();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('x-forwarded-for', function() {
|
|
fixtures.everyConfig(function(protocol, npn, version, plain) {
|
|
var server;
|
|
var agent;
|
|
var hmodule;
|
|
|
|
beforeEach(function(done) {
|
|
hmodule = plain ? http : https;
|
|
|
|
var options = util._extend({
|
|
spdy: {
|
|
plain: plain,
|
|
'x-forwarded-for': true
|
|
}
|
|
}, fixtures.keys);
|
|
server = spdy.createServer(options, function(req, res) {
|
|
res.writeHead(200, req.headers);
|
|
res.end();
|
|
});
|
|
|
|
server.listen(fixtures.port, function() {
|
|
agent = spdy.createAgent({
|
|
rejectUnauthorized: false,
|
|
port: fixtures.port,
|
|
spdy: {
|
|
'x-forwarded-for': '1.2.3.4',
|
|
plain: plain,
|
|
protocol: plain ? npn : null,
|
|
protocols: [ npn ]
|
|
}
|
|
});
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
afterEach(function(done) {
|
|
var waiting = 2;
|
|
agent.close(next);
|
|
server.close(next);
|
|
|
|
function next() {
|
|
if (--waiting === 0)
|
|
done();
|
|
}
|
|
});
|
|
|
|
it('should send x-forwarded-for', function(done) {
|
|
var req = hmodule.request({
|
|
agent: agent,
|
|
|
|
method: 'GET',
|
|
path: '/get'
|
|
}, function(res) {
|
|
assert.equal(res.statusCode, 200);
|
|
assert.equal(res.headers['x-forwarded-for'], '1.2.3.4');
|
|
|
|
res.resume();
|
|
res.once('end', done);
|
|
});
|
|
req.end();
|
|
});
|
|
});
|
|
});
|
|
});
|