node-http-proxy/test/lib-caronte-passes-ws-test.js

88 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var caronte = require('../lib/caronte/passes/ws'),
expect = require('expect.js');
describe('lib/caronte/passes/ws.js', function () {
describe('#checkMethodAndHeader', function () {
it('should drop non-GET connections', function () {
var endCalled = false,
stubRequest = {
method: 'DELETE',
headers: {},
end: function () {
// Simulate Stream.end() method when call
endCalled = true;
}
},
returnValue = caronte.checkMethodAndHeader(stubRequest, {}, {});
expect(returnValue).to.be(true);
expect(endCalled).to.be(true);
})
it('should drop connections when no upgrade header', function () {
var endCalled = false,
stubRequest = {
method: 'GET',
headers: {},
end: function () {
// Simulate Stream.end() method when call
endCalled = true;
}
},
returnValue = caronte.checkMethodAndHeader(stubRequest, {}, {});
expect(returnValue).to.be(true);
expect(endCalled).to.be(true);
})
it('should drop connections when upgrade header is different of `websocket`', function () {
var endCalled = false,
stubRequest = {
method: 'GET',
headers: {
upgrade: 'anotherprotocol'
},
end: function () {
// Simulate Stream.end() method when call
endCalled = true;
}
},
returnValue = caronte.checkMethodAndHeader(stubRequest, {}, {});
expect(returnValue).to.be(true);
expect(endCalled).to.be(true);
})
it('should return nothing when all is ok', function () {
var endCalled = false,
stubRequest = {
method: 'GET',
headers: {
upgrade: 'websocket'
},
end: function () {
// Simulate Stream.end() method when call
endCalled = true;
}
},
returnValue = caronte.checkMethodAndHeader(stubRequest, {}, {});
expect(returnValue).to.be(undefined);
expect(endCalled).to.be(false);
})
});
describe('#XHeaders', function () {
// var stubRequest = {
// connection: {
// remoteAddress: '192.168.1.2',
// remotePort: '8080'
// },
// headers: {}
// }
// it('set the correct x-forwarded-* headers', function () {
// caronte.XHeaders(stubRequest, {}, { xfwd: true });
// expect(stubRequest.headers['x-forwarded-for']).to.be('192.168.1.2');
// expect(stubRequest.headers['x-forwarded-port']).to.be('8080');
// expect(stubRequest.headers['x-forwarded-proto']).to.be('http');
// });
});
});