vscode-cmake-tools/test/unit-tests/pii.test.ts

54 строки
3.5 KiB
TypeScript

import * as chai from 'chai';
import * as chaiAsPromised from 'chai-as-promised';
import * as os from 'os';
chai.use(chaiAsPromised);
import { expect } from 'chai';
import { cleanStack, cleanString } from '../../src/rollbar';
suite('Stack trace cleaning test', () => {
if (os.platform() === 'win32') {
test('Check PII removal - Windows', async () => {
expect(cleanStack('at failingFunction (c:\\path\\to\\main.js)')).to.eq('at failingFunction (main.js)');
expect(cleanStack('at failingFunction (c:\\path\\to\\main.js:12)')).to.eq('at failingFunction (main.js:12)');
expect(cleanStack('at failingFunction (c:\\path\\to\\main.js:12:34)')).to.eq('at failingFunction (main.js:12:34)');
expect(cleanStack('at c:\\path\\to\\main.js:12345:67')).to.eq('at main.js:12345:67');
expect(cleanStack('at async c:\\path\\to\\main.js:12345:67')).to.eq('at async main.js:12345:67');
expect(cleanStack('Error: ENOENT: c:\\path\\to\\file\n\tat failingFunction c:\\some\\other\\path')).to.eq('Error: ENOENT: <path removed>\n\tat failingFunction <path removed>');
});
} else {
test('Check PII removal - *nix', async () => {
expect(cleanStack('at failingFunction (/usr/home/main.js)')).to.eq('at failingFunction (main.js)');
expect(cleanStack('at failingFunction (/usr/home/main.js:12)')).to.eq('at failingFunction (main.js:12)');
expect(cleanStack('at failingFunction (/usr/home/main.js:12:34)')).to.eq('at failingFunction (main.js:12:34)');
expect(cleanStack('at /usr/home/main.js:12345:67')).to.eq('at main.js:12345:67');
expect(cleanStack('at async /usr/home/main.js:12345:67')).to.eq('at async main.js:12345:67');
expect(cleanStack('Error: ENOENT: /path/to/file\n\tat failingFunction /some/other/path')).to.eq('Error: ENOENT: <path removed>\n\tat failingFunction <path removed>');
});
}
test('Check PII removal - relative', async () => {
expect(cleanStack('at failingFunction (main.js)')).to.eq('at failingFunction (main.js)');
expect(cleanStack('at failingFunction (main.js:1)')).to.eq('at failingFunction (main.js:1)');
expect(cleanStack('at failingFunction (main.js:1:2)')).to.eq('at failingFunction (main.js:1:2)');
});
if (os.platform() === 'win32') {
test('Check PII removal - multiline', async () => {
expect(cleanStack('ERROR: foo\n\tat failingFunction (c:\\path\\to\\main.js:1:2)\n\tat c:\\path\\to\\main.js:12345:67\n\tat failingFunction (c:\\path\\to\\main.js:1:2)\n\tat failingFunction (main.js:1:2)'))
.to.eq('ERROR: foo\n\tat failingFunction (main.js:1:2)\n\tat main.js:12345:67\n\tat failingFunction (main.js:1:2)\n\tat failingFunction (main.js:1:2)');
});
} else {
test('Check PII removal - multiline', async () => {
expect(cleanStack('ERROR: foo\n\tat failingFunction (/usr/bin/main.js:1:2)\n\tat /usr/home/main.js:12345:67\n\tat failingFunction (/usr/bin/main.js:1:2)\n\tat failingFunction (main.js:1:2)'))
.to.eq('ERROR: foo\n\tat failingFunction (main.js:1:2)\n\tat main.js:12345:67\n\tat failingFunction (main.js:1:2)\n\tat failingFunction (main.js:1:2)');
});
}
test('Check PII removal - Errors', async () => {
expect(cleanString('Error: ENOENT: c:\\path\\to\\file')).to.eq('Error: ENOENT: <path removed>');
expect(cleanString('Error: ENOENT: /path/to/file')).to.eq('Error: ENOENT: <path removed>');
});
});