|
|
|
@ -615,14 +615,14 @@ mod tests {
|
|
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
|
|
|
|
use super::*;
|
|
|
|
|
use crate::common::{ChangeDetails, ChangeDetailsAttributes, ChangeKind};
|
|
|
|
|
use crate::common::{ChangeDetails, ChangeDetailsAttribute, ChangeKind};
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn should_be_able_to_serialize_minimal_payload_to_json() {
|
|
|
|
|
let payload = Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails::default(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -643,9 +643,10 @@ mod tests {
|
|
|
|
|
let payload = Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails {
|
|
|
|
|
attributes: vec![ChangeDetailsAttributes::Permissions],
|
|
|
|
|
attribute: Some(ChangeDetailsAttribute::Permissions),
|
|
|
|
|
timestamp: Some(u64::MAX),
|
|
|
|
|
extra: Some(String::from("info")),
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
@ -659,7 +660,8 @@ mod tests {
|
|
|
|
|
"kind": "access",
|
|
|
|
|
"paths": ["path"],
|
|
|
|
|
"details": {
|
|
|
|
|
"attributes": ["permissions"],
|
|
|
|
|
"attribute": "permissions",
|
|
|
|
|
"ts": u64::MAX,
|
|
|
|
|
"extra": "info",
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
@ -672,7 +674,7 @@ mod tests {
|
|
|
|
|
"type": "changed",
|
|
|
|
|
"ts": u64::MAX,
|
|
|
|
|
"kind": "access",
|
|
|
|
|
"paths": ["path"],
|
|
|
|
|
"paths": "path",
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
let payload: Response = serde_json::from_value(value).unwrap();
|
|
|
|
@ -681,7 +683,7 @@ mod tests {
|
|
|
|
|
Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails::default(),
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
@ -693,9 +695,10 @@ mod tests {
|
|
|
|
|
"type": "changed",
|
|
|
|
|
"ts": u64::MAX,
|
|
|
|
|
"kind": "access",
|
|
|
|
|
"paths": ["path"],
|
|
|
|
|
"path": "path",
|
|
|
|
|
"details": {
|
|
|
|
|
"attributes": ["permissions"],
|
|
|
|
|
"attribute": "permissions",
|
|
|
|
|
"ts": u64::MAX,
|
|
|
|
|
"extra": "info",
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
@ -706,9 +709,10 @@ mod tests {
|
|
|
|
|
Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails {
|
|
|
|
|
attributes: vec![ChangeDetailsAttributes::Permissions],
|
|
|
|
|
attribute: Some(ChangeDetailsAttribute::Permissions),
|
|
|
|
|
timestamp: Some(u64::MAX),
|
|
|
|
|
extra: Some(String::from("info")),
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
@ -720,7 +724,7 @@ mod tests {
|
|
|
|
|
let payload = Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails::default(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -736,9 +740,10 @@ mod tests {
|
|
|
|
|
let payload = Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails {
|
|
|
|
|
attributes: vec![ChangeDetailsAttributes::Permissions],
|
|
|
|
|
attribute: Some(ChangeDetailsAttribute::Permissions),
|
|
|
|
|
timestamp: Some(u64::MAX),
|
|
|
|
|
extra: Some(String::from("info")),
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
@ -759,7 +764,7 @@ mod tests {
|
|
|
|
|
let buf = rmp_serde::encode::to_vec_named(&Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails::default(),
|
|
|
|
|
}))
|
|
|
|
|
.unwrap();
|
|
|
|
@ -770,7 +775,7 @@ mod tests {
|
|
|
|
|
Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails::default(),
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
@ -785,9 +790,10 @@ mod tests {
|
|
|
|
|
let buf = rmp_serde::encode::to_vec_named(&Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails {
|
|
|
|
|
attributes: vec![ChangeDetailsAttributes::Permissions],
|
|
|
|
|
attribute: Some(ChangeDetailsAttribute::Permissions),
|
|
|
|
|
timestamp: Some(u64::MAX),
|
|
|
|
|
extra: Some(String::from("info")),
|
|
|
|
|
},
|
|
|
|
|
}))
|
|
|
|
@ -799,9 +805,10 @@ mod tests {
|
|
|
|
|
Response::Changed(Change {
|
|
|
|
|
timestamp: u64::MAX,
|
|
|
|
|
kind: ChangeKind::Access,
|
|
|
|
|
paths: vec![PathBuf::from("path")],
|
|
|
|
|
path: PathBuf::from("path"),
|
|
|
|
|
details: ChangeDetails {
|
|
|
|
|
attributes: vec![ChangeDetailsAttributes::Permissions],
|
|
|
|
|
attribute: Some(ChangeDetailsAttribute::Permissions),
|
|
|
|
|
timestamp: Some(u64::MAX),
|
|
|
|
|
extra: Some(String::from("info")),
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
@ -900,9 +907,9 @@ mod tests {
|
|
|
|
|
file_type: FileType::File,
|
|
|
|
|
len: u64::MAX,
|
|
|
|
|
readonly: true,
|
|
|
|
|
accessed: Some(u128::MAX),
|
|
|
|
|
created: Some(u128::MAX),
|
|
|
|
|
modified: Some(u128::MAX),
|
|
|
|
|
accessed: Some(u64::MAX),
|
|
|
|
|
created: Some(u64::MAX),
|
|
|
|
|
modified: Some(u64::MAX),
|
|
|
|
|
unix: Some(UnixMetadata {
|
|
|
|
|
owner_read: true,
|
|
|
|
|
owner_write: false,
|
|
|
|
@ -933,10 +940,6 @@ mod tests {
|
|
|
|
|
}),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// NOTE: These values are too big to normally serialize, so we have to convert them to
|
|
|
|
|
// a string type, which is why the value here also needs to be a string.
|
|
|
|
|
let u128_max_str = u128::MAX.to_string();
|
|
|
|
|
|
|
|
|
|
let value = serde_json::to_value(payload).unwrap();
|
|
|
|
|
assert_eq!(
|
|
|
|
|
value,
|
|
|
|
@ -946,9 +949,9 @@ mod tests {
|
|
|
|
|
"file_type": "file",
|
|
|
|
|
"len": u64::MAX,
|
|
|
|
|
"readonly": true,
|
|
|
|
|
"accessed": u128_max_str,
|
|
|
|
|
"created": u128_max_str,
|
|
|
|
|
"modified": u128_max_str,
|
|
|
|
|
"accessed": u64::MAX,
|
|
|
|
|
"created": u64::MAX,
|
|
|
|
|
"modified": u64::MAX,
|
|
|
|
|
"unix": {
|
|
|
|
|
"owner_read": true,
|
|
|
|
|
"owner_write": false,
|
|
|
|
@ -1009,16 +1012,15 @@ mod tests {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn should_be_able_to_deserialize_full_payload_from_json() {
|
|
|
|
|
let u128_max_str = u128::MAX.to_string();
|
|
|
|
|
let value = serde_json::json!({
|
|
|
|
|
"type": "metadata",
|
|
|
|
|
"canonicalized_path": "path",
|
|
|
|
|
"file_type": "file",
|
|
|
|
|
"len": u64::MAX,
|
|
|
|
|
"readonly": true,
|
|
|
|
|
"accessed": u128_max_str,
|
|
|
|
|
"created": u128_max_str,
|
|
|
|
|
"modified": u128_max_str,
|
|
|
|
|
"accessed": u64::MAX,
|
|
|
|
|
"created": u64::MAX,
|
|
|
|
|
"modified": u64::MAX,
|
|
|
|
|
"unix": {
|
|
|
|
|
"owner_read": true,
|
|
|
|
|
"owner_write": false,
|
|
|
|
@ -1057,9 +1059,9 @@ mod tests {
|
|
|
|
|
file_type: FileType::File,
|
|
|
|
|
len: u64::MAX,
|
|
|
|
|
readonly: true,
|
|
|
|
|
accessed: Some(u128::MAX),
|
|
|
|
|
created: Some(u128::MAX),
|
|
|
|
|
modified: Some(u128::MAX),
|
|
|
|
|
accessed: Some(u64::MAX),
|
|
|
|
|
created: Some(u64::MAX),
|
|
|
|
|
modified: Some(u64::MAX),
|
|
|
|
|
unix: Some(UnixMetadata {
|
|
|
|
|
owner_read: true,
|
|
|
|
|
owner_write: false,
|
|
|
|
@ -1120,9 +1122,9 @@ mod tests {
|
|
|
|
|
file_type: FileType::File,
|
|
|
|
|
len: u64::MAX,
|
|
|
|
|
readonly: true,
|
|
|
|
|
accessed: Some(u128::MAX),
|
|
|
|
|
created: Some(u128::MAX),
|
|
|
|
|
modified: Some(u128::MAX),
|
|
|
|
|
accessed: Some(u64::MAX),
|
|
|
|
|
created: Some(u64::MAX),
|
|
|
|
|
modified: Some(u64::MAX),
|
|
|
|
|
unix: Some(UnixMetadata {
|
|
|
|
|
owner_read: true,
|
|
|
|
|
owner_write: false,
|
|
|
|
@ -1207,9 +1209,9 @@ mod tests {
|
|
|
|
|
file_type: FileType::File,
|
|
|
|
|
len: u64::MAX,
|
|
|
|
|
readonly: true,
|
|
|
|
|
accessed: Some(u128::MAX),
|
|
|
|
|
created: Some(u128::MAX),
|
|
|
|
|
modified: Some(u128::MAX),
|
|
|
|
|
accessed: Some(u64::MAX),
|
|
|
|
|
created: Some(u64::MAX),
|
|
|
|
|
modified: Some(u64::MAX),
|
|
|
|
|
unix: Some(UnixMetadata {
|
|
|
|
|
owner_read: true,
|
|
|
|
|
owner_write: false,
|
|
|
|
@ -1249,9 +1251,9 @@ mod tests {
|
|
|
|
|
file_type: FileType::File,
|
|
|
|
|
len: u64::MAX,
|
|
|
|
|
readonly: true,
|
|
|
|
|
accessed: Some(u128::MAX),
|
|
|
|
|
created: Some(u128::MAX),
|
|
|
|
|
modified: Some(u128::MAX),
|
|
|
|
|
accessed: Some(u64::MAX),
|
|
|
|
|
created: Some(u64::MAX),
|
|
|
|
|
modified: Some(u64::MAX),
|
|
|
|
|
unix: Some(UnixMetadata {
|
|
|
|
|
owner_read: true,
|
|
|
|
|
owner_write: false,
|
|
|
|
|