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(&params) 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(&params) 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(&params) 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(&params) 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}