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