Merge pull request #452 from raman-savitski/master

Backquote/backtick symbol (`) is not escaped correctly
This commit is contained in:
Ferdi Koomen 2020-11-28 10:18:31 +01:00 committed by GitHub
commit f582891e96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 36 additions and 2 deletions

View File

@ -0,0 +1,13 @@
import { escapeDescription } from './escapeDescription';
describe('escapeDescription', () => {
it('should escape', () => {
expect(escapeDescription('foo `test` bar')).toEqual('foo \\`test\\` bar');
});
it('should not escape', () => {
expect(escapeDescription('')).toEqual('');
expect(escapeDescription('fooBar')).toEqual('fooBar');
expect(escapeDescription('foo \\`test\\` bar')).toEqual('foo \\`test\\` bar');
});
});

View File

@ -0,0 +1,3 @@
export function escapeDescription(value: string): string {
return value.replace(/([^\\])`/g, '$1\\`');
}

View File

@ -1,5 +1,6 @@
import type { OperationError } from '../../../client/interfaces/OperationError';
import type { OperationResponse } from '../../../client/interfaces/OperationResponse';
import { escapeDescription } from './escapeDescription';
export function getOperationErrors(operationResponses: OperationResponse[]): OperationError[] {
return operationResponses
@ -8,6 +9,6 @@ export function getOperationErrors(operationResponses: OperationResponse[]): Ope
})
.map(response => ({
code: response.code,
description: response.description!,
description: escapeDescription(response.description!),
}));
}

View File

@ -0,0 +1,13 @@
import { escapeDescription } from './escapeDescription';
describe('escapeDescription', () => {
it('should escape', () => {
expect(escapeDescription('foo `test` bar')).toEqual('foo \\`test\\` bar');
});
it('should not escape', () => {
expect(escapeDescription('')).toEqual('');
expect(escapeDescription('fooBar')).toEqual('fooBar');
expect(escapeDescription('foo \\`test\\` bar')).toEqual('foo \\`test\\` bar');
});
});

View File

@ -0,0 +1,3 @@
export function escapeDescription(value: string): string {
return value.replace(/([^\\])`/g, '$1\\`');
}

View File

@ -1,5 +1,6 @@
import type { OperationError } from '../../../client/interfaces/OperationError';
import type { OperationResponse } from '../../../client/interfaces/OperationResponse';
import { escapeDescription } from './escapeDescription';
export function getOperationErrors(operationResponses: OperationResponse[]): OperationError[] {
return operationResponses
@ -8,6 +9,6 @@ export function getOperationErrors(operationResponses: OperationResponse[]): Ope
})
.map(response => ({
code: response.code,
description: response.description!,
description: escapeDescription(response.description!),
}));
}