use crate::agent::{AgentCtx, AgentMessage, InboxRoute};
use crate::laser::Laser;
use crate::provenance::{AgentTopic, Provenance};
use crate::types::{AgentId, MessageId};
pub fn agent_message(payload: impl Into<Vec<u8>>, provenance: Provenance) -> AgentMessage {
AgentMessage {
provenance,
payload: payload.into(),
id: MessageId::new(0, 0),
envelope: None,
content_type: None,
verified_principal: None,
}
}
pub fn agent_ctx<'a>(
laser: &'a Laser,
message: &'a AgentMessage,
agent: Option<AgentId>,
respond_on: Option<AgentTopic<'static>>,
inbox_route: InboxRoute,
) -> AgentCtx<'a> {
AgentCtx::new(
laser,
message,
agent,
respond_on,
inbox_route,
#[cfg(feature = "sign")]
None,
)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::types::ConversationId;
#[test]
fn given_a_test_message_when_built_then_should_carry_payload_and_provenance() {
let conversation = ConversationId::new();
let provenance = Provenance::builder().conversation_id(conversation).build();
let message = agent_message(b"hello".to_vec(), provenance);
assert_eq!(message.body(), b"hello");
assert_eq!(message.provenance.conversation_id, conversation);
assert!(message.envelope.is_none());
}
}