···1mod common;
2-use common::{base_url, client, create_account_and_login};
3use serde_json::Value;
45#[tokio::test]
6async fn test_get_server_stats() {
7 let client = client();
8 let base = base_url().await;
9- let (token1, _) = create_account_and_login(&client).await;
1011- let (_, _) = create_account_and_login(&client).await;
1213 let resp = client
14 .get(format!("{}/xrpc/com.bspds.admin.getServerStats", base))
···1mod common;
2+use common::{base_url, client, create_admin_account_and_login};
3use serde_json::Value;
45#[tokio::test]
6async fn test_get_server_stats() {
7 let client = client();
8 let base = base_url().await;
9+ let (token1, _) = create_admin_account_and_login(&client).await;
1011+ let (_, _) = create_admin_account_and_login(&client).await;
1213 let resp = client
14 .get(format!("{}/xrpc/com.bspds.admin.getServerStats", base))
+18-4
tests/common/mod.rs
···511512#[allow(dead_code)]
513pub async fn create_account_and_login(client: &Client) -> (String, String) {
000000000514 let mut last_error = String::new();
515 for attempt in 0..3 {
516 if attempt > 0 {
···539 };
540 if res.status() == StatusCode::OK {
541 let body: Value = res.json().await.expect("Invalid JSON");
542- if let Some(access_jwt) = body["accessJwt"].as_str() {
543- let did = body["did"].as_str().expect("No did").to_string();
544- return (access_jwt.to_string(), did);
545- }
546 let did = body["did"].as_str().expect("No did").to_string();
547 let conn_str = get_db_connection_string().await;
548 let pool = sqlx::postgres::PgPoolOptions::new()
···550 .connect(&conn_str)
551 .await
552 .expect("Failed to connect to test database");
000000000553 let verification_code: String = sqlx::query_scalar!(
554 "SELECT code FROM channel_verifications WHERE user_id = (SELECT id FROM users WHERE did = $1) AND channel = 'email'",
555 &did
···511512#[allow(dead_code)]
513pub async fn create_account_and_login(client: &Client) -> (String, String) {
514+ create_account_and_login_internal(client, false).await
515+}
516+517+#[allow(dead_code)]
518+pub async fn create_admin_account_and_login(client: &Client) -> (String, String) {
519+ create_account_and_login_internal(client, true).await
520+}
521+522+async fn create_account_and_login_internal(client: &Client, make_admin: bool) -> (String, String) {
523 let mut last_error = String::new();
524 for attempt in 0..3 {
525 if attempt > 0 {
···548 };
549 if res.status() == StatusCode::OK {
550 let body: Value = res.json().await.expect("Invalid JSON");
0000551 let did = body["did"].as_str().expect("No did").to_string();
552 let conn_str = get_db_connection_string().await;
553 let pool = sqlx::postgres::PgPoolOptions::new()
···555 .connect(&conn_str)
556 .await
557 .expect("Failed to connect to test database");
558+ if make_admin {
559+ sqlx::query!("UPDATE users SET is_admin = TRUE WHERE did = $1", &did)
560+ .execute(&pool)
561+ .await
562+ .expect("Failed to mark user as admin");
563+ }
564+ if let Some(access_jwt) = body["accessJwt"].as_str() {
565+ return (access_jwt.to_string(), did);
566+ }
567 let verification_code: String = sqlx::query_scalar!(
568 "SELECT code FROM channel_verifications WHERE user_id = (SELECT id FROM users WHERE did = $1) AND channel = 'email'",
569 &did