use crate::tests::{
attachment_chunk_message, attachment_end_message, attachment_init_message, text_message,
};
use crate::types::{AttachmentMeta, MessageMeta};
use crate::validate_message;
#[test]
fn validation_passes_for_text_message() {
let message = text_message();
assert!(validate_message(&message).is_ok());
}
#[test]
fn validation_rejects_empty_sender() {
let mut message = text_message();
message.sender.clear();
assert!(validate_message(&message).is_err());
}
#[test]
fn validation_rejects_empty_receiver() {
let mut message = text_message();
message.receiver.clear();
assert!(validate_message(&message).is_err());
}
#[test]
fn validation_rejects_attachment_init_payload() {
let mut message = attachment_init_message();
message.payload = vec![1];
assert!(validate_message(&message).is_err());
}
#[test]
fn validation_rejects_chunk_count_mismatch() {
let mut message = attachment_init_message();
if let MessageMeta::AttachmentInit(meta) = &mut message.meta {
meta.chunk_count = 3;
}
assert!(validate_message(&message).is_err());
}
#[test]
fn validation_rejects_chunk_payload_empty() {
let mut message = attachment_chunk_message(0);
message.payload.clear();
assert!(validate_message(&message).is_err());
}
#[test]
fn validation_rejects_end_payload_non_empty() {
let mut message = attachment_end_message();
message.payload = vec![1];
assert!(validate_message(&message).is_err());
}
#[test]
fn validation_rejects_file_kind_without_filename() {
let mut message = attachment_init_message();
if let MessageMeta::AttachmentInit(AttachmentMeta { filename, .. }) = &mut message.meta {
*filename = None;
}
assert!(validate_message(&message).is_err());
}