diff options
Diffstat (limited to 'backend/tests/login.rs')
-rw-r--r-- | backend/tests/login.rs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/backend/tests/login.rs b/backend/tests/login.rs new file mode 100644 index 0000000..60c5d6f --- /dev/null +++ b/backend/tests/login.rs @@ -0,0 +1,61 @@ +#![feature(async_closure)] +extern crate mozaic4_backend; + +use rocket::http::{ContentType, Status}; + +mod util; +use util::run_test; + +#[rocket::async_test] +async fn test_registration() { + run_test(async move |client, _conn| { + let response = client + .post("/register") + .header(ContentType::JSON) + .body(r#"{"username": "piepkonijn", "password": "geheim123"}"#) + .dispatch() + .await; + + assert_eq!(response.status(), Status::Ok); + assert_eq!(response.content_type(), Some(ContentType::JSON)); + + let response = client + .post("/login") + .header(ContentType::JSON) + .body(r#"{"username": "piepkonijn", "password": "geheim123"}"#) + .dispatch() + .await; + + assert_eq!(response.status(), Status::Ok); + let token = response.into_string().await.unwrap(); + + let response = client + .get("/users/me") + .header(util::BearerAuth::new(token)) + .dispatch() + .await; + + assert_eq!(response.status(), Status::Ok); + assert_eq!(response.content_type(), Some(ContentType::JSON)); + let resp = response.into_string().await.unwrap(); + let json: serde_json::Value = serde_json::from_str(&resp).unwrap(); + assert_eq!(json["username"], "piepkonijn"); + }) + .await +} + +#[rocket::async_test] +async fn test_reject_invalid_credentials() { + run_test(async move |client, _conn| { + let response = client + .post("/login") + .header(ContentType::JSON) + .body(r#"{"username": "piepkonijn", "password": "letmeinplease"}"#) + .dispatch() + .await; + + assert_eq!(response.status(), Status::Forbidden); + // assert_eq!(response.content_type(), Some(ContentType::JSON)); + }) + .await +} |