mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 08:18:18 +00:00
test: guard table catalog ingress unknown fields (#3308)
This commit is contained in:
@@ -1808,6 +1808,60 @@ mod tests {
|
||||
assert!(request.delete);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn table_catalog_ingress_requests_reject_unknown_fields() {
|
||||
assert_rejects_unknown_field::<CreateNamespaceRequest>(
|
||||
"CreateNamespaceRequest",
|
||||
serde_json::json!({
|
||||
"namespace": ["analytics"],
|
||||
"unexpected": true
|
||||
}),
|
||||
);
|
||||
assert_rejects_unknown_field::<RegisterTableRequest>(
|
||||
"RegisterTableRequest",
|
||||
serde_json::json!({
|
||||
"name": "events",
|
||||
"metadata-location": ".rustfs-table/warehouses/default/namespaces/analytics/tables/events/metadata/00001.metadata.json",
|
||||
"unexpected": true
|
||||
}),
|
||||
);
|
||||
assert_rejects_unknown_field::<CreateTableRequest>(
|
||||
"CreateTableRequest",
|
||||
serde_json::json!({
|
||||
"name": "events",
|
||||
"schema": {},
|
||||
"unexpected": true
|
||||
}),
|
||||
);
|
||||
assert_rejects_unknown_field::<RestCommitTableRequest>(
|
||||
"RestCommitTableRequest",
|
||||
serde_json::json!({
|
||||
"unexpected": true
|
||||
}),
|
||||
);
|
||||
assert_rejects_unknown_field::<TableMetadataMaintenanceRequest>(
|
||||
"TableMetadataMaintenanceRequest",
|
||||
serde_json::json!({
|
||||
"delete": true,
|
||||
"unexpected": true
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
fn assert_rejects_unknown_field<T>(target: &str, value: serde_json::Value)
|
||||
where
|
||||
T: serde::de::DeserializeOwned,
|
||||
{
|
||||
let err = match serde_json::from_value::<T>(value) {
|
||||
Ok(_) => panic!("{target} should reject unknown fields"),
|
||||
Err(err) => err,
|
||||
};
|
||||
assert!(
|
||||
err.to_string().contains("unknown field"),
|
||||
"{target} should reject unknown fields, got: {err}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn create_namespace_request_uses_rest_namespace_segments_and_properties() {
|
||||
let request: CreateNamespaceRequest = serde_json::from_value(serde_json::json!({
|
||||
|
||||
Reference in New Issue
Block a user