codetether-agent 4.7.0-a-002.4

A2A-native AI coding agent for the CodeTether ecosystem
Documentation
use base64::Engine;

use super::{attachment_from_data_url, data_url::MAX_BASE64_PAYLOAD_CHARS};

#[test]
fn accepts_image_data_url() {
    let payload = base64::engine::general_purpose::STANDARD.encode("png bytes");
    let text = format!("data:image/png;base64,{payload}");
    let image = attachment_from_data_url(&text).expect("image data URL");
    assert_eq!(image.mime_type.as_deref(), Some("image/png"));
    assert_eq!(image.data_url, text);
}

#[test]
fn rejects_non_image_data_url() {
    let payload = base64::engine::general_purpose::STANDARD.encode("hello");
    let text = format!("data:text/plain;base64,{payload}");
    assert!(attachment_from_data_url(&text).is_none());
}

#[test]
fn normalizes_wrapped_payload() {
    let payload = base64::engine::general_purpose::STANDARD.encode("png bytes");
    let wrapped = format!("data:image/png;base64,{}\n{}", &payload[..4], &payload[4..]);
    let image = attachment_from_data_url(&wrapped).expect("wrapped image data URL");
    assert_eq!(image.data_url, format!("data:image/png;base64,{payload}"));
}

#[test]
fn rejects_oversized_payload_before_decode() {
    let payload = "A".repeat(MAX_BASE64_PAYLOAD_CHARS + 1);
    let text = format!("data:image/png;base64,{payload}");
    assert!(attachment_from_data_url(&text).is_none());
}