From 7120f21d767301b41f46adf54ac7e2807e7e0d03 Mon Sep 17 00:00:00 2001 From: Oliver Sand Date: Mon, 18 Oct 2021 16:47:31 +0200 Subject: [PATCH] Fix tests on Windows Signed-off-by: Oliver Sand --- .../actions/builtin/publish/util.test.ts | 44 ++++++++++++------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.test.ts index a99cd2f380..f179289624 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/util.test.ts @@ -14,30 +14,44 @@ * limitations under the License. */ +import path from 'path'; import { getRepoSourceDirectory } from './util'; describe('getRepoSourceDirectory', () => { - test('should return workspace root if no sub folder is given', () => { - expect(getRepoSourceDirectory('/var/workspace', undefined)).toEqual( - '/var/workspace', - ); + it('should return workspace root if no sub folder is given', () => { + expect( + getRepoSourceDirectory(path.join('/', 'var', 'workspace'), undefined), + ).toEqual(path.join('/', 'var', 'workspace')); }); - test('should return path in workspace if sub folder is given', () => { + it('should return path in workspace if sub folder is given', () => { expect( - getRepoSourceDirectory('/var/workspace', 'path/of/subfolder'), - ).toEqual('/var/workspace/path/of/subfolder'); + getRepoSourceDirectory( + path.join('/', 'var', 'workspace'), + path.join('path', 'of', 'subfolder'), + ), + ).toEqual(path.join('/', 'var', 'workspace', 'path', 'of', 'subfolder')); }); - test('should not allow traversal outside the workspace root', () => { - expect(getRepoSourceDirectory('/var/workspace', '../secret')).toEqual( - '/var/workspace/secret', - ); + it('should not allow traversal outside the workspace root', () => { + // We have to construct the path manually here, as path.join would mitigate the path traversal expect( - getRepoSourceDirectory('/var/workspace', './path/../../secret'), - ).toEqual('/var/workspace/secret'); + getRepoSourceDirectory( + path.join('/', 'var', 'workspace'), + `..${path.sep}secret`, + ), + ).toEqual(path.join('/', 'var', 'workspace', 'secret')); expect( - getRepoSourceDirectory('/var/workspace', '/absolute/secret'), - ).toEqual('/var/workspace/absolute/secret'); + getRepoSourceDirectory( + path.join('/', 'var', 'workspace'), + `.${path.sep}path${path.sep}..${path.sep}..${path.sep}secret`, + ), + ).toEqual(path.join('/', 'var', 'workspace', 'secret')); + expect( + getRepoSourceDirectory( + path.join('/', 'var', 'workspace'), + path.join('/', 'absolute', 'secret'), + ), + ).toEqual(path.join('/', 'var', 'workspace', 'absolute', 'secret')); }); });