pub mod fixture; use fixture::TestServer; use anyhow::Result; use test_log::test as traced; #[traced(tokio::test)] async fn login_succeeds_with_valid_credentials() -> Result<()> { let server = TestServer::spawn().await; let client = reqwest::Client::new(); let resp = client .post(server.url("/auth/login")) .header("Content-Type", "application/x-www-form-urlencoded") .body("username=admin&password=hunter2") .send() .await?; assert_eq!(resp.status(), 200, "health check failed"); // TODO: //assert!(resp.headers().get("Set-Cookie").is_some(), "cookie set"); server.shutdown().await } #[traced(tokio::test)] async fn login_fails_with_invalid_credentials() -> Result<()> { let server = TestServer::spawn().await; let client = reqwest::Client::new(); let resp = client .post(server.url("/auth/login")) .header("Content-Type", "application/x-www-form-urlencoded") .body("username=admin&password=hunter3") .send() .await?; assert_ne!( resp.status(), 200, "login suceeded with invalid credentials" ); assert!( resp.headers().get("Set-Cookie").is_none(), "auth cookie was set for invalid crednetials" ); server.shutdown().await } #[traced(tokio::test)] async fn login_rejects_missing_credentials() -> Result<()> { let server = TestServer::spawn().await; let client = reqwest::Client::new(); let resp = client .post(server.url("/auth/login")) .header("Content-Type", "application/x-www-form-urlencoded") .body("username=&password=") .send() .await?; assert_eq!( resp.status(), 401, "login didn't reject missing credentials" ); assert!( resp.headers().get("Set-Cookie").is_none(), "auth cookie was set for missing crednetials" ); server.shutdown().await }