getserviceip 0.1.1

Web service to get IP addresses from devices.
Documentation
mod common;

#[tokio::test]
async fn ip_endpoint_updates_state() {
    // Arrange
    let (address, state) = common::spawn();
    let client = reqwest::Client::new();
    let ip_info = serde_json::json!({
        "hostname": "example.com",
        "ip_v6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
        "ip_v4": "192.168.0.1"
    });

    // Act
    let response = client
        .post(format!("{}/ip", &address))
        .json(&ip_info)
        .send()
        .await
        .expect("Failed to execute request.");

    // Assert
    assert!(response.status().is_success());

    // Verify the state
    let state_guard = state.lock().unwrap();
    assert_eq!(state_guard.len(), 1);
    assert_eq!(state_guard[0].hostname, "example.com");
    assert_eq!(
        state_guard[0].ip_v6,
        "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
    );
    assert_eq!(state_guard[0].ip_v4, "192.168.0.1");
}