fix(protocol): reject unknown root named types
This commit is contained in:
@@ -315,6 +315,8 @@ pub(crate) fn validate_root_value(
|
||||
) -> Result<(), ValidationError> {
|
||||
descriptor.validate()?;
|
||||
let declarations = declaration_map(descriptor)?;
|
||||
validate_type_expr(ty, &declarations)
|
||||
.map_err(|error| error.prepend(PathSegment::Interface(descriptor.name.clone())))?;
|
||||
validate_value(ty, value, &declarations)
|
||||
.map_err(|error| error.prepend(PathSegment::Interface(descriptor.name.clone())))
|
||||
}
|
||||
@@ -369,7 +371,12 @@ fn validate_value(
|
||||
_ => expect_kind(value, ValueKind::Json),
|
||||
},
|
||||
TypeExpr::Named(name) => {
|
||||
validate_declared_value(declarations[name.as_str()], value, declarations)
|
||||
let Some(declaration) = declarations.get(name.as_str()) else {
|
||||
return Err(ValidationError::new(ValidationErrorKind::UnknownType {
|
||||
name: name.clone(),
|
||||
}));
|
||||
};
|
||||
validate_declared_value(declaration, value, declarations)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user