this repo has no description
1mod common; 2use common::*; 3use reqwest::StatusCode; 4use serde_json::Value; 5 6#[tokio::test] 7async fn test_get_latest_commit_success() { 8 let client = client(); 9 let (_, did) = create_account_and_login(&client).await; 10 11 let params = [("did", did.as_str())]; 12 let res = client 13 .get(format!( 14 "{}/xrpc/com.atproto.sync.getLatestCommit", 15 base_url().await 16 )) 17 .query(&params) 18 .send() 19 .await 20 .expect("Failed to send request"); 21 22 assert_eq!(res.status(), StatusCode::OK); 23 let body: Value = res.json().await.expect("Response was not valid JSON"); 24 assert!(body["cid"].is_string()); 25 assert!(body["rev"].is_string()); 26} 27 28#[tokio::test] 29async fn test_get_latest_commit_not_found() { 30 let client = client(); 31 let params = [("did", "did:plc:nonexistent12345")]; 32 let res = client 33 .get(format!( 34 "{}/xrpc/com.atproto.sync.getLatestCommit", 35 base_url().await 36 )) 37 .query(&params) 38 .send() 39 .await 40 .expect("Failed to send request"); 41 42 assert_eq!(res.status(), StatusCode::NOT_FOUND); 43 let body: Value = res.json().await.expect("Response was not valid JSON"); 44 assert_eq!(body["error"], "RepoNotFound"); 45} 46 47#[tokio::test] 48async fn test_get_latest_commit_missing_param() { 49 let client = client(); 50 let res = client 51 .get(format!( 52 "{}/xrpc/com.atproto.sync.getLatestCommit", 53 base_url().await 54 )) 55 .send() 56 .await 57 .expect("Failed to send request"); 58 59 assert_eq!(res.status(), StatusCode::BAD_REQUEST); 60} 61 62#[tokio::test] 63async fn test_list_repos() { 64 let client = client(); 65 let _ = create_account_and_login(&client).await; 66 67 let res = client 68 .get(format!( 69 "{}/xrpc/com.atproto.sync.listRepos", 70 base_url().await 71 )) 72 .send() 73 .await 74 .expect("Failed to send request"); 75 76 assert_eq!(res.status(), StatusCode::OK); 77 let body: Value = res.json().await.expect("Response was not valid JSON"); 78 assert!(body["repos"].is_array()); 79 let repos = body["repos"].as_array().unwrap(); 80 assert!(!repos.is_empty()); 81 82 let repo = &repos[0]; 83 assert!(repo["did"].is_string()); 84 assert!(repo["head"].is_string()); 85 assert!(repo["active"].is_boolean()); 86} 87 88#[tokio::test] 89async fn test_list_repos_with_limit() { 90 let client = client(); 91 let _ = create_account_and_login(&client).await; 92 let _ = create_account_and_login(&client).await; 93 let _ = create_account_and_login(&client).await; 94 95 let params = [("limit", "2")]; 96 let res = client 97 .get(format!( 98 "{}/xrpc/com.atproto.sync.listRepos", 99 base_url().await 100 )) 101 .query(&params) 102 .send() 103 .await 104 .expect("Failed to send request"); 105 106 assert_eq!(res.status(), StatusCode::OK); 107 let body: Value = res.json().await.expect("Response was not valid JSON"); 108 let repos = body["repos"].as_array().unwrap(); 109 assert!(repos.len() <= 2); 110} 111 112#[tokio::test] 113async fn test_list_repos_pagination() { 114 let client = client(); 115 let _ = create_account_and_login(&client).await; 116 let _ = create_account_and_login(&client).await; 117 let _ = create_account_and_login(&client).await; 118 119 let params = [("limit", "1")]; 120 let res = client 121 .get(format!( 122 "{}/xrpc/com.atproto.sync.listRepos", 123 base_url().await 124 )) 125 .query(&params) 126 .send() 127 .await 128 .expect("Failed to send request"); 129 130 assert_eq!(res.status(), StatusCode::OK); 131 let body: Value = res.json().await.expect("Response was not valid JSON"); 132 let repos = body["repos"].as_array().unwrap(); 133 assert_eq!(repos.len(), 1); 134 135 if let Some(cursor) = body["cursor"].as_str() { 136 let params = [("limit", "1"), ("cursor", cursor)]; 137 let res = client 138 .get(format!( 139 "{}/xrpc/com.atproto.sync.listRepos", 140 base_url().await 141 )) 142 .query(&params) 143 .send() 144 .await 145 .expect("Failed to send request"); 146 147 assert_eq!(res.status(), StatusCode::OK); 148 let body: Value = res.json().await.expect("Response was not valid JSON"); 149 let repos2 = body["repos"].as_array().unwrap(); 150 assert_eq!(repos2.len(), 1); 151 assert_ne!(repos[0]["did"], repos2[0]["did"]); 152 } 153}