typeduck-codex-web 0.1.0

A browser interface for Codex CLI sessions
Documentation
use std::net::SocketAddr;

use pretty_assertions::assert_eq;

use super::mcp_callback_url;

#[test]
fn mcp_callback_prefers_tailnet_ipv4() {
    let addresses = [
        "127.0.0.1:34261"
            .parse::<SocketAddr>()
            .expect("IPv4 loopback"),
        "[fd7a:115c:a1e0::1]:34261"
            .parse::<SocketAddr>()
            .expect("tailnet IPv6"),
        "100.71.13.123:34261"
            .parse::<SocketAddr>()
            .expect("tailnet IPv4"),
    ];

    assert_eq!(
        mcp_callback_url(&addresses, "secret"),
        Some("http://100.71.13.123:34261/s/secret/oauth/callback".to_string())
    );
}

#[test]
fn mcp_callback_stays_local_without_tailnet() {
    let addresses = [
        "127.0.0.1:34261"
            .parse::<SocketAddr>()
            .expect("IPv4 loopback"),
        "[::1]:34261".parse::<SocketAddr>().expect("IPv6 loopback"),
    ];

    assert_eq!(mcp_callback_url(&addresses, "secret"), None);
}