this repo has no description
1mod common;
2use common::*;
3use reqwest::StatusCode;
4use reqwest::header;
5use serde_json::Value;
6
7#[tokio::test]
8async fn test_list_blobs_success() {
9 let client = client();
10 let (access_jwt, did) = create_account_and_login(&client).await;
11 let blob_res = client
12 .post(format!(
13 "{}/xrpc/com.atproto.repo.uploadBlob",
14 base_url().await
15 ))
16 .header(header::CONTENT_TYPE, "text/plain")
17 .bearer_auth(&access_jwt)
18 .body("test blob content")
19 .send()
20 .await
21 .expect("Failed to upload blob");
22 assert_eq!(blob_res.status(), StatusCode::OK);
23 let params = [("did", did.as_str())];
24 let res = client
25 .get(format!(
26 "{}/xrpc/com.atproto.sync.listBlobs",
27 base_url().await
28 ))
29 .query(¶ms)
30 .send()
31 .await
32 .expect("Failed to send request");
33 assert_eq!(res.status(), StatusCode::OK);
34 let body: Value = res.json().await.expect("Response was not valid JSON");
35 assert!(body["cids"].is_array());
36 let cids = body["cids"].as_array().unwrap();
37 assert!(!cids.is_empty());
38}
39
40#[tokio::test]
41async fn test_list_blobs_not_found() {
42 let client = client();
43 let params = [("did", "did:plc:nonexistent12345")];
44 let res = client
45 .get(format!(
46 "{}/xrpc/com.atproto.sync.listBlobs",
47 base_url().await
48 ))
49 .query(¶ms)
50 .send()
51 .await
52 .expect("Failed to send request");
53 assert_eq!(res.status(), StatusCode::NOT_FOUND);
54 let body: Value = res.json().await.expect("Response was not valid JSON");
55 assert_eq!(body["error"], "RepoNotFound");
56}
57
58#[tokio::test]
59async fn test_get_blob_success() {
60 let client = client();
61 let (access_jwt, did) = create_account_and_login(&client).await;
62 let blob_content = "test blob for get_blob";
63 let blob_res = client
64 .post(format!(
65 "{}/xrpc/com.atproto.repo.uploadBlob",
66 base_url().await
67 ))
68 .header(header::CONTENT_TYPE, "text/plain")
69 .bearer_auth(&access_jwt)
70 .body(blob_content)
71 .send()
72 .await
73 .expect("Failed to upload blob");
74 assert_eq!(blob_res.status(), StatusCode::OK);
75 let blob_body: Value = blob_res.json().await.expect("Response was not valid JSON");
76 let cid = blob_body["blob"]["ref"]["$link"].as_str().expect("No CID");
77 let params = [("did", did.as_str()), ("cid", cid)];
78 let res = client
79 .get(format!(
80 "{}/xrpc/com.atproto.sync.getBlob",
81 base_url().await
82 ))
83 .query(¶ms)
84 .send()
85 .await
86 .expect("Failed to send request");
87 assert_eq!(res.status(), StatusCode::OK);
88 assert_eq!(
89 res.headers()
90 .get("content-type")
91 .and_then(|h| h.to_str().ok()),
92 Some("text/plain")
93 );
94 let body = res.text().await.expect("Failed to get body");
95 assert_eq!(body, blob_content);
96}
97
98#[tokio::test]
99async fn test_get_blob_not_found() {
100 let client = client();
101 let (_, did) = create_account_and_login(&client).await;
102 let params = [
103 ("did", did.as_str()),
104 (
105 "cid",
106 "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku",
107 ),
108 ];
109 let res = client
110 .get(format!(
111 "{}/xrpc/com.atproto.sync.getBlob",
112 base_url().await
113 ))
114 .query(¶ms)
115 .send()
116 .await
117 .expect("Failed to send request");
118 assert_eq!(res.status(), StatusCode::NOT_FOUND);
119 let body: Value = res.json().await.expect("Response was not valid JSON");
120 assert_eq!(body["error"], "BlobNotFound");
121}