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