You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: headers.rs
    path of file: ./repos/grafbase/cli/crates/cli/tests/graphql-directive
    
    the code of the file until where you have to start completion: use std::fmt::Display;

use backend::project::GraphType;
use serde_json::{json, Value};

use crate::{
    server,
    utils::{async_client::AsyncClient, environment::Environment},
};

#[tokio::test(flavor = "multi_thread")]
async fn test_header_forwarding() {
    let port = server::run().await;

    let mut env = Environment::init_async().await;
    let client = start_grafbase(&mut env, schema(port)).await;

    let mut response = client
        .gql::<Value>(
            r"
                query {
                    headers {
                        name
                        value
                    }
                }
        ",
        )
        .header("wow-what-a-header", "isn't it the best")
        .header("and-another-one", "yes")
        .header("a-header-that-shouldnt-be-forwarded", "ok")
        .header("Authorization", "Basic XYZ")
        .await;

    // Remove the host header because it's dynamic
    response.get_mut("data").and_then(|data| {
        let headers = data.get_mut("headers")?;

        let host_header_index = headers
            .as_array()?
            .iter()
            .enumerate()
            .find(|(_, header)| header.get("name") == Some(&json!("host")))?
            .0
    
async fn test_header_forwarding() {
    let port = server::run().await;

    let mut env = Environment::init_async().await;
    let client = start_grafbase(&mut env, schema(port)).await;

    let mut response = client
        .gql::<Value>(
            r"
                query {
                    headers {
                        name
                        value
                    }
                }
        ",
        )
        .header("wow-what-a-header", "isn't it the best")
        .header("and-another-one", "yes")
        .header("a-header-that-shouldnt-be-forwarded", "ok")
        .header("Authorization", "Basic XYZ")
        .await;

    // Remove the host header because it's dynamic
    response.get_mut("data").and_then(|data| {
        let headers = data.get_mut("headers")?;

        let host_header_index = headers
            .as_array()?
            .iter()
            .enumerate()
            .find(|(_, header)| header.get("name") == Some(&json!("host")))?
            .0;

        headers.as_array_mut()?.remove(host_header_index);
        Some(())
    });

    insta::assert_yaml_snapshot!(response, @r###"
    ---
    data:
      headers:
        - name: user-agent
          value: Grafbase
        - name: content-type
          value: application/json
        - name: authorization
          value: Bearer BLAH
        - name: wow-what-a-header
          value: "isn't it the best"
        - name: another-one
          value: "yes"
        - name: accept
          value: "*/*"
        - name: accept-encoding
          value: gzip
        - name: content-length
          value: "96"
    "###);
}