mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-01-30 06:22:04 +00:00
fix: strengthen validation for empty required string properties
- Enhanced required property validation to catch empty strings - HTTP Request node's url field now properly fails validation when empty - Workflow validation now always includes errors and warnings arrays for consistent API response - Fixes CI test failures in integration tests
This commit is contained in:
@@ -2659,24 +2659,19 @@ Full documentation is being prepared. For now, use get_node_essentials for confi
|
||||
expressionsValidated: result.statistics.expressionsValidated,
|
||||
errorCount: result.errors.length,
|
||||
warningCount: result.warnings.length
|
||||
}
|
||||
};
|
||||
|
||||
if (result.errors.length > 0) {
|
||||
response.errors = result.errors.map(e => ({
|
||||
},
|
||||
// Always include errors and warnings arrays for consistent API response
|
||||
errors: result.errors.map(e => ({
|
||||
node: e.nodeName || 'workflow',
|
||||
message: e.message,
|
||||
details: e.details
|
||||
}));
|
||||
}
|
||||
|
||||
if (result.warnings.length > 0) {
|
||||
response.warnings = result.warnings.map(w => ({
|
||||
})),
|
||||
warnings: result.warnings.map(w => ({
|
||||
node: w.nodeName || 'workflow',
|
||||
message: w.message,
|
||||
details: w.details
|
||||
}));
|
||||
}
|
||||
}))
|
||||
};
|
||||
|
||||
if (result.suggestions.length > 0) {
|
||||
response.suggestions = result.suggestions;
|
||||
|
||||
@@ -108,16 +108,16 @@ export class ConfigValidator {
|
||||
* Check for missing required properties
|
||||
*/
|
||||
private static checkRequiredProperties(
|
||||
properties: any[],
|
||||
config: Record<string, any>,
|
||||
properties: any[],
|
||||
config: Record<string, any>,
|
||||
errors: ValidationError[]
|
||||
): void {
|
||||
for (const prop of properties) {
|
||||
if (!prop || !prop.name) continue; // Skip invalid properties
|
||||
|
||||
|
||||
if (prop.required) {
|
||||
const value = config[prop.name];
|
||||
|
||||
|
||||
// Check if property is missing or has null/undefined value
|
||||
if (!(prop.name in config)) {
|
||||
errors.push({
|
||||
@@ -133,6 +133,14 @@ export class ConfigValidator {
|
||||
message: `Required property '${prop.displayName || prop.name}' cannot be null or undefined`,
|
||||
fix: `Provide a valid value for ${prop.name}`
|
||||
});
|
||||
} else if (typeof value === 'string' && value.trim() === '') {
|
||||
// Check for empty strings which are invalid for required string properties
|
||||
errors.push({
|
||||
type: 'missing_required',
|
||||
property: prop.name,
|
||||
message: `Required property '${prop.displayName || prop.name}' cannot be empty`,
|
||||
fix: `Provide a valid value for ${prop.name}`
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user