| // 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() | 
| }) |