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(¶ms)
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(¶ms)
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(¶ms)
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(¶ms)
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(¶ms)
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}