1# frozen_string_literal: true
2
3require "test_helper"
4require_relative "../../sgx-bwmsgsv2"
5require "rantly/minitest_extensions"
6require_relative "rantly_extensions/data_extensions"
7
8class NonNanpOobPropertyTest < Minitest::Test
9 def build_oob_message(dest, body, oob_url)
10 m = Blather::Stanza::Message.new("#{dest}@component", body)
11 m.from = "test@example.com/res"
12
13 x = Nokogiri::XML::Node.new("x", m.document)
14 ns = x.add_namespace(nil, "jabber:x:oob")
15 url_node = Nokogiri::XML::Node.new("url", m.document)
16 url_node.namespace = ns
17 url_node.content = oob_url
18 x.add_child(url_node)
19 m.add_child(x)
20 m
21 end
22
23 def test_non_nanp_oob_sends_url_as_text_not_mms
24 property_of {
25 dest = non_nanp_phone
26 oob_path = sized(range(3, 12)) { string(:alnum) }
27 oob_url = "https://example.com/media/#{oob_path}.jpg"
28 [dest, message_body, oob_url]
29 }.check { |dest, body, oob_url|
30 reset_stanzas!
31 reset_redis!
32
33 bw_req = stub_request(:post, BW_MESSAGES_URL).with(
34 body: hash_including(
35 text: /#{Regexp.escape(oob_url)}/
36 )
37 ).to_return(
38 status: 201, body: JSON.dump(id: "bw-msg-non-nanp")
39 )
40
41 process_stanza(build_oob_message(dest, body, oob_url))
42
43 assert_not_requested :head, oob_url
44 assert_requested bw_req
45 }
46 end
47 em :test_non_nanp_oob_sends_url_as_text_not_mms
48
49 def test_nanp_oob_attempts_mms
50 property_of {
51 dest = nanpa_phone
52 oob_path = sized(range(3, 12)) { string(:alnum) }
53 oob_url = "https://example.com/media/#{oob_path}.jpg"
54 [dest, message_body, oob_url]
55 }.check { |dest, body, oob_url|
56 reset_stanzas!
57 reset_redis!
58
59 bw_req = stub_request(:post, BW_MESSAGES_URL).with(
60 body: hash_including(media: oob_url)
61 ).to_return(
62 status: 201, body: JSON.dump(id: "bw-msg-nanp")
63 )
64 media_req = stub_request(:head, oob_url).to_return(
65 status: 200,
66 headers: {
67 "Content-Length" => "500",
68 "Content-Type" => "image/jpeg"
69 }
70 )
71
72 process_stanza(build_oob_message(dest, body, oob_url))
73
74 assert_requested :head, oob_url
75 assert_requested bw_req
76 assert_requested media_req
77 }
78 end
79 em :test_nanp_oob_attempts_mms
80end