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