knusbaum_consul 0.2.0

Patched version of the Rust client libray for Consul HTTP API
Documentation
extern crate consul;
extern crate serde;
extern crate serde_json;

use std::collections::HashMap;

#[test]
pub fn test_agent() {
    let client = consul::Client::new("http://127.0.0.1:8500");
    let services: HashMap<String, consul::Service> = client.agent.services().unwrap();
    assert!(services.contains_key("consul"));
    let members:  Vec<consul::AgentMember> = client.agent.members().unwrap();
    assert!(!members.is_empty());
    println!("Members: {}", serde_json::to_string(&members).unwrap())
}

#[test]
pub fn test_catalog() {
    let client = consul::Client::new("http://127.0.0.1:8500");
    let map: HashMap<String, Vec<String>> = client.catalog.services().unwrap();
    assert!(map.contains_key("consul"));
}


#[test]
pub fn test_health() {
    let client = consul::Client::new("http://127.0.0.1:8500");
    let list: Vec<consul::HealthService> = client.health.service("consul", None).unwrap();
    assert!(!list.is_empty());
    println!("Consul nodes: {}", serde_json::to_string(&list).unwrap());
}

#[test]
pub fn test_register_service() {
    let client = consul::Client::new("http://127.0.0.1:8500");
    let service = consul::RegisterService {
        ID: "test-id".to_string(),
        Name: "test-service".to_string(),
        Tags: [].to_vec(),
        Port: 8080,
        Address: "localhost".to_string()
    };
    let register_result = client.agent.register(service).unwrap();
    assert_eq!(register_result,());
    assert_eq!(client.agent.services().unwrap().get("test-id").unwrap().Address, "localhost")
}

#[test]
pub fn test_put_value() {
    let ks = consul::Keystore::new("http://127.0.0.1:8500");
    let key: String = "foo".to_string();
    let value: String = "var".to_string();

    let result = ks.set_key(key.clone(), value);
    assert!(result.is_ok());

    let result = ks.get_key(key).unwrap().unwrap();
    assert_eq!(result, "dmFy");
}