mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-09-01 02:14:16 +07:00
Improve code quality and write tests
This commit is contained in:
404
node_modules/urlgrey/test/index.js
generated
vendored
Normal file
404
node_modules/urlgrey/test/index.js
generated
vendored
Normal file
@ -0,0 +1,404 @@
|
||||
var isBrowser = !(typeof module !== 'undefined' && module.exports);
|
||||
if (!isBrowser){
|
||||
// non-browser code
|
||||
var chai = require('chai');
|
||||
chai.should();
|
||||
var urlgrey = require('../index');
|
||||
}
|
||||
|
||||
describe("urlgrey", function(){
|
||||
describe("chainability", function(){
|
||||
it("doesn't over-write the original url", function(){
|
||||
var urlStr = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
var url = urlgrey(urlStr);
|
||||
url.hostname('asdf.com')
|
||||
.toString().should.equal("https://user:pass@asdf.com/path?asdf=1234#frag");
|
||||
url.port(8080);
|
||||
url.protocol('http');
|
||||
url.username('http');
|
||||
url.password('http');
|
||||
url.path('http');
|
||||
url.hash('http');
|
||||
url.queryString('http=1234');
|
||||
url.query(false);
|
||||
url.extendedPath("/asdf?qwer=asdf#swqertwert23");
|
||||
url.toString().should.equal(urlStr); // original object is unmodified
|
||||
});
|
||||
});
|
||||
describe("#toJSON", function(){
|
||||
it("returns the same thing as toString", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).toJSON().should.equal(urlgrey(url).toString());
|
||||
});
|
||||
});
|
||||
describe("#hostname", function(){
|
||||
it("gets the hostname", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).hostname().should.equal('subdomain.asdf.com');
|
||||
});
|
||||
if (isBrowser){
|
||||
it("gets the hostname even if unset", function(){
|
||||
var url = "/path?asdf=1234#frag";
|
||||
var u = urlgrey(url);
|
||||
if (u.protocol() === 'file'){
|
||||
// chrome uses localhost. other browsers don't
|
||||
chai.expect((u.hostname() === '') || (u.hostname() === 'localhost')).to.eql(true);
|
||||
} else {
|
||||
chai.expect(u.hostname()).to.equal(window.location.hostname + '');
|
||||
}
|
||||
});
|
||||
}
|
||||
it("sets the hostname", function(){
|
||||
var url = "http://subdomain.asdf.com";
|
||||
urlgrey(url).hostname("blah")
|
||||
.toString().should.equal('http://blah');
|
||||
});
|
||||
});
|
||||
describe("#port", function(){
|
||||
it("gets the port", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com:9090";
|
||||
urlgrey(url).port().should.equal(9090);
|
||||
});
|
||||
it("gets a correct default port when it's missing", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com";
|
||||
urlgrey(url).port().should.equal(443);
|
||||
});
|
||||
it("omits the port when it's 80", function(){
|
||||
var url = "http://subdomain.asdf.com:9090";
|
||||
urlgrey(url).port(80)
|
||||
.toString().should.equal('http://subdomain.asdf.com');
|
||||
});
|
||||
it("sets the port", function(){
|
||||
var url = "https://subdomain.asdf.com";
|
||||
urlgrey(url).port(9090)
|
||||
.toString().should.equal('https://subdomain.asdf.com:9090');
|
||||
});
|
||||
});
|
||||
describe("#rawPath", function(){
|
||||
it("gets the path", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).rawPath().should.equal('/path');
|
||||
});
|
||||
it("sets the path", function(){
|
||||
var url = "https://subdomain.asdf.com";
|
||||
urlgrey(url).rawPath("blah")
|
||||
.toString().should.equal('https://subdomain.asdf.com/blah');
|
||||
});
|
||||
it("does not encode pieces of the path", function(){
|
||||
var url = "https://subdomain.asdf.com";
|
||||
urlgrey(url).rawPath("not encode here", "and/not/here")
|
||||
.toString().should.equal('https://subdomain.asdf.com/not encode here/and/not/here');
|
||||
});
|
||||
it ("sets the path from strings and arrays of strings", function(){
|
||||
var url = "https://asdf.com";
|
||||
urlgrey(url).rawPath(['qwer', '/asdf'], 'qwer/1234/', '/1234/')
|
||||
.toString().should.equal('https://asdf.com/qwer/asdf/qwer/1234/1234');
|
||||
});
|
||||
});
|
||||
describe("#path", function(){
|
||||
it("gets the path", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).path().should.equal('/path');
|
||||
});
|
||||
it("sets the path", function(){
|
||||
var url = "https://subdomain.asdf.com";
|
||||
urlgrey(url).path("blah")
|
||||
.toString().should.equal('https://subdomain.asdf.com/blah');
|
||||
});
|
||||
it("url encodes pieces of the path, but not slashes", function(){
|
||||
var url = "https://subdomain.asdf.com";
|
||||
urlgrey(url).path("encode here", "but/not/here")
|
||||
.toString().should.equal('https://subdomain.asdf.com/encode%20here/but/not/here');
|
||||
});
|
||||
it ("sets the path from strings and arrays of strings", function(){
|
||||
var url = "https://asdf.com";
|
||||
urlgrey(url).path(['qwer', '/asdf'], 'qwer/1234/', '/1234/')
|
||||
.toString().should.equal('https://asdf.com/qwer/asdf/qwer/1234/1234');
|
||||
});
|
||||
});
|
||||
describe("#hash", function(){
|
||||
it("gets the hash", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).hash().should.equal('frag');
|
||||
});
|
||||
it("sets the hash", function(){
|
||||
var url = "https://subdomain.asdf.com";
|
||||
urlgrey(url).hash("blah")
|
||||
.toString().should.equal('https://subdomain.asdf.com#blah');
|
||||
});
|
||||
});
|
||||
describe("#password", function(){
|
||||
it("gets the password", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).password().should.equal('pass');
|
||||
});
|
||||
it("sets the password", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com";
|
||||
urlgrey(url).password("blah")
|
||||
.toString().should.equal('https://user:blah@subdomain.asdf.com');
|
||||
});
|
||||
});
|
||||
describe("#username", function(){
|
||||
it("gets the username", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).username().should.equal('user');
|
||||
});
|
||||
it("sets the username", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com";
|
||||
urlgrey(url).username("blah")
|
||||
.toString().should.equal('https://blah:pass@subdomain.asdf.com');
|
||||
});
|
||||
});
|
||||
describe("#parent", function(){
|
||||
it("returns the second-last item in the path if there is no input", function(){
|
||||
var url = "http://asdf.com/path/kid?asdf=1234#frag";
|
||||
urlgrey(url).parent()
|
||||
.toString().should.equal('http://asdf.com/path');
|
||||
});
|
||||
it("ignores a trailing slash", function(){
|
||||
var url = "http://asdf.com/path/kid/?asdf=1234#frag";
|
||||
urlgrey(url).parent()
|
||||
.toString().should.equal('http://asdf.com/path');
|
||||
});
|
||||
it("throws an exception when no parent path exists", function(){
|
||||
var url = "http://asdf.com/";
|
||||
try {
|
||||
urlgrey(url).parent();
|
||||
should.fail("expected exception was not raised.");
|
||||
} catch (ex){
|
||||
ex.message.should.equal('The current path has no parent path');
|
||||
}
|
||||
});
|
||||
});
|
||||
describe("#extendedPath", function(){
|
||||
it("returns the part of the url after the host:port", function(){
|
||||
var url = "http://asdf.com:8080/path?asdf=1234#frag";
|
||||
urlgrey(url).extendedPath().should.equal('/path?asdf=1234#frag');
|
||||
});
|
||||
it("lets you set the part of the url after the host:port", function(){
|
||||
var url = "http://asdf.com:8080/path?asdf=1234#frag";
|
||||
urlgrey(url).extendedPath('/asdf?qwer=1234#fraggle').toString()
|
||||
.should.equal('http://asdf.com:8080/asdf?qwer=1234#fraggle');
|
||||
});
|
||||
});
|
||||
describe("#rawChild", function(){
|
||||
it("returns a url with the given path suffix added", function(){
|
||||
var url = "http://asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).rawChild('{kid here}')
|
||||
.toString().should.equal('http://asdf.com/path/{kid here}');
|
||||
});
|
||||
it("returns a url with the given path suffixes added, without escaping", function(){
|
||||
var url = "http://asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).rawChild('{kid here}', '{and here}')
|
||||
.toString().should.equal('http://asdf.com/path/{kid here}/{and here}');
|
||||
});
|
||||
it("returns the last item in the path if there is no input", function(){
|
||||
var url = "http://asdf.com/path/kid?asdf=1234#frag";
|
||||
urlgrey(url).rawChild().should.equal('kid');
|
||||
});
|
||||
it("ignores a trailing slash", function(){
|
||||
var url = "http://asdf.com/path/kid/?asdf=1234#frag";
|
||||
urlgrey(url).rawChild().should.equal('kid');
|
||||
});
|
||||
});
|
||||
describe("#child", function(){
|
||||
it("returns a url with the given path suffix added", function(){
|
||||
var url = "http://asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).child('kid here')
|
||||
.toString().should.equal('http://asdf.com/path/kid%20here');
|
||||
});
|
||||
it("returns a url with the given path suffixes added", function(){
|
||||
var url = "http://asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).child('kid here', 'and here')
|
||||
.toString().should.equal('http://asdf.com/path/kid%20here/and%20here');
|
||||
});
|
||||
it("returns a url with the given path suffix added even if it's 0", function(){
|
||||
var url = "http://asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).child(0)
|
||||
.toString().should.equal('http://asdf.com/path/0');
|
||||
});
|
||||
it("returns the last item in the path if there is no input", function(){
|
||||
var url = "http://asdf.com/path/kid?asdf=1234#frag";
|
||||
urlgrey(url).child().should.equal('kid');
|
||||
});
|
||||
it("ignores a trailing slash", function(){
|
||||
var url = "http://asdf.com/path/kid/?asdf=1234#frag";
|
||||
urlgrey(url).child().should.equal('kid');
|
||||
});
|
||||
it("url-decodes the child if it's encoded", function(){
|
||||
var url = "http://asdf.com/path/the%20kid";
|
||||
urlgrey(url).child().should.equal('the kid');
|
||||
});
|
||||
it("url-encodes the child if necessary", function(){
|
||||
var url = "http://asdf.com/path/";
|
||||
urlgrey(url).child('the kid').toString().should.equal('http://asdf.com/path/the%20kid');
|
||||
});
|
||||
});
|
||||
describe("#parsed", function(){
|
||||
it("returns some stuff", function(){
|
||||
var url = "http://gdizzle:pazz@asdf.com:5678/path/kid/?asdf=1234#frag";
|
||||
var actual = urlgrey(url).parsed();
|
||||
var expected = {
|
||||
"protocol": "http",
|
||||
"auth": "gdizzle:pazz",
|
||||
"host": "asdf.com:5678",
|
||||
"port": 5678,
|
||||
"hostname": "asdf.com",
|
||||
"hash": "frag",
|
||||
"search": "?asdf=1234",
|
||||
"query": "asdf=1234",
|
||||
"pathname": "/path/kid/",
|
||||
"path": "/path/kid/?asdf=1234",
|
||||
"href": "http://gdizzle:pazz@asdf.com:5678/path/kid/?asdf=1234#frag",
|
||||
"username": "gdizzle",
|
||||
"password": "pazz"
|
||||
};
|
||||
chai.expect(actual).to.eql(expected);
|
||||
});
|
||||
});
|
||||
describe("#toString", function(){
|
||||
it("returns the input string if unmodified", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).toString().should.equal(url);
|
||||
});
|
||||
it("returns an absolute uri even if one is not given", function(){
|
||||
var url = "/path?asdf=1234#frag";
|
||||
urlgrey(url).toString()
|
||||
.should.match(/^http:\/\/|file:\/\//);
|
||||
});
|
||||
});
|
||||
describe("#protocol", function(){
|
||||
it("gets the protocol", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).protocol().should.equal('https');
|
||||
});
|
||||
|
||||
if (isBrowser){
|
||||
it ("gets the protocol as the current one if unset", function(){
|
||||
urlgrey('').protocol()
|
||||
.should.equal(window.location.href.slice(0, 4));
|
||||
});
|
||||
} else {
|
||||
it("gets the protocol as http if unset", function(){
|
||||
var url = "/path?asdf=1234#frag";
|
||||
urlgrey(url).protocol().should.equal('http');
|
||||
});
|
||||
}
|
||||
|
||||
it("sets the protocol", function(){
|
||||
var url = "https://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
var expected = "http://user:pass@subdomain.asdf.com/path?asdf=1234#frag";
|
||||
urlgrey(url).protocol('http').toString().should.equal(expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe("#queryString", function(){
|
||||
it("sets the queryString", function(){
|
||||
var updated = urlgrey("http://s.asdf.com").queryString('foo=1234');
|
||||
|
||||
updated.toString().should.equal("http://s.asdf.com?foo=1234");
|
||||
updated.query().should.deep.equal({foo: "1234"});
|
||||
});
|
||||
it("changes the queryString", function(){
|
||||
var updated = urlgrey("http://s.asdf.com?foo=1234&bar=5678").queryString('baz=3456');
|
||||
|
||||
updated.toString().should.equal("http://s.asdf.com?baz=3456");
|
||||
updated.query().should.deep.equal({baz: "3456"});
|
||||
});
|
||||
it("gets the queryString", function(){
|
||||
chai.expect(
|
||||
urlgrey("http://s.asdf.com/?qwer=1234").queryString()
|
||||
).to.equal("qwer=1234");
|
||||
});
|
||||
it("'roundtrips' the queryString", function(){
|
||||
urlgrey("http://s.asdf.com/?qwer=1234").queryString('asdf=1234')
|
||||
.queryString().should.equal("asdf=1234");
|
||||
});
|
||||
|
||||
});
|
||||
describe("#rawQuery", function(){
|
||||
it("adds a querystring", function(){
|
||||
var updated = urlgrey("http://asdf.com").rawQuery({foo:'12 34'});
|
||||
|
||||
updated.toString().should.equal("http://asdf.com?foo=12 34");
|
||||
updated.rawQuery().should.deep.equal({foo: "12 34"});
|
||||
});
|
||||
it("appends a querystring", function(){
|
||||
var updated = urlgrey("http://asdf.com?foo=1234").rawQuery({bar:'56 78'});
|
||||
|
||||
updated.toString().should.equal("http://asdf.com?foo=1234&bar=56 78");
|
||||
updated.rawQuery().should.deep.equal({foo: "1234", bar: "56 78"});
|
||||
});
|
||||
it("modifies a querystring", function(){
|
||||
var updated = urlgrey("http://asdf.com?foo=1234&bar=abcd").rawQuery({foo: "56 78"});
|
||||
|
||||
updated.toString().should.equal("http://asdf.com?foo=56 78&bar=abcd");
|
||||
updated.rawQuery().should.deep.equal({foo: "56 78", bar: "abcd"});
|
||||
});
|
||||
it("clears a querystring", function(){
|
||||
var updated = urlgrey("http://asdf.com?foo=1234").rawQuery(false);
|
||||
|
||||
updated.toString().should.equal("http://asdf.com");
|
||||
updated.rawQuery().should.deep.equal({});
|
||||
});
|
||||
it("clears an element of a querystring with null or false", function(){
|
||||
var updated = urlgrey("http://asdf.com")
|
||||
.rawQuery({foo: 1, bar: 2, baz: 3})
|
||||
.rawQuery({foo: 0, bar: null});
|
||||
|
||||
updated.toString().should.equal("http://asdf.com?foo=0&baz=3");
|
||||
updated.rawQuery().should.deep.equal({foo: "0", baz: "3"});
|
||||
});
|
||||
it("extracts a querystring as an object", function(){
|
||||
urlgrey("http://asdf.com?asdf=56%2078").rawQuery().should.deep.equal({asdf:'56%2078'});
|
||||
});
|
||||
});
|
||||
describe("#query", function(){
|
||||
it("adds a querystring", function(){
|
||||
var updated = urlgrey("http://asdf.com").query({foo:'12 34'});
|
||||
|
||||
updated.toString().should.equal("http://asdf.com?foo=12%2034");
|
||||
updated.query().should.deep.equal({foo: "12 34"});
|
||||
});
|
||||
it("appends a querystring", function(){
|
||||
var updated = urlgrey("http://asdf.com?foo=1234").query({bar:'56 78'});
|
||||
|
||||
updated.toString().should.equal("http://asdf.com?foo=1234&bar=56%2078");
|
||||
updated.query().should.deep.equal({foo: "1234", bar: "56 78"});
|
||||
});
|
||||
it("modifies a querystring", function(){
|
||||
var updated = urlgrey("http://asdf.com?foo=1234&bar=abcd").query({foo: "56 78"});
|
||||
|
||||
updated.toString().should.equal("http://asdf.com?foo=56%2078&bar=abcd");
|
||||
updated.query().should.deep.equal({foo: "56 78", bar: "abcd"});
|
||||
});
|
||||
it("clears a querystring", function(){
|
||||
var updated = urlgrey("http://asdf.com?foo=1234").query(false);
|
||||
|
||||
updated.toString().should.equal("http://asdf.com");
|
||||
updated.query().should.deep.equal({});
|
||||
});
|
||||
it("clears an element of a querystring with null or false", function(){
|
||||
var updated = urlgrey("http://asdf.com")
|
||||
.rawQuery({foo: 1, bar: 2, baz: 3})
|
||||
.rawQuery({foo: 0, bar: null});
|
||||
|
||||
updated.toString().should.equal("http://asdf.com?foo=0&baz=3");
|
||||
updated.query().should.deep.equal({foo: "0", baz: "3"});
|
||||
});
|
||||
it("extracts a querystring as an object", function(){
|
||||
urlgrey("http://asdf.com?asdf=56%2078").query().should.deep.equal({asdf:'56 78'});
|
||||
});
|
||||
});
|
||||
describe('#encode', function(){
|
||||
it ("returns a url-encoded version of its input string", function(){
|
||||
urlgrey('').encode("this is a test").should.equal("this%20is%20a%20test");
|
||||
});
|
||||
});
|
||||
describe('#decode', function(){
|
||||
it ("returns a url-decoded version of its input string", function(){
|
||||
urlgrey('').decode("this%20is%20a%20test").should.equal("this is a test");
|
||||
});
|
||||
});
|
||||
|
||||
});
|
Reference in New Issue
Block a user