diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2025-01-27 22:57:15 +0100 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2025-01-27 22:57:15 +0100 |
| commit | 9d14d9ca39b46042c4196382613dd9c4bf711fcb (patch) | |
| tree | a01c21f158b43cea3aea67e90530e49cd061cd11 /server/src/tests.rs | |
| parent | 59035c4532110a9fec8309bbda55d8ba6d14ce94 (diff) | |
Add user keys to database
Next step is to generate authorized_keys files for git server
based on keys.
Diffstat (limited to 'server/src/tests.rs')
| -rw-r--r-- | server/src/tests.rs | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/server/src/tests.rs b/server/src/tests.rs index f1489d8..4567c49 100644 --- a/server/src/tests.rs +++ b/server/src/tests.rs @@ -208,6 +208,27 @@ async fn get_reviews<'a>(client: &Client, project_url: impl Display) -> api_mode .unwrap() } +async fn get_user_key_from<'a>(request: LocalRequest<'a>) -> api_model::UserKey { + request + .header(&FAKE_IP) + .dispatch() + .await + .into_json::<api_model::UserKey>() + .await + .unwrap() +} + +async fn get_user_keys<'a>(client: &Client) -> api_model::UserKeys { + client + .get("/api/v1/user/keys") + .header(&FAKE_IP) + .dispatch() + .await + .into_json::<api_model::UserKeys>() + .await + .unwrap() +} + #[rocket::async_test] async fn test_not_logged_in_status() { let client = async_client_with_private_database(function_name!().to_string()).await; @@ -818,3 +839,91 @@ async fn test_project_reviews_unknown_project() { .await; assert_eq!(reviews.status(), Status::NotFound); } + +#[rocket::async_test] +async fn test_user_keys_empty() { + let client = async_client_with_private_database(function_name!().to_string()).await; + + login(&client).await; + + let user_keys = get_user_keys(&client).await; + assert_eq!(user_keys.total_count, 0); + assert_eq!(user_keys.more, false); + assert_eq!(user_keys.keys.len(), 0); +} + +#[rocket::async_test] +async fn test_user_keys_add() { + let client = async_client_with_private_database(function_name!().to_string()).await; + + login(&client).await; + + let key1 = get_user_key_from(client.post("/api/v1/user/keys/add").json( + &api_model::UserKeyData { + kind: "kind", + data: "data", + comment: None, + }, + )) + .await; + + assert_eq!(key1.kind, "kind"); + assert_eq!(key1.data, "data"); + assert_eq!(key1.comment, ""); + + let mut user_keys = get_user_keys(&client).await; + assert_eq!(user_keys.total_count, 1); + assert_eq!(user_keys.more, false); + assert_eq!(user_keys.keys.len(), 1); + let key2 = user_keys.keys.get(0).unwrap(); + assert_eq!(*key2, key1); + + let key3 = get_user_key_from(client.get(format!("/api/v1/user/keys/{}", key1.id))).await; + assert_eq!(key3, key1); + + let key4 = get_user_key_from(client.post("/api/v1/user/keys/add").json( + &api_model::UserKeyData { + kind: "another kind", + data: "more data", + comment: Some("comment"), + }, + )) + .await; + + user_keys = get_user_keys(&client).await; + assert_eq!(user_keys.total_count, 2); + assert_eq!(user_keys.more, false); + assert_eq!(user_keys.keys.len(), 2); + let key5 = user_keys.keys.get(0).unwrap(); + let key6 = user_keys.keys.get(1).unwrap(); + assert_eq!(*key5, key1); + assert_eq!(*key6, key4); +} + +#[rocket::async_test] +async fn test_user_keys_del() { + let client = async_client_with_private_database(function_name!().to_string()).await; + + login(&client).await; + + let key = get_user_key_from(client.post("/api/v1/user/keys/add").json( + &api_model::UserKeyData { + kind: "kind", + data: "data", + comment: None, + }, + )) + .await; + + let delete = client + .delete(format!("/api/v1/user/keys/{}", key.id)) + .header(&FAKE_IP) + .dispatch() + .await; + assert_eq!(delete.status(), Status::Ok); + + let user_keys = get_user_keys(&client).await; + assert_eq!(user_keys.total_count, 0); + assert_eq!(user_keys.more, false); + assert_eq!(user_keys.keys.len(), 0); +} |
