fregate 0.17.1

Framework for services creation
Documentation
mod headers_ext_test {
    use fregate::extensions::HeaderFilterExt;
    use fregate::observability::SANITIZED_VALUE;
    use fregate::{bootstrap, AppConfig, ConfigSource};
    use hyper::http::HeaderValue;
    use hyper::{Body, Request};

    #[tokio::test]
    async fn headers_ext_test() {
        std::env::set_var("TEST_HEADERS_INCLUDE", "authorization,password");
        std::env::set_var("TEST_HEADERS_SANITIZE", "password,authorization");
        std::env::set_var("TEST_HEADERS_EXCLUDE", "password,");

        let _config: AppConfig = bootstrap([ConfigSource::EnvPrefix("TEST")]).unwrap();

        let request = Request::builder()
            .method("GET")
            .header("PassworD", "PasswordValue")
            .header("authorization", "authorization")
            .header("is_client", "true")
            .body(Body::empty())
            .expect("Failed to build request");

        let sanitized_headers = request.headers().get_filtered();

        assert_eq!(sanitized_headers.get("PassworD"), None, "Must be Excluded");
        assert_eq!(
            sanitized_headers.get("authorization"),
            Some(&HeaderValue::from_static(SANITIZED_VALUE)),
            "Included and sanitized"
        );
        assert_eq!(sanitized_headers.get("is_client"), None, "Not included");
    }
}