vault/ui/tests/unit/utils/sanitize-path-test.js

47 lines
1.9 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import { module, test } from 'qunit';
import { ensureTrailingSlash, getRelativePath, sanitizePath, sanitizeStart } from 'core/utils/sanitize-path';
module('Unit | Utility | sanitize-path', function () {
test('it removes spaces and slashes from either side', function (assert) {
assert.strictEqual(
sanitizePath(' /foo/bar/baz/ '),
'foo/bar/baz',
'removes spaces and slashes on either side'
);
assert.strictEqual(sanitizePath('//foo/bar/baz/'), 'foo/bar/baz', 'removes more than one slash');
assert.strictEqual(sanitizePath(undefined), '', 'handles falsey values');
});
test('#ensureTrailingSlash', function (assert) {
assert.strictEqual(ensureTrailingSlash('foo/bar'), 'foo/bar/', 'adds trailing slash');
assert.strictEqual(ensureTrailingSlash('baz/'), 'baz/', 'keeps trailing slash if there is one');
});
test('#getRelativePath', function (assert) {
assert.strictEqual(getRelativePath('/', undefined), '', 'works with minimal inputs');
assert.strictEqual(getRelativePath('/baz/bar/', undefined), 'baz/bar', 'sanitizes the output');
assert.strictEqual(getRelativePath('recipes/cookies/choc-chip/', 'recipes/'), 'cookies/choc-chip');
assert.strictEqual(getRelativePath('/recipes/cookies/choc-chip/', 'recipes/cookies'), 'choc-chip');
assert.strictEqual(getRelativePath('/admin/bop/boop/admin_foo/baz/', 'admin'), 'bop/boop/admin_foo/baz');
});
test('#sanitizeStart', function (assert) {
assert.strictEqual(
sanitizeStart(' /foo/bar/baz/ '),
'foo/bar/baz/',
'trims spaces and removes slashes only from beginning'
);
assert.strictEqual(
sanitizeStart('//foo/bar/baz/'),
'foo/bar/baz/',
'removes more than one slash from start'
);
assert.strictEqual(sanitizeStart(undefined), '', 'handles falsey values');
});
});