summaryrefslogtreecommitdiff
path: root/server/src/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/tests.rs')
-rw-r--r--server/src/tests.rs109
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);
+}