mongodb 2.8.2

The official MongoDB driver for Rust
Documentation
use super::Handshaker;
use crate::{bson::doc, cmap::establish::handshake::HandshakerOptions, options::DriverInfo};

#[test]
fn metadata_no_options() {
    let handshaker = Handshaker::new(HandshakerOptions {
        app_name: None,
        compressors: None,
        driver_info: None,
        server_api: None,
        load_balanced: false,
    });

    let metadata = handshaker.command.body.get_document("client").unwrap();
    assert!(!metadata.contains_key("application"));

    let driver = metadata.get_document("driver").unwrap();
    assert_eq!(driver.keys().collect::<Vec<_>>(), vec!["name", "version"]);
    assert_eq!(driver.get_str("name"), Ok("mongo-rust-driver"));
    assert_eq!(driver.get_str("version"), Ok(env!("CARGO_PKG_VERSION")));

    let os = metadata.get_document("os").unwrap();
    assert_eq!(os.get_str("type"), Ok(std::env::consts::OS));
    assert_eq!(os.get_str("architecture"), Ok(std::env::consts::ARCH));
}

#[test]
fn metadata_with_options() {
    let app_name = "myspace 2.0";
    let name = "even better Rust driver";
    let version = "the best version, of course";

    let options = HandshakerOptions {
        app_name: Some(app_name.to_string()),
        driver_info: Some(
            DriverInfo::builder()
                .name(name.to_string())
                .version(version.to_string())
                .build(),
        ),
        compressors: None,
        server_api: None,
        load_balanced: false,
    };

    let handshaker = Handshaker::new(options);

    let metadata = handshaker.command.body.get_document("client").unwrap();
    assert_eq!(
        metadata.get_document("application"),
        Ok(&doc! { "name": app_name })
    );

    let driver = metadata.get_document("driver").unwrap();
    assert_eq!(driver.keys().collect::<Vec<_>>(), vec!["name", "version"]);
    assert_eq!(
        driver.get_str("name"),
        Ok(format!("mongo-rust-driver|{}", name).as_str())
    );
    assert_eq!(
        driver.get_str("version"),
        Ok(format!("{}|{}", env!("CARGO_PKG_VERSION"), version).as_str())
    );

    let os = metadata.get_document("os").unwrap();
    assert_eq!(os.get_str("type"), Ok(std::env::consts::OS));
    assert_eq!(os.get_str("architecture"), Ok(std::env::consts::ARCH));
}