use super::{ChannelAccessError, ChannelConfigField, ChannelRegistryError};
use liminal_protocol::reason_code::{CHANNEL_NOT_REGISTERED_CODE, CHANNEL_QUIESCED_CODE};
#[test]
fn access_refusals_carry_their_reserved_reason_codes() {
assert_eq!(
ChannelAccessError::NotRegistered {
name: "orders".to_owned()
}
.reason_code(),
CHANNEL_NOT_REGISTERED_CODE
);
assert_eq!(
ChannelAccessError::Quiesced {
name: "orders".to_owned(),
reason: "archived".to_owned()
}
.reason_code(),
CHANNEL_QUIESCED_CODE
);
assert_eq!(
ChannelAccessError::RosterUnavailable {
message: "poisoned".to_owned()
}
.reason_code(),
0xFFFF
);
}
#[test]
fn the_three_access_codes_are_mutually_distinct() {
let absent = ChannelAccessError::NotRegistered {
name: "orders".to_owned(),
}
.reason_code();
let quiesced = ChannelAccessError::Quiesced {
name: "orders".to_owned(),
reason: "archived".to_owned(),
}
.reason_code();
let fault = ChannelAccessError::RosterUnavailable {
message: "poisoned".to_owned(),
}
.reason_code();
assert_ne!(absent, quiesced);
assert_ne!(absent, fault);
assert_ne!(quiesced, fault);
}
#[test]
fn already_registered_names_the_differing_field() {
for (field, rendered) in [
(ChannelConfigField::Mode, "mode"),
(ChannelConfigField::SchemaId, "schema id"),
(ChannelConfigField::SchemaDocument, "schema document"),
] {
let error = ChannelRegistryError::AlreadyRegistered {
name: "orders".to_owned(),
field,
};
assert_eq!(
error.to_string(),
format!("channel 'orders' is already registered with a different {rendered}")
);
}
}
#[test]
fn cap_refusals_name_the_config_key() {
let absent = ChannelRegistryError::CapNotConfigured {
cap: super::MAX_CHANNELS_KEY,
};
assert!(absent.to_string().contains("limits.max_channels"));
let reached = ChannelRegistryError::CapReached {
cap: super::MAX_CHANNELS_KEY,
limit: 4,
};
assert_eq!(
reached.to_string(),
"channel registration refused: the limits.max_channels limit of 4 is reached"
);
}