1# frozen_string_literal: true
 2
 3require "test_helper"
 4require "bwmsgsv2_repo"
 5require "backend_sgx"
 6require "trivial_backend_sgx_repo"
 7
 8BackendSgx::IQ_MANAGER = Minitest::Mock.new
 9IBRRepo::IQ_MANAGER = Minitest::Mock.new
10
11class BackendSgxTest < Minitest::Test
12	def test_registered
13		IBRRepo::IQ_MANAGER.expect(
14			:write,
15			EMPromise.resolve(Blather::Stanza::Iq::IBR.new.tap { |ibr|
16				ibr.registered = true
17			}),
18			[Matching.new do |ibr|
19				assert_equal :get, ibr.type
20				assert_equal "customer_test@component", ibr.from.to_s
21			end]
22		)
23		sgx = Bwmsgsv2Repo.new(redis: FakeRedis.new).get("test").sync
24		assert sgx.registered?
25	end
26	em :test_registered
27
28	def test_registered_not_registered
29		IBRRepo::IQ_MANAGER.expect(
30			:write,
31			EMPromise.resolve(Blather::Stanza::Iq::IBR.new.tap { |ibr|
32				ibr.registered = false
33			}),
34			[Matching.new do |ibr|
35				assert_equal :get, ibr.type
36				assert_equal "customer_test@component", ibr.from.to_s
37			end]
38		)
39		sgx = Bwmsgsv2Repo.new(redis: FakeRedis.new).get("test").sync
40		refute sgx.registered?
41	end
42	em :test_registered_not_registered
43
44	def test_register!
45		BackendSgx::IQ_MANAGER.expect(
46			:write,
47			EMPromise.resolve(OpenStruct.new(error?: false)),
48			[Matching.new do |ibr|
49				assert_equal "customer_test@component", ibr.from.to_s
50				assert_equal "test_bw_account", ibr.nick
51				assert_equal "test_bw_user", ibr.username
52				assert_equal "test_bw_password", ibr.password
53				assert_equal "+15555550000", ibr.phone
54			end]
55		)
56		sgx = TrivialBackendSgxRepo.new(redis: FakeRedis.new).get("test").sync
57		sgx.register!("+15555550000")
58		BackendSgx::IQ_MANAGER.verify
59	end
60	em :test_register!
61end