More validations
This commit is contained in:
parent
ad74eca709
commit
8f741ffe6a
|
@ -1118,38 +1118,67 @@ describe.each([
|
||||||
|
|
||||||
it.each(
|
it.each(
|
||||||
isInternal ? PROTECTED_INTERNAL_COLUMNS : PROTECTED_EXTERNAL_COLUMNS
|
isInternal ? PROTECTED_INTERNAL_COLUMNS : PROTECTED_EXTERNAL_COLUMNS
|
||||||
)("don't allow protected names (%s)", async columnName => {
|
)("don't allow protected names in schema (%s)", async columnName => {
|
||||||
const result = await config.api.table.validateNewTableImport(
|
const result = await config.api.table.validateNewTableImport(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
id: generator.natural(),
|
id: generator.natural(),
|
||||||
name: generator.first(),
|
name: generator.first(),
|
||||||
[columnName]: generator.word(),
|
[columnName]: generator.word(),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
...basicSchema,
|
...basicSchema,
|
||||||
[columnName]: {
|
|
||||||
name: columnName,
|
|
||||||
type: FieldType.STRING,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
expect(result).toEqual({
|
|
||||||
allValid: false,
|
|
||||||
errors: {
|
|
||||||
[columnName]: `${columnName} is a protected name`,
|
|
||||||
},
|
|
||||||
invalidColumns: [],
|
|
||||||
schemaValidation: {
|
|
||||||
id: true,
|
|
||||||
name: true,
|
|
||||||
[columnName]: false,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
expect(result).toEqual({
|
||||||
|
allValid: false,
|
||||||
|
errors: {
|
||||||
|
[columnName]: `${columnName} is a protected column name`,
|
||||||
|
},
|
||||||
|
invalidColumns: [],
|
||||||
|
schemaValidation: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
[columnName]: false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
isInternal &&
|
||||||
|
it.each(
|
||||||
|
isInternal ? PROTECTED_INTERNAL_COLUMNS : PROTECTED_EXTERNAL_COLUMNS
|
||||||
|
)("don't allow protected names in the rows (%s)", async columnName => {
|
||||||
|
const result = await config.api.table.validateNewTableImport(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
id: generator.natural(),
|
||||||
|
name: generator.first(),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
{
|
||||||
|
...basicSchema,
|
||||||
|
[columnName]: {
|
||||||
|
name: columnName,
|
||||||
|
type: FieldType.STRING,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(result).toEqual({
|
||||||
|
allValid: false,
|
||||||
|
errors: {
|
||||||
|
[columnName]: `${columnName} is a protected column name`,
|
||||||
|
},
|
||||||
|
invalidColumns: [],
|
||||||
|
schemaValidation: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
[columnName]: false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("validateExistingTableImport", () => {
|
describe("validateExistingTableImport", () => {
|
||||||
|
|
|
@ -71,7 +71,7 @@ export function validate(
|
||||||
|
|
||||||
if (protectedColumnNames.includes(columnName.toLowerCase())) {
|
if (protectedColumnNames.includes(columnName.toLowerCase())) {
|
||||||
results.schemaValidation[columnName] = false
|
results.schemaValidation[columnName] = false
|
||||||
results.errors[columnName] = `${columnName} is a protected name`
|
results.errors[columnName] = `${columnName} is a protected column name`
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,6 +121,13 @@ export function validate(
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
for (const schemaField of Object.keys(schema)) {
|
||||||
|
if (protectedColumnNames.includes(schemaField.toLowerCase())) {
|
||||||
|
results.schemaValidation[schemaField] = false
|
||||||
|
results.errors[schemaField] = `${schemaField} is a protected column name`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
results.allValid =
|
results.allValid =
|
||||||
Object.values(results.schemaValidation).length > 0 &&
|
Object.values(results.schemaValidation).length > 0 &&
|
||||||
Object.values(results.schemaValidation).every(column => column)
|
Object.values(results.schemaValidation).every(column => column)
|
||||||
|
|
Loading…
Reference in New Issue