From 413625d99cf21803f28e12798e8be92ecbe36f84 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Mon, 10 Jun 2024 06:31:17 -0700 Subject: [PATCH] add explicit test that logging captures headers for Delivery events We already tested this functionality at reception time, but let's also assert for delivery time. --- crates/integration-tests/source.lua | 2 +- crates/integration-tests/src/kumod.rs | 12 ++++++++---- crates/integration-tests/src/main.rs | 18 +++++++++++++++++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/crates/integration-tests/source.lua b/crates/integration-tests/source.lua index 859e31c4..7ff9160f 100644 --- a/crates/integration-tests/source.lua +++ b/crates/integration-tests/source.lua @@ -27,7 +27,7 @@ kumo.on('init', function() kumo.configure_local_logs { log_dir = TEST_DIR .. '/logs', max_segment_duration = '1s', - headers = { 'X-*', 'Y-*' }, + headers = { 'X-*', 'Y-*', 'Subject' }, } if WEBHOOK_PORT then diff --git a/crates/integration-tests/src/kumod.rs b/crates/integration-tests/src/kumod.rs index d27524bc..502e5f7d 100644 --- a/crates/integration-tests/src/kumod.rs +++ b/crates/integration-tests/src/kumod.rs @@ -437,10 +437,14 @@ impl KumoDaemon { for line in text.lines() { let record: JsonLogRecord = serde_json::from_str(&line)?; - if record.kind == RecordType::Reception { - assert!(record.headers.contains_key("X-Test1")); - assert!(record.headers.contains_key("X-Another")); - assert!(!record.headers.contains_key("y-something")); + match record.kind { + RecordType::Reception | RecordType::Delivery => { + assert!(record.headers.contains_key("Subject")); + assert!(record.headers.contains_key("X-Test1")); + assert!(record.headers.contains_key("X-Another")); + assert!(!record.headers.contains_key("y-something")); + } + _ => {} } } } diff --git a/crates/integration-tests/src/main.rs b/crates/integration-tests/src/main.rs index f982601f..d359dd09 100644 --- a/crates/integration-tests/src/main.rs +++ b/crates/integration-tests/src/main.rs @@ -944,10 +944,13 @@ Ok( ); let mut logged_headers = vec![]; + let mut headers_delivered = vec![]; for record in daemon.webhook.return_logs() { + let ordered_headers: BTreeMap<_, _> = record.headers.into_iter().collect(); if record.kind == RecordType::Reception { - let ordered_headers: BTreeMap<_, _> = record.headers.into_iter().collect(); logged_headers.push(ordered_headers); + } else if record.kind == RecordType::Delivery { + headers_delivered.push(ordered_headers); } } k9::snapshot!( @@ -961,6 +964,19 @@ Ok( "X-Test1": String("Test1"), }, ] +"# + ); + k9::snapshot!( + headers_delivered, + r#" +[ + { + "Subject": String("Hello! This is a test"), + "X-Another": String("Another"), + "X-KumoRef": String("eyJfQF8iOiJcXF8vIiwicmVjaXBpZW50IjoicmVjaXBAZXhhbXBsZS5jb20ifQ=="), + "X-Test1": String("Test1"), + }, +] "# );