in core/src/services/onedrive/graph_model.rs [183:251]
fn test_parse_one_drive_list_response_json() {
let data = r#"{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('opendal@outlook.com')/drive/root/children(id,name,lastModifiedDateTime,eTag,size,parentReference,folder,file)",
"value": [
{
"@odata.etag": "\"{3B131E1C-7D81-20AF-80D0-450D00000000},10\"",
"eTag": "\"{3B131E1C-7D81-20AF-80D0-450D00000000},10\"",
"id": "A0AA0A000A000A0A!3397",
"lastModifiedDateTime": "2025-02-23T11:45:26Z",
"name": "empty_folder",
"size": 0,
"parentReference": {
"driveType": "personal",
"driveId": "A0AA0A000A000A0A",
"id": "A0AA0A000A000A0A!sea8cc6beffdb43d7976fbc7da445c639",
"name": "Documents",
"path": "/drive/root:",
"siteId": "5f1f11f3-a6b4-4414-aee0-215c774f80db"
},
"folder": {
"childCount": 0,
"view": {
"sortBy": "name",
"sortOrder": "ascending",
"viewType": "thumbnails"
}
}
},
{
"@odata.etag": "\"{3B131E1C-7D81-20AF-80D0-710000000000},6\"",
"eTag": "\"{3B131E1C-7D81-20AF-80D0-710000000000},6\"",
"id": "A0AA0A000A000A0A!113",
"lastModifiedDateTime": "2025-02-16T19:48:39Z",
"name": "folder_a",
"size": 10560537,
"parentReference": {
"driveType": "personal",
"driveId": "A0AA0A000A000A0A",
"id": "A0AA0A000A000A0A!sea8cc6beffdb43d7976fbc7da445c639",
"name": "Documents",
"path": "/drive/root:",
"siteId": "5f1f11f3-a6b4-4414-aee0-215c774f80db"
},
"folder": {
"childCount": 5,
"view": {
"sortBy": "name",
"sortOrder": "ascending",
"viewType": "thumbnails"
}
}
}
]
}"#;
let response: GraphApiOneDriveListResponse = serde_json::from_str(data).unwrap();
assert_eq!(response.value.len(), 2);
let item = &response.value[0];
assert_eq!(item.name, "empty_folder");
assert_eq!(item.last_modified_date_time, "2025-02-23T11:45:26Z");
assert_eq!(item.e_tag, "\"{3B131E1C-7D81-20AF-80D0-450D00000000},10\"");
assert_eq!(item.size, 0);
assert_eq!(item.parent_reference.path, "/drive/root:");
if let ItemType::Folder { folder, .. } = &item.item_type {
assert_eq!(folder.child_count, 0);
} else {
panic!("item_type is not a folder");
}
}