@@ -169,24 +169,6 @@ module SGXbwmsgsv2
panic(e)
end
- def self.error_msg(orig, query_node, type, name, _text=nil)
- orig.type = :error
-
- error = Nokogiri::XML::Node.new 'error', orig.document
- error['type'] = type
- orig.add_child(error)
-
- suberr = Nokogiri::XML::Node.new name, orig.document
- suberr['xmlns'] = 'urn:ietf:params:xml:ns:xmpp-stanzas'
- error.add_child(suberr)
-
- orig.add_child(query_node) if query_node
-
- # TODO: add some explanatory xml:lang='en' text (see text param)
- puts "RESPONSE3: #{orig.inspect}"
- return orig
- end
-
# workqueue_count MUST be 0 or else Blather uses threads!
setup ARGV[0], ARGV[1], ARGV[2], ARGV[3], nil, nil, workqueue_count: 0
@@ -418,8 +400,8 @@ module SGXbwmsgsv2
to_catapult_possible_oob(m, num_dest, *creds)
end
}.catch { |e|
- if e.is_a?(Array) && e.length == 2
- write_to_stream error_msg(m.reply, m.body, *e)
+ if e.is_a?(Array) && (e.length == 2 || e.length == 3)
+ write_to_stream m.as_error(e[1], e[0], e[2])
else
EMPromise.reject(e)
end
@@ -726,7 +708,7 @@ module SGXbwmsgsv2
EMPromise.reject(:done)
end.catch { |e|
if e.is_a?(Array) && (e.length == 2 || e.length == 3)
- write_to_stream error_msg(i.reply, qn, *e)
+ write_to_stream i.as_error(e[1], e[0], e[2])
elsif e != :done
EMPromise.reject(e)
end
@@ -32,6 +32,10 @@ class ComponentTest < Minitest::Test
).element_name
end
+ def xmpp_error_text(error)
+ error.find_first("ns:text", ns: Blather::StanzaError::STANZA_ERR_NS)&.text
+ end
+
def process_stanza(s)
SGXbwmsgsv2.send(:client).receive_data(s)
raise $panic if $panic
@@ -251,6 +255,10 @@ class ComponentTest < Minitest::Test
error = stanza.find_first("error")
assert_equal "cancel", error["type"]
assert_equal "conflict", xmpp_error_name(error)
+ assert_equal(
+ "Another user exists for +15550000000",
+ xmpp_error_text(error)
+ )
end
em :test_ibr_conflict
end