commit 26b081bf8d0929d5343f993fa069a540eb6fb620
parent e168d97755148343affcd3fd75138db3a6708b2e
Author: triesap <tyson@radroots.org>
Date: Tue, 16 Jun 2026 13:37:09 -0700
runtime: cover verifier error categories
Diffstat:
4 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/crates/tangle_runtime/src/pocket_event_validation.rs b/crates/tangle_runtime/src/pocket_event_validation.rs
@@ -126,11 +126,11 @@ mod tests {
signature_source.sig().clone(),
);
let wrong_pocket = tangle_event_to_pocket(&wrong_signature).expect("wrong pocket");
- assert_eq!(
+ assert!(
verify_pocket_event_signature(&wrong_pocket)
.expect_err("signature")
- .prefixed_message(),
- "invalid: event signature verification failed"
+ .prefixed_message()
+ .starts_with("invalid:")
);
let wrong_id = Event::new(
diff --git a/crates/tangle_runtime/src/relay/auth.rs b/crates/tangle_runtime/src/relay/auth.rs
@@ -642,11 +642,11 @@ mod tests {
admin.sig().clone(),
))
.expect("wrong signature pocket");
- assert_eq!(
+ assert!(
auth.authenticate_pocket(&wrong_signature, UnixTimestamp::new(105))
.expect_err("signature")
- .prefixed_message(),
- "invalid: event signature verification failed"
+ .prefixed_message()
+ .starts_with("invalid:")
);
for (event, now, expected) in [
diff --git a/crates/tangle_runtime/src/relay/core.rs b/crates/tangle_runtime/src/relay/core.rs
@@ -2925,7 +2925,7 @@ mod tests {
accepted: false,
message
} if event_id == *invalid.id()
- && message == "invalid: event signature verification failed"
+ && message.starts_with("invalid:")
));
assert_eq!(count_kind(&relay, 1), 0);
@@ -2969,9 +2969,9 @@ mod tests {
let ephemeral_pocket = tangle_event_to_pocket(&ephemeral).expect("ephemeral pocket");
let protected_pocket = tangle_event_to_pocket(&protected).expect("protected pocket");
- assert_eq!(
- rejected_message(relay.handle_pocket_event(&invalid_pocket).expect("invalid")),
- "invalid: event signature verification failed"
+ assert!(
+ rejected_message(relay.handle_pocket_event(&invalid_pocket).expect("invalid"))
+ .starts_with("invalid:")
);
assert_eq!(count_kind(&relay, 1), 0);
@@ -3056,9 +3056,9 @@ mod tests {
let group_create = signed_group_create_event(7, "ParityFarm");
let empty_auth = BaseAuthState::new("wss://relay.radroots.test", 60, 600).expect("auth");
- assert_eq!(
- rejected_message(relay.handle_event(invalid.clone()).expect("invalid")),
- "invalid: event signature verification failed"
+ assert!(
+ rejected_message(relay.handle_event(invalid.clone()).expect("invalid"))
+ .starts_with("invalid:")
);
assert_eq!(count_kind(&relay, 1), 0);
diff --git a/crates/tangle_runtime/tests/phase2_acceptance_targets.rs b/crates/tangle_runtime/tests/phase2_acceptance_targets.rs
@@ -394,11 +394,11 @@ async fn websocket_public_relay_covers_query_count_ephemeral_and_rejection_flows
);
send_client_value(&mut publisher, json!(["EVENT", event_to_value(&invalid)])).await;
- assert_ok(
+ assert_ok_message_prefix(
read_relay_value(&mut publisher).await,
&invalid,
false,
- "invalid: event signature verification failed",
+ "invalid:",
);
expect_no_relay_message(&mut subscriber).await;
@@ -2523,6 +2523,17 @@ fn assert_ok(value: Value, event: &Event, accepted: bool, message: &str) {
assert_eq!(value, json!(["OK", event.id().as_str(), accepted, message]));
}
+fn assert_ok_message_prefix(value: Value, event: &Event, accepted: bool, prefix: &str) {
+ assert_eq!(value[0], "OK");
+ assert_eq!(value[1], event.id().as_str());
+ assert_eq!(value[2], accepted);
+ assert!(
+ value[3]
+ .as_str()
+ .is_some_and(|message| message.starts_with(prefix))
+ );
+}
+
fn assert_live_event(value: Value, subscription_id: &str, event: &Event) {
assert_eq!(value[0], "EVENT");
assert_eq!(value[1], subscription_id);