1use super::{File, FileIdentifier, FileResponse};
2
3impl crate::Client {
4 pub async fn delete_file(
32 &self,
33 identifier: impl Into<FileIdentifier<'_>>,
34 ) -> crate::Result<File> {
35 self.get_request::<FileResponse, _>("deletefile", identifier.into())
36 .await
37 .map(|res| res.metadata)
38 }
39}
40
41#[cfg(test)]
42mod http_tests {
43 use crate::{Client, Credentials};
44 use mockito::Matcher;
45
46 #[tokio::test]
47 async fn success() {
48 let mut server = mockito::Server::new_async().await;
49 let m = server
50 .mock("GET", "/deletefile")
51 .match_query(Matcher::AllOf(vec![
52 Matcher::UrlEncoded("access_token".into(), "access-token".into()),
53 Matcher::UrlEncoded("fileid".into(), "42".into()),
54 ]))
55 .with_status(200)
56 .with_body(
57 r#"{
58 "result": 0,
59 "metadata": {
60 "name": "C61EWBrr2sU16GM4.bin",
61 "created": "Sat, 24 Jul 2021 07:38:41 +0000",
62 "thumb": false,
63 "modified": "Sat, 24 Jul 2021 07:38:41 +0000",
64 "isfolder": false,
65 "isdeleted": true,
66 "fileid": 42,
67 "hash": 9403476549337371523,
68 "comments": 0,
69 "category": 0,
70 "id": "f5257731387",
71 "isshared": false,
72 "ismine": true,
73 "size": 10485760,
74 "parentfolderid": 1075398908,
75 "contenttype": "application\/octet-stream",
76 "icon": "file"
77 }
78}"#,
79 )
80 .create();
81 let client = Client::new(server.url(), Credentials::access_token("access-token")).unwrap();
82 let result = client.delete_file(42).await.unwrap();
83 assert_eq!(result.file_id, 42);
84 m.assert();
85 }
86}