fix(client): validate suppressed tree objects
This commit is contained in:
@@ -327,6 +327,53 @@ fn normalized_aliases_preserve_newer_request_ownership() {
|
||||
client.object(&session, "/b/shared").unwrap().validator,
|
||||
Some(b"newest".to_vec())
|
||||
);
|
||||
|
||||
observe_object(
|
||||
&mut client,
|
||||
&session,
|
||||
"/child",
|
||||
object("child", Some("child-ref"), b"stable"),
|
||||
);
|
||||
let older_tree = client.prepare_tree(&session, "/", 1, 4).unwrap();
|
||||
let newer_child = client.prepare_fetch(&session, "/child").unwrap();
|
||||
client
|
||||
.complete(
|
||||
newer_child.id,
|
||||
fetch_response("/child", &object("child", Some("child-ref"), b"stable")),
|
||||
)
|
||||
.unwrap();
|
||||
let mut contradictory = object("child", Some("child-ref"), b"stable");
|
||||
contradictory.description = Some("same-path contradiction".into());
|
||||
let root_request = FetchTreeRequest {
|
||||
path: "/".into(),
|
||||
depth: 1,
|
||||
limit: 4,
|
||||
};
|
||||
let error = client
|
||||
.complete(
|
||||
older_tree.id,
|
||||
encode_fetch_tree_response(
|
||||
&root_request,
|
||||
&FetchTreeResponse {
|
||||
root: ObjectTreeNode {
|
||||
object: object("", None, b"root"),
|
||||
children: vec![ObjectTreeNode {
|
||||
object: contradictory,
|
||||
children: vec![],
|
||||
}],
|
||||
},
|
||||
truncated: false,
|
||||
},
|
||||
wire_limits(),
|
||||
)
|
||||
.unwrap(),
|
||||
)
|
||||
.unwrap_err();
|
||||
assert_eq!(error.kind, ClientErrorKind::InvalidResponse);
|
||||
assert_eq!(
|
||||
client.object(&session, "/child").unwrap().state,
|
||||
ObservationState::Fresh
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user