test(webhook): resend emits stream event

Phillip Davis created

Change summary

test/property/test_webhook_handler.rb | 42 +++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)

Detailed changes

test/property/test_webhook_handler.rb 🔗

@@ -289,4 +289,46 @@ class WebhookPropertyTest < Minitest::Test
 		}
 	end
 	em :test_inbound_received_emits_correct_in_stream_event
+
+	def test_inbound_resend_emits_correct_resend_stream_event
+		property_of {
+			Webhook
+				.new(REDIS)
+				.type { "message-received" }
+				.message { |registered, jid, dir, top_level_to|
+					Message
+						.new(REDIS)
+						.to {
+							array(integer(2)) { nanpa_phone } +
+								[top_level_to] +
+								array(integer(2)) { nanpa_phone }
+						}
+						.generate(registered, jid, dir)
+				}
+				.generate
+		}.check { |metadata, example|
+			result = invoke_webhook(
+				example,
+				extra_env: { "HTTP_X_JMP_RESEND_OF" => metadata["resend_id"] }
+			)
+			assert_equal 200, result[0]
+
+			entries = REDIS.stream_entries("messages").sync
+			assert_equal 1, entries.length
+
+			fields = entries.first[:fields]
+			expected_keys = %w[
+				event source original_stream_id owner
+				original_bandwidth_id
+			].sort
+			assert_equal expected_keys, fields.keys.sort
+
+			assert_equal "resend", fields["event"]
+			assert_equal "bwmsgsv2", fields["source"]
+			assert_equal metadata["resend_id"], fields["original_stream_id"]
+			assert_equal example["message"]["owner"], fields["owner"]
+			assert_equal example["message"]["id"], fields["original_bandwidth_id"]
+		}
+	end
+	em :test_inbound_resend_emits_correct_resend_stream_event
 end