| // These tests are taken from http-browserify to ensure compatibility with |
| // that module |
| var test = require('tape') |
| var url = require('url') |
| |
| var location = 'http://localhost:8081/foo/123' |
| |
| var noop = function() {} |
| global.location = url.parse(location) |
| global.XMLHttpRequest = function() { |
| this.open = noop |
| this.send = noop |
| this.withCredentials = false |
| } |
| |
| var moduleName = require.resolve('../../') |
| delete require.cache[moduleName] |
| var http = require('../../') |
| |
| test('Make sure http object has correct properties', function (t) { |
| t.ok(http.Agent, 'Agent defined') |
| t.ok(http.ClientRequest, 'ClientRequest defined') |
| t.ok(http.ClientRequest.prototype, 'ClientRequest.prototype defined') |
| t.ok(http.IncomingMessage, 'IncomingMessage defined') |
| t.ok(http.IncomingMessage.prototype, 'IncomingMessage.prototype defined') |
| t.ok(http.METHODS, 'METHODS defined') |
| t.ok(http.STATUS_CODES, 'STATUS_CODES defined') |
| t.ok(http.get, 'get defined') |
| t.ok(http.globalAgent, 'globalAgent defined') |
| t.ok(http.request, 'request defined') |
| t.end() |
| }) |
| |
| test('Test simple url string', function(t) { |
| var testUrl = { path: '/api/foo' } |
| var request = http.get(testUrl, noop) |
| |
| var resolved = url.resolve(location, request._opts.url) |
| t.equal(resolved, 'http://localhost:8081/api/foo', 'Url should be correct') |
| t.end() |
| |
| }) |
| |
| test('Test full url object', function(t) { |
| var testUrl = { |
| host: "localhost:8081", |
| hostname: "localhost", |
| href: "http://localhost:8081/api/foo?bar=baz", |
| method: "GET", |
| path: "/api/foo?bar=baz", |
| pathname: "/api/foo", |
| port: "8081", |
| protocol: "http:", |
| query: "bar=baz", |
| search: "?bar=baz", |
| slashes: true |
| } |
| |
| var request = http.get(testUrl, noop) |
| |
| var resolved = url.resolve(location, request._opts.url) |
| t.equal(resolved, 'http://localhost:8081/api/foo?bar=baz', 'Url should be correct') |
| t.end() |
| }) |
| |
| test('Test alt protocol', function(t) { |
| var params = { |
| protocol: "foo:", |
| hostname: "localhost", |
| port: "3000", |
| path: "/bar" |
| } |
| |
| var request = http.get(params, noop) |
| |
| var resolved = url.resolve(location, request._opts.url) |
| t.equal(resolved, 'foo://localhost:3000/bar', 'Url should be correct') |
| t.end() |
| }) |
| |
| test('Test page with \'file:\' protocol', function (t) { |
| var params = { |
| hostname: 'localhost', |
| port: 3000, |
| path: '/bar' |
| } |
| |
| var fileLocation = 'file:///home/me/stuff/index.html' |
| |
| var normalLocation = global.location |
| global.location = url.parse(fileLocation) // Temporarily change the location |
| var request = http.get(params, noop) |
| global.location = normalLocation // Reset the location |
| |
| var resolved = url.resolve(fileLocation, request._opts.url) |
| t.equal(resolved, 'http://localhost:3000/bar', 'Url should be correct') |
| t.end() |
| }) |
| |
| test('Test string as parameters', function(t) { |
| var testUrl = '/api/foo' |
| var request = http.get(testUrl, noop) |
| |
| var resolved = url.resolve(location, request._opts.url) |
| t.equal(resolved, 'http://localhost:8081/api/foo', 'Url should be correct') |
| t.end() |
| }) |
| |
| test('Test withCredentials param', function(t) { |
| var url = '/api/foo' |
| |
| var request = http.get({ url: url, withCredentials: false }, noop) |
| t.equal(request._xhr.withCredentials, false, 'xhr.withCredentials should be false') |
| |
| var request = http.get({ url: url, withCredentials: true }, noop) |
| t.equal(request._xhr.withCredentials, true, 'xhr.withCredentials should be true') |
| |
| var request = http.get({ url: url }, noop) |
| t.equal(request._xhr.withCredentials, false, 'xhr.withCredentials should be false') |
| |
| t.end() |
| }) |
| |
| test('Test ipv6 address', function(t) { |
| var testUrl = 'http://[::1]:80/foo' |
| var request = http.get(testUrl, noop) |
| |
| var resolved = url.resolve(location, request._opts.url) |
| t.equal(resolved, 'http://[::1]:80/foo', 'Url should be correct') |
| t.end() |
| }) |
| |
| test('Test relative path in url', function(t) { |
| var params = { path: './bar' } |
| var request = http.get(params, noop) |
| |
| var resolved = url.resolve(location, request._opts.url) |
| t.equal(resolved, 'http://localhost:8081/foo/bar', 'Url should be correct') |
| t.end() |
| }) |
| |
| test('Cleanup', function (t) { |
| delete global.location |
| delete global.XMLHttpRequest |
| delete require.cache[moduleName] |
| t.end() |
| }) |