test_webhook_handler.rb

 1# frozen_string_literal: true
 2
 3require "test_helper"
 4require_relative "../../sgx-bwmsgsv2"
 5require "rantly/minitest_extensions"
 6require_relative "generators/webhook"
 7require_relative "generators/message"
 8
 9def panic(e)
10	$panic = e
11end
12
13MMS_PROXY = "https://proxy.test.example.com/"
14
15class WebhookPropertyTest < Minitest::Test
16	def setup
17		reset_stanzas!
18		reset_redis!
19	end
20
21	def test_single_recipient_message_delivered_sends_one_receipt
22		property_of {
23			Webhook
24				.new(REDIS)
25				.type { "message-delivered" }
26				.message { |registered, jid, dir, top_level_to|
27					Message
28						.new(REDIS)
29						.to { [top_level_to] }
30						.generate(registered, jid, dir)
31				}
32				.generate
33		}.check { |metadata, example|
34			result = invoke_webhook(example)
35			assert_equal 200, result[0]
36			assert_equal 1, written.length, "Should only send the delivery receipt"
37			receipt = written.shift
38			assert_equal(
39				receipt.to,
40				metadata["jid"],
41				"Should send receipt to customer's jid"
42			)
43			assert_equal(
44				receipt.from.to_s,
45				"#{example["to"]}@#{ARGV[0]}",
46				"Should send receipt from sender's Cheogram jid"
47			)
48		}
49	end
50	em :test_single_recipient_message_delivered_sends_one_receipt
51end