1# frozen_string_literal: true
2
3require "test_helper"
4require "sip_account"
5
6class SipAccount
7 public :password, :url
8
9 class New
10 public :password
11 end
12end
13
14class SipAccountTest < Minitest::Test
15 def setup
16 @sip = SipAccount.new(
17 url: "https://api.catapult.inetwork.com/v1/" \
18 "users/catapult_user/domains/catapult_domain/endpoints/test",
19 username: "12345",
20 password: "old password"
21 )
22 end
23
24 def test_with_random_password
25 new_sip = @sip.with_random_password
26 refute_equal @sip.password, new_sip.password
27 refute_empty new_sip.password
28 assert_kind_of String, new_sip.password
29 end
30
31 def test_form
32 form = @sip.form
33 assert_equal "12345", form.field("username").value
34 assert_equal "old password", form.field("password").value
35 assert_equal "host.bwapp.io.example.com", form.field("server").value
36 end
37
38 def test_put
39 delete = stub_request(:delete, @sip.url).with(
40 headers: {
41 "Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0"
42 }
43 ).to_return(status: 200)
44
45 post = stub_request(
46 :post,
47 "https://api.catapult.inetwork.com/v1/users/" \
48 "catapult_user/domains/catapult_domain/endpoints"
49 ).with(
50 body: open(__dir__ + "/data/catapult_create_sip.json").read.chomp,
51 headers: {
52 "Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
53 "Content-Type" => "application/json"
54 }
55 ).to_return(
56 status: 201,
57 headers: { "Location" => "http://example.com/endpoint" }
58 )
59
60 new_sip = @sip.put.sync
61 assert_equal "http://example.com/endpoint", new_sip.url
62 assert_requested delete
63 assert_requested post
64 end
65 em :test_put
66
67 def test_put_delete_fail
68 stub_request(:delete, @sip.url).to_return(status: 400)
69 assert_raises(RuntimeError) { @sip.put.sync }
70 end
71 em :test_put_delete_fail
72
73 def test_put_post_fail
74 stub_request(:delete, @sip.url).to_return(status: 200)
75 stub_request(
76 :post,
77 "https://api.catapult.inetwork.com/v1/users/" \
78 "catapult_user/domains/catapult_domain/endpoints"
79 ).to_return(status: 400)
80 assert_raises(RuntimeError) { @sip.put.sync }
81 end
82 em :test_put_post_fail
83
84 class NewTest < Minitest::Test
85 def setup
86 @sip = SipAccount::New.new(
87 username: "12345",
88 password: "old password"
89 )
90 end
91
92 def test_with_random_password
93 new_sip = @sip.with_random_password
94 refute_equal @sip.password, new_sip.password
95 refute_empty new_sip.password
96 assert_kind_of String, new_sip.password
97 end
98
99 def test_put
100 post = stub_request(
101 :post,
102 "https://api.catapult.inetwork.com/v1/users/" \
103 "catapult_user/domains/catapult_domain/endpoints"
104 ).with(
105 body: open(__dir__ + "/data/catapult_create_sip.json").read.chomp,
106 headers: {
107 "Authorization" => "Basic Y2F0YXB1bHRfdG9rZW46Y2F0YXB1bHRfc2VjcmV0",
108 "Content-Type" => "application/json"
109 }
110 ).to_return(
111 status: 201,
112 headers: { "Location" => "http://example.com/endpoint" }
113 )
114
115 new_sip = @sip.put.sync
116 assert_equal "http://example.com/endpoint", new_sip.url
117 assert_requested post
118 end
119 em :test_put
120 end
121end