nntp-proxy 0.5.1

NNTP proxy server with per-command backend multiplexing, caching, metrics, and TUI dashboard
Documentation
//! Basic router functionality tests

use super::*;

#[test]
fn test_router_creation() {
    let router = BackendSelector::new();
    assert_eq!(router.backend_count(), 0);
}

#[test]
fn test_add_backend() {
    let mut router = BackendSelector::new();
    let provider = create_test_provider();

    let backend_id = router.add_backend(
        ServerName::try_new("test-backend".to_string()).unwrap(),
        provider,
        0, // tier
    );

    assert_eq!(router.backend_count(), 1);
    assert_eq!(backend_id, BackendId::from_index(0));
}

#[test]
fn test_add_multiple_backends() {
    let mut router = BackendSelector::new();

    for i in 0..3 {
        let provider = create_test_provider();
        let backend_id = router.add_backend(
            ServerName::try_new(format!("backend-{i}")).unwrap(),
            provider,
            0, // tier
        );
        assert_eq!(backend_id, BackendId::from_index(i));
    }

    assert_eq!(router.backend_count(), 3);
}

#[test]
fn test_no_backends_fails() {
    let router = BackendSelector::new();
    let client_id = ClientId::new();
    let result = router.route(nntp_proxy::router::RouteRequest::new(client_id));

    assert!(result.is_err());
}

#[test]
fn test_get_backend_provider() {
    let mut router = BackendSelector::new();
    let backend_id = BackendId::from_index(0);
    let provider = create_test_provider();

    router.add_backend(
        ServerName::try_new("test".to_string()).unwrap(),
        provider,
        0, // tier
    );

    let retrieved = router.backend_provider(backend_id);
    assert!(retrieved.is_some());

    let fake_id = BackendId::from_index(1);
    assert!(router.backend_provider(fake_id).is_none());
}