adborc 0.1.0

Orchestrator for a network of distributed Android devices
Documentation
use super::*;
use crate::market::test_utils;
use crate::util::{test_with_logs, SysStateDefaultConfig};
use serial_test::serial;
use tokio::task;

#[tokio::test]
#[serial]
async fn test_status() {
    test_with_logs();
    ConsumerState::reset_state();

    let mm_host = "localhost".to_string();
    let mm_port = SysStateDefaultConfig::BIND_PORT;
    let mm_key = vec![255u8; 32];

    ConsumerState::update_host_port_name(Some(mm_host.clone()), Some(mm_port), None);
    ConsumerState::set_market_maker_key(mm_key.clone());

    let request = ConsumerRequest::Status;

    let (mm_addr, mm_id) = test_utils::get_peer_with_key(&mm_key);
    fn process_command(_: String, _: SocketAddr, _: Arc<Key>) -> String {
        "OK".to_string()
    }
    test_utils::start_dummy_system_server(process_command);

    let response = task::spawn_blocking(move || Consumer::process_request(request, mm_addr, mm_id))
        .await
        .unwrap();

    let response = serde_json::from_str::<ConsumerResponse>(&response).unwrap();
    match response {
        ConsumerResponse::Status { state } => {
            let expected_state = ConsumerStateMin {
                mm_host,
                mm_port,
                ..ConsumerStateMin::default()
            };
            assert_eq!(state, expected_state);
        }
        _ => {
            panic!("Unexpected response");
        }
    }
}