use super::*;
#[tokio::test]
async fn get_extended_agent_card_returns_card() {
let handler = RequestHandlerBuilder::new(EchoExecutor)
.with_agent_card(minimal_agent_card())
.build()
.expect("build handler");
let card = handler
.on_get_extended_agent_card(None)
.await
.expect("get agent card");
assert_eq!(
card.name, "Test Agent",
"agent card name must be 'Test Agent'"
);
assert_eq!(card.version, "1.0.0", "agent card version must be '1.0.0'");
}
#[tokio::test]
async fn get_extended_agent_card_not_configured() {
let handler = RequestHandlerBuilder::new(EchoExecutor)
.build()
.expect("build handler");
let err = handler.on_get_extended_agent_card(None).await.unwrap_err();
assert!(
matches!(err, a2a_protocol_server::ServerError::Internal(ref msg) if !msg.is_empty()),
"expected Internal error with a message, got {err:?}"
);
}
#[tokio::test]
async fn builder_defaults_work() {
let handler = RequestHandlerBuilder::new(EchoExecutor)
.build()
.expect("build with defaults");
let result = handler
.on_send_message(make_send_params("test"), false, None)
.await
.expect("send message");
match result {
SendMessageResult::Response(SendMessageResponse::Task(task)) => {
assert_eq!(
task.status.state,
TaskState::Completed,
"default builder should produce a working handler"
);
}
_ => panic!("expected Response(Task) from default builder"),
}
}
#[tokio::test]
async fn builder_with_agent_card() {
let handler = RequestHandlerBuilder::new(EchoExecutor)
.with_agent_card(minimal_agent_card())
.with_push_sender(MockPushSender)
.build()
.expect("build with card + push");
let card = handler
.on_get_extended_agent_card(None)
.await
.expect("get card");
assert_eq!(
card.name, "Test Agent",
"builder-configured card name must be 'Test Agent'"
);
}