Aktueller Stand
This commit is contained in:
177
backend/node_modules/fast-json-stringify/test/issue-794.test.js
generated
vendored
Normal file
177
backend/node_modules/fast-json-stringify/test/issue-794.test.js
generated
vendored
Normal file
@@ -0,0 +1,177 @@
|
||||
'use strict'
|
||||
|
||||
const { test } = require('node:test')
|
||||
|
||||
const build = require('..')
|
||||
|
||||
test('serialize string with quotes - issue #794', (t) => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
message: {
|
||||
type: 'string'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const input = {
|
||||
message: 'Error: Property "name" is required'
|
||||
}
|
||||
|
||||
const stringify = build(schema)
|
||||
const output = stringify(input)
|
||||
|
||||
// The output should be valid JSON
|
||||
t.assert.doesNotThrow(() => {
|
||||
JSON.parse(output)
|
||||
}, 'JSON output should be parseable')
|
||||
|
||||
// The parsed output should match the input
|
||||
const parsed = JSON.parse(output)
|
||||
t.assert.equal(parsed.message, input.message)
|
||||
})
|
||||
|
||||
test('serialize string with various quote types - issue #794', (t) => {
|
||||
t.plan(6)
|
||||
|
||||
const schema = {
|
||||
type: 'string'
|
||||
}
|
||||
|
||||
const stringify = build(schema)
|
||||
|
||||
// Test double quotes
|
||||
const inputDoubleQuotes = 'Property "name" is required'
|
||||
const outputDoubleQuotes = stringify(inputDoubleQuotes)
|
||||
t.assert.doesNotThrow(() => JSON.parse(outputDoubleQuotes))
|
||||
t.assert.equal(JSON.parse(outputDoubleQuotes), inputDoubleQuotes)
|
||||
|
||||
// Test single quotes (should be fine but test for completeness)
|
||||
const inputSingleQuotes = "Property 'name' is required"
|
||||
const outputSingleQuotes = stringify(inputSingleQuotes)
|
||||
t.assert.doesNotThrow(() => JSON.parse(outputSingleQuotes))
|
||||
t.assert.equal(JSON.parse(outputSingleQuotes), inputSingleQuotes)
|
||||
|
||||
// Test mixed quotes
|
||||
const inputMixedQuotes = 'Error: "Property \'name\' is required"'
|
||||
const outputMixedQuotes = stringify(inputMixedQuotes)
|
||||
t.assert.doesNotThrow(() => JSON.parse(outputMixedQuotes))
|
||||
t.assert.equal(JSON.parse(outputMixedQuotes), inputMixedQuotes)
|
||||
})
|
||||
|
||||
test('serialize error-like object with quotes in message - issue #794', (t) => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
error: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
message: {
|
||||
type: 'string'
|
||||
},
|
||||
code: {
|
||||
type: 'string'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const input = {
|
||||
error: {
|
||||
message: 'Validation failed: Property "email" must be a valid email address',
|
||||
code: 'VALIDATION_ERROR'
|
||||
}
|
||||
}
|
||||
|
||||
const stringify = build(schema)
|
||||
const output = stringify(input)
|
||||
|
||||
// The output should be valid JSON
|
||||
t.assert.doesNotThrow(() => {
|
||||
JSON.parse(output)
|
||||
}, 'JSON output should be parseable')
|
||||
|
||||
// The parsed output should match the input
|
||||
const parsed = JSON.parse(output)
|
||||
t.assert.deepEqual(parsed, input)
|
||||
})
|
||||
|
||||
test('serialize validation errors array with quotes - issue #794', (t) => {
|
||||
t.plan(2)
|
||||
|
||||
const schema = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
errors: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
message: {
|
||||
type: 'string'
|
||||
},
|
||||
field: {
|
||||
type: 'string'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const input = {
|
||||
errors: [
|
||||
{
|
||||
message: 'Property "name" is required',
|
||||
field: 'name'
|
||||
},
|
||||
{
|
||||
message: 'Property "email" must be a valid email address',
|
||||
field: 'email'
|
||||
},
|
||||
{
|
||||
message: 'Value must be between "1" and "100"',
|
||||
field: 'age'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
const stringify = build(schema)
|
||||
const output = stringify(input)
|
||||
|
||||
// The output should be valid JSON
|
||||
t.assert.doesNotThrow(() => {
|
||||
JSON.parse(output)
|
||||
}, 'JSON output should be parseable')
|
||||
|
||||
// The parsed output should match the input
|
||||
const parsed = JSON.parse(output)
|
||||
t.assert.deepEqual(parsed, input)
|
||||
})
|
||||
|
||||
test('serialize string with backslashes and quotes - issue #794', (t) => {
|
||||
t.plan(4)
|
||||
|
||||
const schema = {
|
||||
type: 'string'
|
||||
}
|
||||
|
||||
const stringify = build(schema)
|
||||
|
||||
// Test backslashes
|
||||
const inputBackslash = 'Path: C:\\Users\\test\\file.json'
|
||||
const outputBackslash = stringify(inputBackslash)
|
||||
t.assert.doesNotThrow(() => JSON.parse(outputBackslash))
|
||||
t.assert.equal(JSON.parse(outputBackslash), inputBackslash)
|
||||
|
||||
// Test combination of backslashes and quotes
|
||||
const inputMixed = 'Error: Could not find file "C:\\Users\\test\\config.json"'
|
||||
const outputMixed = stringify(inputMixed)
|
||||
t.assert.doesNotThrow(() => JSON.parse(outputMixed))
|
||||
t.assert.equal(JSON.parse(outputMixed), inputMixed)
|
||||
})
|
||||
Reference in New Issue
Block a user