fix(core): Move error obfuscation to FE (no-changelog) (#10237)

This commit is contained in:
Michael Kret
2024-08-05 16:42:06 +03:00
committed by GitHub
parent 06419d9483
commit c0bdf3b719
5 changed files with 37 additions and 9 deletions

View File

@@ -2,7 +2,6 @@ import type { INode, JsonObject } from '@/Interfaces';
import type { NodeOperationErrorOptions } from './node-api.error';
import { NodeError } from './abstract/node.error';
import { ApplicationError } from './application.error';
import { OBFUSCATED_ERROR_MESSAGE } from '../Constants';
/**
* Class for instantiating an operational error, e.g. an invalid credentials error.
@@ -10,6 +9,8 @@ import { OBFUSCATED_ERROR_MESSAGE } from '../Constants';
export class NodeOperationError extends NodeError {
type: string | undefined;
obfuscate: boolean = false;
constructor(
node: INode,
error: Error | string | JsonObject,
@@ -22,7 +23,7 @@ export class NodeOperationError extends NodeError {
let obfuscateErrorMessage = false;
if (typeof error === 'string') {
error = new Error(error);
error = new ApplicationError(error);
} else if (!(error instanceof ApplicationError)) {
// this error was no processed by n8n, obfuscate error message
obfuscateErrorMessage = true;
@@ -37,7 +38,7 @@ export class NodeOperationError extends NodeError {
if (obfuscateErrorMessage && !options.description) {
const originalMessage = typeof error === 'string' ? error : (error.message as string);
this.addToMessages(originalMessage);
this.message = OBFUSCATED_ERROR_MESSAGE;
this.obfuscate = true;
}
if (options.message) this.message = options.message;
if (options.level) this.level = options.level;

View File

@@ -3,7 +3,6 @@ import type { INode } from '@/Interfaces';
import { NodeApiError } from '@/errors/node-api.error';
import { NodeOperationError } from '@/errors/node-operation.error';
import { ApplicationError } from '@/errors/application.error';
import { OBFUSCATED_ERROR_MESSAGE } from '@/Constants';
describe('NodeError', () => {
const node = mock<INode>();
@@ -22,7 +21,8 @@ describe('NodeError', () => {
const error = new Error('Original error message');
const nodeOpError = new NodeOperationError(node, error);
expect(nodeOpError.message).toBe(OBFUSCATED_ERROR_MESSAGE);
expect(nodeOpError.obfuscate).toBe(true);
expect(nodeOpError.message).toBe('Original error message');
expect(nodeOpError.messages).toContain('Original error message');
});
@@ -30,6 +30,7 @@ describe('NodeError', () => {
const appError = new ApplicationError('Processed error message');
const nodeOpError = new NodeOperationError(node, appError);
expect(nodeOpError.obfuscate).toBe(false);
expect(nodeOpError.message).toBe('Processed error message');
expect(nodeOpError.messages).not.toContain('Processed error message');
});
@@ -38,6 +39,7 @@ describe('NodeError', () => {
const errorMessage = 'String error message';
const nodeOpError = new NodeOperationError(node, errorMessage);
expect(nodeOpError.obfuscate).toBe(false);
expect(nodeOpError.message).toBe(errorMessage);
expect(nodeOpError.messages).toHaveLength(0);
});
@@ -47,6 +49,7 @@ describe('NodeError', () => {
const options = { description: 'Error description' };
const nodeOpError = new NodeOperationError(node, error, options);
expect(nodeOpError.obfuscate).toBe(false);
expect(nodeOpError.message).toBe('Initial error message');
});
@@ -55,6 +58,7 @@ describe('NodeError', () => {
const options = { message: 'Overridden message', description: 'Error description' };
const nodeOpError = new NodeOperationError(node, error, options);
expect(nodeOpError.obfuscate).toBe(false);
expect(nodeOpError.message).toBe('Overridden message');
expect(nodeOpError.description).toBe('Error description');
});