GT2/GT2-Android/node_modules/pac-resolver/test/test.js

240 lines
7.8 KiB
JavaScript

/**
* Module dependencies.
*/
var pac = require('../');
var assert = require('assert');
describe('FindProxyForURL', function () {
it('should return `undefined` by default', function (done) {
var FindProxyForURL = pac(
'function FindProxyForURL (url, host) {' +
' /* noop */' +
'}'
);
FindProxyForURL('http://foo.com/', 'foo.com', function (err, res) {
if (err) return done(err);
assert.strictEqual(undefined, res);
done();
});
});
it('should return the value that gets returned', function (done) {
var FindProxyForURL = pac(
'function FindProxyForURL (url, host) {' +
' return { foo: "bar" };' +
'}'
);
FindProxyForURL('http://foo.com/', 'foo.com', function (err, res) {
if (err) return done(err);
assert.deepEqual({ foo: 'bar' }, res);
done();
});
});
describe('official docs Example #1', function () {
var FindProxyForURL = pac(
'function FindProxyForURL(url, host) {' +
' if (isPlainHostName(host) ||' +
' dnsDomainIs(host, ".netscape.com"))' +
' return "DIRECT";' +
' else' +
' return "PROXY w3proxy.netscape.com:8080; DIRECT";' +
'}'
);
it('should return "DIRECT" for "localhost"', function (done) {
FindProxyForURL('http://localhost/hello', 'localhost', function (err, res) {
if (err) return done(err);
assert.equal('DIRECT', res);
done();
});
});
it('should return "DIRECT" for "foo.netscape.com"', function (done) {
FindProxyForURL('http://foo.netscape.com/', 'foo.netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('DIRECT', res);
done();
});
});
it('should return "PROXY …" for "google.com"', function (done) {
FindProxyForURL('http://google.com/t', 'google.com', function (err, res) {
if (err) return done(err);
assert.equal('PROXY w3proxy.netscape.com:8080; DIRECT', res);
done();
});
});
});
describe('official docs Example #1b', function () {
var FindProxyForURL = pac(
'function FindProxyForURL(url, host)' +
'{' +
' if ((isPlainHostName(host) ||' +
' dnsDomainIs(host, ".netscape.com")) &&' +
' !localHostOrDomainIs(host, "www.netscape.com") &&' +
' !localHostOrDomainIs(host, "merchant.netscape.com"))' +
' return "DIRECT";' +
' else' +
' return "PROXY w3proxy.netscape.com:8080; DIRECT";' +
'}'
);
it('should return "DIRECT" for "localhost"', function (done) {
FindProxyForURL('http://localhost/hello', 'localhost', function (err, res) {
if (err) return done(err);
assert.equal('DIRECT', res);
done();
});
});
it('should return "DIRECT" for "foo.netscape.com"', function (done) {
FindProxyForURL('http://foo.netscape.com/', 'foo.netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('DIRECT', res);
done();
});
});
it('should return "PROXY …" for "www.netscape.com"', function (done) {
FindProxyForURL('http://www.netscape.com/', 'www.netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('PROXY w3proxy.netscape.com:8080; DIRECT', res);
done();
});
});
it('should return "PROXY …" for "merchant.netscape.com"', function (done) {
FindProxyForURL('http://merchant.netscape.com/', 'merchant.netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('PROXY w3proxy.netscape.com:8080; DIRECT', res);
done();
});
});
});
describe('official docs Example #5', function () {
var FindProxyForURL = pac(
'function FindProxyForURL(url, host)' +
'{' +
' if (url.substring(0, 5) == "http:") {' +
' return "PROXY http-proxy.mydomain.com:8080";' +
' }' +
' else if (url.substring(0, 4) == "ftp:") {' +
' return "PROXY ftp-proxy.mydomain.com:8080";' +
' }' +
' else if (url.substring(0, 7) == "gopher:") {' +
' return "PROXY gopher-proxy.mydomain.com:8080";' +
' }' +
' else if (url.substring(0, 6) == "https:" ||' +
' url.substring(0, 6) == "snews:") {' +
' return "PROXY security-proxy.mydomain.com:8080";' +
' }' +
' else {' +
' return "DIRECT";' +
' }' +
'}'
);
it('should return "DIRECT" for "foo://netscape.com"', function (done) {
FindProxyForURL('foo://netscape.com/hello', 'netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('DIRECT', res);
done();
});
});
it('should return "PROXY http…" for "http://netscape.com"', function (done) {
FindProxyForURL('http://netscape.com/hello', 'netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('PROXY http-proxy.mydomain.com:8080', res);
done();
});
});
it('should return "PROXY ftp…" for "ftp://netscape.com"', function (done) {
FindProxyForURL('ftp://netscape.com/hello', 'netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('PROXY ftp-proxy.mydomain.com:8080', res);
done();
});
});
it('should return "PROXY gopher…" for "gopher://netscape.com"', function (done) {
FindProxyForURL('gopher://netscape.com/hello', 'netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('PROXY gopher-proxy.mydomain.com:8080', res);
done();
});
});
it('should return "PROXY security…" for "https://netscape.com"', function (done) {
FindProxyForURL('https://netscape.com/hello', 'netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('PROXY security-proxy.mydomain.com:8080', res);
done();
});
});
it('should return "PROXY security…" for "snews://netscape.com"', function (done) {
FindProxyForURL('snews://netscape.com/hello', 'netscape.com', function (err, res) {
if (err) return done(err);
assert.equal('PROXY security-proxy.mydomain.com:8080', res);
done();
});
});
});
describe('GitHub issue #3', function () {
var FindProxyForURL = pac(
'function FindProxyForURL(url, host) {\n' +
' if (isHostInAnySubnet(host, ["10.1.2.0", "10.1.3.0"], "255.255.255.0")) {\n' +
' return "HTTPS proxy.example.com";\n' +
' }\n' +
'\n' +
' if (isHostInAnySubnet(host, ["10.2.2.0", "10.2.3.0"], "255.255.255.0")) {\n' +
' return "HTTPS proxy.example.com";\n' +
' }\n' +
'\n' +
' // Everything else, go direct:\n' +
' return "DIRECT";\n' +
'}\n' +
'\n' +
'// Checks if the single host is within a list of subnets using the single mask.\n' +
'function isHostInAnySubnet(host, subnets, mask) {\n' +
' var subnets_length = subnets.length;\n' +
' for (i = 0; i < subnets_length; i++) {\n' +
' if (isInNet(host, subnets[i], mask)) {\n' +
' return true;\n' +
' }\n' +
' }\n' +
'}\n'
);
it('should return "HTTPS proxy.example.com" for "http://10.1.2.3/bar.html"', function (done) {
FindProxyForURL('http://10.1.2.3/bar.html', '10.1.2.3', function (err, res) {
if (err) return done(err);
assert.equal('HTTPS proxy.example.com', res);
done();
});
});
it('should return "DIRECT" for "http://foo.com/bar.html"', function (done) {
FindProxyForURL('http://foo.com/bar.html', 'foo.com', function (err, res) {
if (err) return done(err);
assert.equal('DIRECT', res);
done();
});
});
});
});