UNPKG

rollbar

Version:

Effortlessly track and debug errors in your JavaScript applications with Rollbar. This package includes advanced error tracking features and an intuitive interface to help you identify and fix issues more quickly.

122 lines (119 loc) 4.57 kB
/* globals expect */ /* globals describe */ /* globals it */ /* globals sinon */ var url = require('../src/browser/url'); describe('parse', function () { it('should return an object full of nulls for a blank url', function () { var u = ''; var parsed = url.parse(u); expect(parsed).to.be.ok(); }); it('should get the protocol', function () { var http = 'http://something.com'; var parsedHttp = url.parse(http); expect(parsedHttp.protocol).to.eql('http:'); var file = 'file://something.com'; var parsedFile = url.parse(file); expect(parsedFile.protocol).to.eql('file:'); }); it('should get everything if it is there', function () { var u = 'https://me:you@fake.example.co.uk:85/a/path/object//with/crap?a=b&c=d#hashy!'; var p = url.parse(u); expect(p.protocol).to.eql('https:'); expect(p.auth).to.eql('me:you'); expect(p.host).to.eql('fake.example.co.uk:85'); expect(p.hostname).to.eql('fake.example.co.uk'); expect(p.port).to.eql(85); expect(p.path).to.eql('/a/path/object//with/crap?a=b&c=d'); expect(p.pathname).to.eql('/a/path/object//with/crap'); expect(p.search).to.eql('?a=b&c=d'); expect(p.query).to.eql('a=b&c=d'); expect(p.hash).to.eql('#hashy!'); }); it('should get stuff even if some things are missing', function () { var u = 'https://fake.example.co.uk/a/path/object//with/crap#hashy!'; var p = url.parse(u); expect(p.protocol).to.eql('https:'); expect(p.auth).to.not.be.ok(); expect(p.host).to.eql('fake.example.co.uk'); expect(p.hostname).to.eql('fake.example.co.uk'); expect(p.port).to.not.be.ok(); expect(p.path).to.eql('/a/path/object//with/crap'); expect(p.pathname).to.eql('/a/path/object//with/crap'); expect(p.search).to.not.be.ok(); expect(p.query).to.not.be.ok(); expect(p.hash).to.eql('#hashy!'); }); it('should get stuff even the path is missing', function () { var u = 'https://fake.example.co.uk#hashy!'; var p = url.parse(u); expect(p.protocol).to.eql('https:'); expect(p.auth).to.not.be.ok(); expect(p.host).to.eql('fake.example.co.uk'); expect(p.hostname).to.eql('fake.example.co.uk'); expect(p.port).to.not.be.ok(); expect(p.path).to.not.be.ok(); expect(p.pathname).to.not.be.ok(); expect(p.search).to.not.be.ok(); expect(p.query).to.not.be.ok(); expect(p.hash).to.eql('#hashy!'); }); it('should get stuff with a query and no path', function () { var u = 'https://fake.example.co.uk?a=b'; var p = url.parse(u); expect(p.protocol).to.eql('https:'); expect(p.auth).to.not.be.ok(); expect(p.host).to.eql('fake.example.co.uk'); expect(p.hostname).to.eql('fake.example.co.uk'); expect(p.port).to.not.be.ok(); expect(p.path).to.eql('?a=b'); expect(p.pathname).to.not.be.ok(); expect(p.search).to.eql('?a=b'); expect(p.query).to.eql('a=b'); expect(p.hash).to.not.be.ok(); }); it('should get stuff with a query and blank path', function () { var u = 'https://fake.example.co.uk/?a=b'; var p = url.parse(u); expect(p.protocol).to.eql('https:'); expect(p.auth).to.not.be.ok(); expect(p.host).to.eql('fake.example.co.uk'); expect(p.hostname).to.eql('fake.example.co.uk'); expect(p.port).to.not.be.ok(); expect(p.path).to.eql('/?a=b'); expect(p.pathname).to.eql('/'); expect(p.search).to.eql('?a=b'); expect(p.query).to.eql('a=b'); expect(p.hash).to.not.be.ok(); }); it('should get stuff with a missing protocol', function () { var u = '//fake.example.co.uk/v1/#hashash'; var p = url.parse(u); expect(p.protocol).to.not.be.ok(); expect(p.auth).to.not.be.ok(); expect(p.host).to.eql('fake.example.co.uk'); expect(p.hostname).to.eql('fake.example.co.uk'); expect(p.port).to.not.be.ok(); expect(p.path).to.eql('/v1/'); expect(p.pathname).to.eql('/v1/'); expect(p.search).to.not.be.ok(); expect(p.query).to.not.be.ok(); expect(p.hash).to.eql('#hashash'); }); it('should handle missing protocol without slashes', function () { var u = 'api.rollbar.com/api/1'; var p = url.parse(u); expect(p.protocol).to.not.be.ok(); expect(p.host).to.eql('api.rollbar.com'); expect(p.hostname).to.eql('api.rollbar.com'); expect(p.path).to.eql('/api/1'); expect(p.pathname).to.eql('/api/1'); expect(p.auth).to.not.be.ok(); expect(p.port).to.not.be.ok(); expect(p.search).to.not.be.ok(); expect(p.query).to.not.be.ok(); expect(p.hash).to.not.be.ok(); }); });