volga 0.9.0

Easy & Fast Web Framework for Rust
Documentation
#![allow(missing_docs)]
#![cfg(feature = "test")]

use volga::headers::{ContentType, Header, HttpHeaders};
use volga::ok;
use volga::test::TestServer;

#[tokio::test]
async fn it_reads_headers() {
    let server = TestServer::spawn(|app| {
        app.map_get("/test", |headers: HttpHeaders| async move {
            ok!(
                "{}",
                headers.get_raw("x-api-key").unwrap().to_str().unwrap()
            )
        });
    })
    .await;

    let response = server
        .client()
        .get(server.url("/test"))
        .header("x-api-key", "some-api-key")
        .send()
        .await
        .unwrap();

    assert!(response.status().is_success());
    assert_eq!(response.text().await.unwrap(), "some-api-key");

    server.shutdown().await;
}

#[tokio::test]
async fn it_reads_specific_header() {
    let server = TestServer::spawn(|app| {
        app.map_get("/test", |content_type: Header<ContentType>| async move {
            ok!("{content_type}")
        });
    })
    .await;

    let response = server
        .client()
        .get(server.url("/test"))
        .header("Content-Type", "text/plain")
        .send()
        .await
        .unwrap();

    assert!(response.status().is_success());
    assert_eq!(response.text().await.unwrap(), "content-type: text/plain");

    server.shutdown().await;
}

#[tokio::test]
async fn it_writes_headers() {
    let server = TestServer::spawn(|app| {
        app.map_get("/test", || async move {
            ok!("ok!"; [
                ("x-api-key", "some-api-key")
            ])
        });
    })
    .await;

    let response = server
        .client()
        .get(server.url("/test"))
        .send()
        .await
        .unwrap();

    assert!(response.status().is_success());
    assert_eq!(response.headers().get("x-api-key").unwrap(), "some-api-key");
    assert_eq!(response.text().await.unwrap(), "ok!");

    server.shutdown().await;
}