lib/snikket.rb 🔗
@@ -284,7 +284,9 @@ module Snikket
def fetch
url = bootstrap_uri
- req(url).then { |res|
+ EMPromise.resolve(nil).then {
+ req(url)
+ }.then { |res|
parse_invite(url, res)
}.catch { nil }
end
Phillip Davis created
lib/snikket.rb | 4 +++-
test/test_snikket.rb | 23 +++++++++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
@@ -284,7 +284,9 @@ module Snikket
def fetch
url = bootstrap_uri
- req(url).then { |res|
+ EMPromise.resolve(nil).then {
+ req(url)
+ }.then { |res|
parse_invite(url, res)
}.catch { nil }
end
@@ -1,6 +1,7 @@
# frozen_string_literal: true
require "snikket"
+require "openssl"
class TestSnikket < Minitest::Test
NS = "xmpp:snikket.org/hosting/v1"
@@ -66,6 +67,28 @@ class TestSnikket < Minitest::Test
)
end
+ def test_fetch_invite_returns_nil_when_http_head_raises_ssl_error
+ instance = Snikket::CustomerInstance.new(
+ instance_id: "si-1234",
+ bootstrap_token: "fZLy6iTh",
+ customer_id: "test",
+ domain: "example.com"
+ )
+
+ request = Minitest::Mock.new
+ request.expect(:ahead, nil) do |redirects:|
+ assert_equal 5, redirects
+ raise OpenSSL::SSL::SSLError, "certificate verify failed"
+ end
+
+ EM::HttpRequest.stub(:new, request) do
+ assert_nil instance.fetch_invite.sync
+ end
+
+ request.verify
+ end
+ em :test_fetch_invite_returns_nil_when_http_head_raises_ssl_error
+
def test_instance_result
instance = Blather::XMPPNode.parse(<<~XML)
<iq type="result" from="hosting-api.snikket.net" id="000">