this repo has no description
1mod common; 2use common::*; 3 4use reqwest::StatusCode; 5use serde_json::json; 6 7#[tokio::test] 8async fn test_import_repo_requires_auth() { 9 let client = client(); 10 11 let res = client 12 .post(format!("{}/xrpc/com.atproto.repo.importRepo", base_url().await)) 13 .header("Content-Type", "application/vnd.ipld.car") 14 .body(vec![0u8; 100]) 15 .send() 16 .await 17 .expect("Request failed"); 18 19 assert_eq!(res.status(), StatusCode::UNAUTHORIZED); 20} 21 22#[tokio::test] 23async fn test_import_repo_invalid_car() { 24 let client = client(); 25 let (token, _did) = create_account_and_login(&client).await; 26 27 let res = client 28 .post(format!("{}/xrpc/com.atproto.repo.importRepo", base_url().await)) 29 .bearer_auth(&token) 30 .header("Content-Type", "application/vnd.ipld.car") 31 .body(vec![0u8; 100]) 32 .send() 33 .await 34 .expect("Request failed"); 35 36 assert_eq!(res.status(), StatusCode::BAD_REQUEST); 37 let body: serde_json::Value = res.json().await.unwrap(); 38 assert_eq!(body["error"], "InvalidRequest"); 39} 40 41#[tokio::test] 42async fn test_import_repo_empty_body() { 43 let client = client(); 44 let (token, _did) = create_account_and_login(&client).await; 45 46 let res = client 47 .post(format!("{}/xrpc/com.atproto.repo.importRepo", base_url().await)) 48 .bearer_auth(&token) 49 .header("Content-Type", "application/vnd.ipld.car") 50 .body(vec![]) 51 .send() 52 .await 53 .expect("Request failed"); 54 55 assert_eq!(res.status(), StatusCode::BAD_REQUEST); 56} 57 58#[tokio::test] 59async fn test_import_repo_with_exported_repo() { 60 let client = client(); 61 let (token, did) = create_account_and_login(&client).await; 62 63 let post_payload = json!({ 64 "repo": did, 65 "collection": "app.bsky.feed.post", 66 "record": { 67 "$type": "app.bsky.feed.post", 68 "text": "Test post for import", 69 "createdAt": chrono::Utc::now().to_rfc3339(), 70 } 71 }); 72 73 let create_res = client 74 .post(format!( 75 "{}/xrpc/com.atproto.repo.createRecord", 76 base_url().await 77 )) 78 .bearer_auth(&token) 79 .json(&post_payload) 80 .send() 81 .await 82 .expect("Failed to create post"); 83 assert_eq!(create_res.status(), StatusCode::OK); 84 85 let export_res = client 86 .get(format!( 87 "{}/xrpc/com.atproto.sync.getRepo?did={}", 88 base_url().await, 89 did 90 )) 91 .send() 92 .await 93 .expect("Failed to export repo"); 94 assert_eq!(export_res.status(), StatusCode::OK); 95 96 let car_bytes = export_res.bytes().await.expect("Failed to get CAR bytes"); 97 98 let import_res = client 99 .post(format!("{}/xrpc/com.atproto.repo.importRepo", base_url().await)) 100 .bearer_auth(&token) 101 .header("Content-Type", "application/vnd.ipld.car") 102 .body(car_bytes.to_vec()) 103 .send() 104 .await 105 .expect("Failed to import repo"); 106 107 assert_eq!(import_res.status(), StatusCode::OK); 108} 109