mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-21 11:56:38 +00:00
test(filemeta): cover legacy delete marker decoding (#2333)
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: houseme <housemecn@gmail.com> Co-authored-by: heihutu <heihutu@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
@@ -2966,6 +2966,38 @@ mod tests {
|
||||
assert!(fi.uses_legacy_checksum);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn legacy_meta_v2_delete_marker_decodes_into_delete_fileinfo_via_struct() {
|
||||
let version_id = sample_version_id();
|
||||
let mod_time = sample_mod_time();
|
||||
let version = LegacyMetaV2Version {
|
||||
version_type: LegacyMetaV2VersionType::DeleteMarker,
|
||||
object: None,
|
||||
delete_marker: Some(LegacyMetaV2DeleteMarker {
|
||||
version_id: version_id.as_bytes().to_vec(),
|
||||
mod_time: Some(mod_time),
|
||||
meta_sys: HashMap::from([("x-minio-internal".to_string(), b"present".to_vec())]),
|
||||
}),
|
||||
write_version: 7,
|
||||
};
|
||||
|
||||
let decoded = FileMetaVersion::try_from(version).unwrap();
|
||||
|
||||
assert_eq!(decoded.version_type, VersionType::Delete);
|
||||
assert!(decoded.uses_legacy_checksum);
|
||||
assert!(decoded.object.is_none());
|
||||
|
||||
let delete_marker = decoded.delete_marker.as_ref().expect("delete marker should be decoded");
|
||||
assert_eq!(delete_marker.version_id, Some(version_id));
|
||||
assert_eq!(delete_marker.mod_time, Some(mod_time));
|
||||
|
||||
let fi = decoded.into_fileinfo("bucket", "deleted.txt", true);
|
||||
assert!(fi.deleted);
|
||||
assert_eq!(fi.version_id, Some(version_id));
|
||||
assert_eq!(fi.mod_time, Some(mod_time));
|
||||
assert_eq!(fi.metadata.get("x-minio-internal").map(String::as_str), Some("present"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn legacy_meta_v2_delete_marker_rejects_invalid_uuid_bytes() {
|
||||
let payload = LegacyDeleteVersionFixture {
|
||||
@@ -2983,4 +3015,16 @@ mod tests {
|
||||
let err = FileMetaVersion::try_from(encoded.as_slice()).expect_err("invalid legacy delete marker UUID must fail");
|
||||
assert!(err.to_string().contains("legacy version_id must be 16 bytes"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn legacy_meta_v2_delete_marker_rejects_invalid_uuid_bytes_via_struct() {
|
||||
let err = MetaDeleteMarker::try_from(LegacyMetaV2DeleteMarker {
|
||||
version_id: vec![1, 2, 3],
|
||||
mod_time: Some(sample_mod_time()),
|
||||
meta_sys: HashMap::new(),
|
||||
})
|
||||
.expect_err("invalid legacy delete-marker version ids should be rejected");
|
||||
|
||||
assert!(err.to_string().contains("legacy version_id must be 16 bytes"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user