@@ -539,10 +539,11 @@ class Registration
end
class Snikket
- def initialize(customer, tel, error: nil)
+ def initialize(customer, tel, error: nil, db: LazyObject.new { DB })
@customer = customer
@tel = tel
@error = error
+ @db = db
end
ACTION_VAR = "http://jabber.org/protocol/commands#actions"
@@ -572,9 +573,7 @@ class Registration
IQ_MANAGER.write(::Snikket::Launch.new(
nil, CONFIG[:snikket_hosting_api], domain: domain
)).then { |launched|
- GetInvite.for(
- ::Snikket::CustomerInstance.for(@customer, domain, launched)
- ).then(&:write)
+ save_instance_and_wait(domain, launched)
}.catch { |e|
next EMPromise.reject(e) unless e.respond_to?(:text)
@@ -582,6 +581,13 @@ class Registration
}
end
+ def save_instance_and_wait(domain, launched)
+ instance = ::Snikket::CustomerInstance.for(@customer, domain, launched)
+ ::Snikket::Repo.new(db: @db).put(instance).then do
+ GetInvite.for(instance).then(&:write)
+ end
+ end
+
class GetInvite
def self.for(instance)
instance.fetch_invite.then do |xmpp_uri|
@@ -309,6 +309,10 @@ class FakeDB
row = row.transform_keys(&:to_sym) if row && field_names_as == :symbol
EMPromise.resolve(row || default)
end
+
+ def exec(_, _)
+ EMPromise.resolve(nil)
+ end
end
class FakeLog
@@ -948,7 +948,8 @@ class RegistrationTest < Minitest::Test
@sgx = Minitest::Mock.new(TrivialBackendSgxRepo.new.get("test"))
@snikket = Registration::FinishOnboarding::Snikket.new(
customer,
- "+15555550000"
+ "+15555550000",
+ db: FakeDB.new
)
end