diff --git a/test/property/test_webhook_handler.rb b/test/property/test_webhook_handler.rb index e6d5c7816ef5493ab7299768c2463983d4418e9b..0e8e6c4546e1973c46f234501c9df52bdb9ef4c0 100644 --- a/test/property/test_webhook_handler.rb +++ b/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