mirror of
https://github.com/kristoferssolo/zero2prod.git
synced 2026-02-04 06:42:07 +00:00
finished chapter 3.7
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
use reqwest::Client;
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
#[tokio::test]
|
||||
async fn health_check() {
|
||||
let address = spawn_app().await;
|
||||
let url = format!("{}/health_check", &address);
|
||||
let client = reqwest::Client::new();
|
||||
let client = Client::new();
|
||||
let response = client
|
||||
.get(&url)
|
||||
.send()
|
||||
@@ -15,6 +16,52 @@ async fn health_check() {
|
||||
assert_eq!(Some(0), response.content_length());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn subscribe_returns_200_for_valid_form_data() {
|
||||
let address = spawn_app().await;
|
||||
let client = Client::new();
|
||||
|
||||
let body = "name=kristofers%20solo&email=dev%40kristofers.solo";
|
||||
let response = client
|
||||
.post(&format!("{}/subscribtions", &address))
|
||||
.header("Content-Type", "application/x-www-form-urlencoded")
|
||||
.body(body)
|
||||
.send()
|
||||
.await
|
||||
.expect("Failed to execute request.");
|
||||
|
||||
assert_eq!(200, response.status().as_u16());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn subscribe_returns_400_when_data_is_missing() {
|
||||
let address = spawn_app().await;
|
||||
let client = Client::new();
|
||||
|
||||
let test_cases = vec![
|
||||
("name=krisotfers%20solo", "missing the email"),
|
||||
("email=dev%40kristofers.solo", "missing the name"),
|
||||
("", "missing both name and email"),
|
||||
];
|
||||
|
||||
for (invalid_body, error_message) in test_cases {
|
||||
let response = client
|
||||
.post(&format!("{}/subscribtions", &address))
|
||||
.header("Content-Type", "application/x-www-form-urlencoded")
|
||||
.body(invalid_body)
|
||||
.send()
|
||||
.await
|
||||
.expect("Failed to execute request.");
|
||||
|
||||
assert_eq!(
|
||||
422,
|
||||
response.status().as_u16(),
|
||||
"The API did not call with 400 Bad Request when the payload was {}.",
|
||||
error_message
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async fn spawn_app() -> String {
|
||||
let listener = TcpListener::bind("127.0.0.1:0")
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user