From 2b702ac62196b853782b238ac8173988e9ba0fcc Mon Sep 17 00:00:00 2001 From: Pavlo Karatsiuba Date: Wed, 5 Apr 2023 19:46:46 +0200 Subject: [PATCH] test for sanitize function --- test/e2e/cmd.e2e.test.ts | 9 ------ test/unit/sanitize-argument.test.ts | 47 +++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 test/unit/sanitize-argument.test.ts diff --git a/test/e2e/cmd.e2e.test.ts b/test/e2e/cmd.e2e.test.ts index 5f2315d5f..969a6ef36 100644 --- a/test/e2e/cmd.e2e.test.ts +++ b/test/e2e/cmd.e2e.test.ts @@ -29,14 +29,5 @@ describe('Exec Command With Bash', () => { /verbose should be empty or one of \[info, log, warn, error, quiet\]/, ) }) - - test('Exec Command With doubled options', async () => { - await expect(execa(`${mwo} --verbose --mwUrl="https://en.wikipedia.org" --adminEmail="test@test.test" --verbose=info`, { shell: true })).rejects.toThrow( - /Parameter verbose can only be used once/, - ) - await expect(execa(`${mwo} --verbose --mwUrl="https://en.wikipedia.org" --adminEmail="test@test.test" --mwUrl="https://en.wikipedia.org"`, { shell: true })).rejects.toThrow( - /Parameter mwUrl can only be used once/, - ) - }) }) }) diff --git a/test/unit/sanitize-argument.test.ts b/test/unit/sanitize-argument.test.ts new file mode 100644 index 000000000..0b9c69122 --- /dev/null +++ b/test/unit/sanitize-argument.test.ts @@ -0,0 +1,47 @@ +import { sanitize_all } from '../../src/sanitize-argument.js' + +describe('Sanitize parameters', () => { + test('sanitizing usage of the same parameter more than one time', async () => { + // equivalent to command: node lib/cli.js --verbose --mwUrl="https://en.wikipedia.org" --adminEmail="test@test.test" --verbose=info + const twoVerboseParameters = { + _: [], + verbose: [true, 'info'], + mwUrl: 'https://en.wikipedia.org', + 'mw-url': 'https://en.wikipedia.org', + adminEmail: 'test@test.test', + 'admin-email': 'test@test.test', + $0: 'node_modules/ts-node/dist/child/child-entrypoint.js', + } + + await expect(sanitize_all(twoVerboseParameters)).rejects.toThrow(/Parameter '--verbose' can only be used once/) + + // equivalent to command: node lib/cli.js --verbose --mwUrl="https://en.wikipedia.org" --adminEmail="test@test.test" --mwUrl="https://en.wikipedia.org" + const twoUrlParameters = { + _: [], + verbose: true, + mwUrl: ['https://en.wikipedia.org', 'https://en.wikipedia.org'], + 'mw-url': ['https://en.wikipedia.org', 'https://en.wikipedia.org'], + adminEmail: 'test@test.test', + 'admin-email': 'test@test.test', + $0: 'node_modules/ts-node/dist/child/child-entrypoint.js', + } + + await expect(sanitize_all(twoUrlParameters)).rejects.toThrow(/Parameter '--mwUrl' can only be used once/) + + // equivalent to command: node lib/cli.js --verbose=info --adminEmail="est@test.test" --articleList="User:Kelson/MWoffliner_CI_reference" --mwUrl="https://en.m.wikipedia.org/" --format=nopic --format=nopdf --format=novid + const threeFormatParameters = { + _: [], + verbose: 'info', + adminEmail: 'test@test.test', + 'admin-email': 'test@test.test', + articleList: 'User:Kelson/MWoffliner_CI_reference', + 'article-list': 'User:Kelson/MWoffliner_CI_reference', + mwUrl: 'https://en.m.wikipedia.org/', + 'mw-url': 'https://en.m.wikipedia.org/', + format: ['nopic', 'nopdf', 'novid'], + $0: 'node_modules/ts-node/dist/child/child-entrypoint.js', + } + + expect(await sanitize_all(threeFormatParameters)).toBeUndefined() + }) +})