mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-27 15:37:02 +00:00
test: guard table catalog ingress unknown fields (#3308)
This commit is contained in:
@@ -1808,6 +1808,60 @@ mod tests {
|
|||||||
assert!(request.delete);
|
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]
|
#[test]
|
||||||
fn create_namespace_request_uses_rest_namespace_segments_and_properties() {
|
fn create_namespace_request_uses_rest_namespace_segments_and_properties() {
|
||||||
let request: CreateNamespaceRequest = serde_json::from_value(serde_json::json!({
|
let request: CreateNamespaceRequest = serde_json::from_value(serde_json::json!({
|
||||||
|
|||||||
Reference in New Issue
Block a user