aboutsummaryrefslogtreecommitdiff
path: root/backend/tests/login.rs
diff options
context:
space:
mode:
Diffstat (limited to 'backend/tests/login.rs')
-rw-r--r--backend/tests/login.rs61
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
+}