quorum_public/tests/functional/
auth_tests.rs1use crate::startup;
2use crate::tests::TestResult;
3use crate::tests::common::{cleanup_user, create_test_user, get_test_username, make_auth_request};
4use serde_json::json;
5
6pub async fn test_signup_email() -> Result<TestResult, String> {
7 let (_, _, _, timings) = create_test_user("TestPassword123!", true, true).await?;
8 Ok(TestResult {
9 endpoint_time: timings.signup,
10 })
11}
12
13pub async fn test_signup_username() -> Result<TestResult, String> {
14 let (_, _, _, timings) = create_test_user("TestPassword123!", false, true).await?;
15 Ok(TestResult {
16 endpoint_time: timings.signup,
17 })
18}
19
20pub async fn test_login_email() -> Result<TestResult, String> {
21 let (_, _, _, timings) = create_test_user("TestPassword123!", true, true).await?;
22 Ok(TestResult {
23 endpoint_time: timings.login,
24 })
25}
26
27pub async fn test_login_username() -> Result<TestResult, String> {
28 let (_, _, _, timings) = create_test_user("TestPassword123!", false, true).await?;
29 Ok(TestResult {
30 endpoint_time: timings.login,
31 })
32}
33
34pub async fn test_delete_user_account_email() -> Result<TestResult, String> {
35 let (username, password, user_id, _) =
36 create_test_user("TestPassword123!", true, false).await?;
37
38 make_auth_request(
39 "/auth/me",
40 &json!({
41 "username_or_email": username,
42 "password": password,
43 "user_id": user_id,
44 "fields": ["id"]
45 }),
46 200,
47 )
48 .await?;
49
50 let timer = startup::create_timer();
51 make_auth_request(
52 "/auth/delete",
53 &json!({
54 "username_or_email": username,
55 "password": password,
56 "user_id": user_id
57 }),
58 200,
59 )
60 .await?;
61 let endpoint_time = timer.elapsed();
62
63 Ok(TestResult { endpoint_time })
64}
65
66pub async fn test_delete_user_account_username() -> Result<TestResult, String> {
67 let (username, password, user_id, _) =
68 create_test_user("TestPassword123!", false, false).await?;
69
70 let timer = startup::create_timer();
71 make_auth_request(
72 "/auth/delete",
73 &json!({
74 "username_or_email": username,
75 "password": password,
76 "user_id": user_id
77 }),
78 200,
79 )
80 .await?;
81 let endpoint_time = timer.elapsed();
82
83 Ok(TestResult { endpoint_time })
84}
85
86pub async fn test_refresh_token() -> Result<TestResult, String> {
87 let (username, password, user_id, _) =
88 create_test_user("TestPassword123!", false, false).await?;
89
90 let login_body = make_auth_request(
91 "/auth/login",
92 &json!({
93 "username_or_email": username,
94 "password": password
95 }),
96 200,
97 )
98 .await?;
99
100 let refresh_token = login_body["tokens"]["refresh_token"]
101 .as_str()
102 .ok_or("Failed to get refresh token")?
103 .to_string();
104
105 let timer = startup::create_timer();
106 let refresh_body = make_auth_request(
107 "/auth/refresh",
108 &json!({
109 "refresh_token": refresh_token,
110 "user_id": user_id
111 }),
112 200,
113 )
114 .await?;
115 let endpoint_time = timer.elapsed();
116
117 if refresh_body["tokens"]["access_token"].as_str().is_none() {
118 return Err("Failed to get new access token".to_string());
119 }
120
121 let _ = cleanup_user(&username, &password, &user_id).await;
122 Ok(TestResult { endpoint_time })
123}
124
125pub async fn test_logout() -> Result<TestResult, String> {
126 let (username, password, user_id, _) =
127 create_test_user("TestPassword123!", false, false).await?;
128
129 let login_body = make_auth_request(
130 "/auth/login",
131 &json!({
132 "username_or_email": username,
133 "password": password
134 }),
135 200,
136 )
137 .await?;
138
139 let refresh_token = login_body["tokens"]["refresh_token"]
140 .as_str()
141 .ok_or("Failed to get refresh token")?
142 .to_string();
143
144 let timer = startup::create_timer();
145 make_auth_request(
146 "/auth/logout",
147 &json!({
148 "refresh_token": refresh_token,
149 "user_id": user_id
150 }),
151 200,
152 )
153 .await?;
154 let endpoint_time = timer.elapsed();
155
156 let _ = cleanup_user(&username, &password, &user_id).await;
157 Ok(TestResult { endpoint_time })
158}
159
160pub async fn test_update_user_profile() -> Result<TestResult, String> {
161 let (_, password, user_id, _) = create_test_user("TestPassword123!", false, false).await?;
162
163 let new_username = get_test_username();
164
165 let timer = startup::create_timer();
166 make_auth_request(
167 "/auth/updateuserprofile",
168 &json!({
169 "user_id": user_id,
170 "username": new_username
171 }),
172 200,
173 )
174 .await?;
175 let endpoint_time = timer.elapsed();
176
177 let _ = cleanup_user(&new_username, &password, &user_id).await;
178 Ok(TestResult { endpoint_time })
179}