fleet 0.2.0

A client library for CoreOS's fleet.
use std::collections::HashMap;

pub struct Machine {
    pub id: String,
    pub metadata: HashMap<String, String>,
    pub primary_ip: String,
}

pub struct MachinePage {
    machines: Vec<Machine>,
    next_page_token: Option<String>,
}

#[cfg(test)]
mod machine_tests {
    use std::collections::HashMap;

    use super::Machine;

    #[test]
    fn it_can_be_constructed() {
        Machine {
            id: "abc123".to_string(),
            metadata: HashMap::new(),
            primary_ip: "1.2.3.4".to_string(),
        };
    }

    #[test]
    fn it_can_be_constructed_with_metdata() {
        let mut metadata = HashMap::new();

        metadata.insert("region".to_string(), "us-east-1".to_string());

        Machine {
            id: "abc123".to_string(),
            metadata: metadata,
            primary_ip: "1.2.3.4".to_string(),
        };
    }
}

#[cfg(test)]
mod machine_page_tests {
    use std::collections::HashMap;

    use super::{Machine,MachinePage};

    #[test]
    fn it_can_be_paginated() {
        let machine = Machine {
            id: "abc123".to_string(),
            metadata: HashMap::new(),
            primary_ip: "1.2.3.4".to_string(),
        };

        MachinePage {
            machines: vec![machine],
            next_page_token: Some("8fefec2c".to_string()),
        };
    }

    #[test]
    fn it_can_have_no_additional_pages() {
        let machine = Machine {
            id: "abc123".to_string(),
            metadata: HashMap::new(),
            primary_ip: "1.2.3.4".to_string(),
        };

        MachinePage {
            machines: vec![machine],
            next_page_token: None,
        };
    }
}