You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.3 KiB

/**
* Copyright (c) 2013 Yahoo! Inc. All rights reserved.
*
* Copyrights licensed under the MIT License. See the accompanying LICENSE file
* for terms.
*/
/*global describe, it, beforeEach, before, after */
var expect = require('chai').expect;
var Path = require('../../lib/Path.js');
describe('Path', function () {
describe('validate', function () {
it('should reject null, undefined and empty string', function () {
expect(function () {
Path.validate();
}).to.throw('non-empty string');
expect(function () {
Path.validate(null);
}).to.throw('non-empty string');
expect(function () {
Path.validate('');
}).to.throw('non-empty string');
});
it('should reject path does not start with /.', function () {
expect(function () {
Path.validate('abc');
}).to.throw('start with /');
});
it('should reject path ends with /.', function () {
expect(function () {
Path.validate('/abc/');
}).to.throw('end with /');
});
it('should reject path contains empty node.', function () {
expect(function () {
Path.validate('//a');
}).to.throw('empty');
});
it('should reject relative path.', function () {
expect(function () {
Path.validate('/.');
}).to.throw('relative path');
expect(function () {
Path.validate('/./a');
}).to.throw('relative path');
expect(function () {
Path.validate('/..');
}).to.throw('relative path');
expect(function () {
Path.validate('/../a');
}).to.throw('relative path');
});
it('should accept dot in the the path name', function () {
expect(function () {
Path.validate('/a.b');
}).to.not.throw('relative path');
expect(function () {
Path.validate('/a..b');
}).to.not.throw('relative path');
});
it('should accept root path', function () {
expect(function () {
Path.validate('/');
}).to.not.throw('relative path');
});
});
});