hipchat 1.5.2 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +5 -0
- data/README.textile +14 -5
- data/hipchat.gemspec +2 -2
- data/lib/hipchat/api_version.rb +83 -1
- data/lib/hipchat/capistrano/tasks/hipchat.rake +10 -3
- data/lib/hipchat/client.rb +27 -23
- data/lib/hipchat/errors.rb +47 -8
- data/lib/hipchat/room.rb +198 -83
- data/lib/hipchat/user.rb +32 -32
- data/lib/hipchat/version.rb +1 -1
- data/spec/hipchat_api_v1_spec.rb +49 -5
- data/spec/hipchat_api_v2_spec.rb +291 -7
- data/spec/hipchat_spec.rb +5 -0
- data/spec/support/shared_contexts_for_hipchat.rb +156 -1
- metadata +8 -8
data/lib/hipchat/user.rb
CHANGED
@@ -19,26 +19,19 @@ module HipChat
|
|
19
19
|
#
|
20
20
|
# Send a private message to user.
|
21
21
|
#
|
22
|
-
def send(message, message_format='text')
|
22
|
+
def send(message, message_format='text', notify=false)
|
23
23
|
response = self.class.post(@api.send_config[:url],
|
24
24
|
:query => { :auth_token => @token },
|
25
25
|
:body => {
|
26
26
|
:message => message,
|
27
|
-
:message_format => message_format
|
27
|
+
:message_format => message_format,
|
28
|
+
:notify => notify
|
28
29
|
}.send(@api.send_config[:body_format]),
|
29
30
|
:headers => @api.headers
|
30
31
|
)
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
true
|
35
|
-
when 404
|
36
|
-
raise UnknownUser, "Unknown user: `#{user_id}'"
|
37
|
-
when 401
|
38
|
-
raise Unauthorized, "Access denied to user `#{user_id}'"
|
39
|
-
else
|
40
|
-
raise UnknownResponseCode, "Unexpected #{response.code} for private message to `#{user_id}'"
|
41
|
-
end
|
33
|
+
ErrorHandler.response_code_to_exception_for :user, user_id, response
|
34
|
+
true
|
42
35
|
end
|
43
36
|
|
44
37
|
#
|
@@ -51,15 +44,8 @@ module HipChat
|
|
51
44
|
:headers => file_body_headers(@api.headers)
|
52
45
|
)
|
53
46
|
|
54
|
-
|
55
|
-
|
56
|
-
when 404
|
57
|
-
raise UnknownUser, "Unknown user: `#{user_id}'"
|
58
|
-
when 401
|
59
|
-
raise Unauthorized, "Access denied to user `#{user_id}'"
|
60
|
-
else
|
61
|
-
raise UnknownResponseCode, "Unexpected #{response.code} for private message to `#{user_id}'"
|
62
|
-
end
|
47
|
+
ErrorHandler.response_code_to_exception_for :user, user_id, response
|
48
|
+
true
|
63
49
|
end
|
64
50
|
|
65
51
|
#
|
@@ -71,12 +57,8 @@ module HipChat
|
|
71
57
|
:headers => @api.headers
|
72
58
|
)
|
73
59
|
|
74
|
-
|
75
|
-
|
76
|
-
User.new(@token, response.merge(:api_version => @api.version))
|
77
|
-
else
|
78
|
-
raise UnknownResponseCode, "Unexpected #{response.code} for view message to `#{user_id}'"
|
79
|
-
end
|
60
|
+
ErrorHandler.response_code_to_exception_for :user, user_id, response
|
61
|
+
User.new(@token, response.merge(:api_version => @api.version))
|
80
62
|
end
|
81
63
|
|
82
64
|
#
|
@@ -90,12 +72,30 @@ module HipChat
|
|
90
72
|
:headers => @api.headers
|
91
73
|
)
|
92
74
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
75
|
+
ErrorHandler.response_code_to_exception_for :user, user_id, response
|
76
|
+
response.body
|
77
|
+
end
|
78
|
+
|
79
|
+
#
|
80
|
+
# Get private message history
|
81
|
+
#
|
82
|
+
def delete(params = {})
|
83
|
+
case @api.version
|
84
|
+
when 'v1'
|
85
|
+
response = self.class.post(@api.delete_config[:url],
|
86
|
+
:query => { :auth_token => @token }.merge(params),
|
87
|
+
:headers => @api.headers
|
88
|
+
)
|
89
|
+
when 'v2'
|
90
|
+
response = self.class.delete(@api.delete_config[:url],
|
91
|
+
:query => { :auth_token => @token },
|
92
|
+
:headers => @api.headers
|
93
|
+
)
|
98
94
|
end
|
95
|
+
|
96
|
+
ErrorHandler.response_code_to_exception_for :user, user_id, response
|
97
|
+
true
|
99
98
|
end
|
99
|
+
|
100
100
|
end
|
101
101
|
end
|
data/lib/hipchat/version.rb
CHANGED
data/spec/hipchat_api_v1_spec.rb
CHANGED
@@ -15,8 +15,8 @@ describe "HipChat (API V1)" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it "is successful with custom options" do
|
18
|
-
mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10, :'start-index' => 10)
|
19
|
-
expect(room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10, :'start-index' => 10)).to be_truthy
|
18
|
+
mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10, :'start-index' => 10, :'end-date' => '2010-11-19')
|
19
|
+
expect(room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10, :'start-index' => 10, :'end-date' => '2010-11-19')).to be_truthy
|
20
20
|
end
|
21
21
|
|
22
22
|
it "is successful from fetched room" do
|
@@ -48,7 +48,7 @@ describe "HipChat (API V1)" do
|
|
48
48
|
OpenStruct.new(:code => 403)
|
49
49
|
}
|
50
50
|
|
51
|
-
expect { room.history }.to raise_error(HipChat::
|
51
|
+
expect { room.history }.to raise_error(HipChat::Unauthorized)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -87,7 +87,23 @@ describe "HipChat (API V1)" do
|
|
87
87
|
OpenStruct.new(:code => 403)
|
88
88
|
}
|
89
89
|
|
90
|
-
expect { room.topic "" }.to raise_error(HipChat::
|
90
|
+
expect { room.topic "" }.to raise_error(HipChat::Unauthorized)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "#delete_room" do
|
95
|
+
include_context "HipChatV1"
|
96
|
+
|
97
|
+
it "successfully" do
|
98
|
+
mock_successful_delete_room("Hipchat")
|
99
|
+
expect(room.delete_room).to be_truthy
|
100
|
+
end
|
101
|
+
|
102
|
+
it "missing room" do
|
103
|
+
mock_delete_missing_room("Hipchat")
|
104
|
+
expect do
|
105
|
+
room.delete_room
|
106
|
+
end.to raise_exception(HipChat::UnknownRoom)
|
91
107
|
end
|
92
108
|
end
|
93
109
|
|
@@ -142,7 +158,7 @@ describe "HipChat (API V1)" do
|
|
142
158
|
OpenStruct.new(:code => 403)
|
143
159
|
}
|
144
160
|
|
145
|
-
expect { room.send "", "" }.to raise_error(HipChat::
|
161
|
+
expect { room.send "", "" }.to raise_error(HipChat::Unauthorized)
|
146
162
|
end
|
147
163
|
end
|
148
164
|
|
@@ -166,6 +182,27 @@ describe "HipChat (API V1)" do
|
|
166
182
|
end
|
167
183
|
end
|
168
184
|
|
185
|
+
describe "#create_user" do
|
186
|
+
include_context "HipChatV1"
|
187
|
+
|
188
|
+
it "successfully with user name" do
|
189
|
+
mock_successful_user_creation("A User", "email@example.com")
|
190
|
+
|
191
|
+
expect(subject.create_user("A User", "email@example.com")).to be_truthy
|
192
|
+
end
|
193
|
+
|
194
|
+
it "successfully with custom parameters" do
|
195
|
+
mock_successful_user_creation("A User", "email@example.com", {:title => "Super user", :password => "password", :is_group_admin => "true"})
|
196
|
+
|
197
|
+
expect(subject.create_user("A User", "email@example.com", {:title => "Super user", :password => "password", :is_group_admin =>true})).to be_truthy
|
198
|
+
end
|
199
|
+
|
200
|
+
it "but fail is name is longer then 50 char" do
|
201
|
+
expect { subject.create_user("A User that is too long that I should fail right now", "email@example.com") }.
|
202
|
+
to raise_error(HipChat::UsernameTooLong)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
169
206
|
describe "#send user message" do
|
170
207
|
it "fails because API V1 doesn't support user operations" do
|
171
208
|
|
@@ -173,4 +210,11 @@ describe "HipChat (API V1)" do
|
|
173
210
|
to raise_error(HipChat::InvalidApiVersion)
|
174
211
|
end
|
175
212
|
end
|
213
|
+
|
214
|
+
describe "#create_webhook"
|
215
|
+
it "fails because API V1 doesn't support webhooks" do
|
216
|
+
|
217
|
+
expect { room.create_webhook('https://example.org/hooks/awesome', 'room_enter') }.
|
218
|
+
to raise_error(HipChat::InvalidApiVersion)
|
219
|
+
end
|
176
220
|
end
|
data/spec/hipchat_api_v2_spec.rb
CHANGED
@@ -16,8 +16,8 @@ describe "HipChat (API V2)" do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "is successful with custom options" do
|
19
|
-
mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10, :'start-index' => 10)
|
20
|
-
expect(room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10, :'start-index' => 10)).to be_truthy
|
19
|
+
mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10, :'start-index' => 10, :'end-date' => '2010-11-19')
|
20
|
+
expect(room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10, :'start-index' => 10, :'end-date' => '2010-11-19')).to be_truthy
|
21
21
|
end
|
22
22
|
|
23
23
|
it "is successful from fetched room" do
|
@@ -49,7 +49,7 @@ describe "HipChat (API V2)" do
|
|
49
49
|
OpenStruct.new(:code => 403)
|
50
50
|
}
|
51
51
|
|
52
|
-
expect { room.history }.to raise_error(HipChat::
|
52
|
+
expect { room.history }.to raise_error(HipChat::Unauthorized)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -90,7 +90,7 @@ describe "HipChat (API V2)" do
|
|
90
90
|
OpenStruct.new(:code => 403)
|
91
91
|
}
|
92
92
|
|
93
|
-
expect { room.statistics }.to raise_error(HipChat::
|
93
|
+
expect { room.statistics }.to raise_error(HipChat::Unauthorized)
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -129,7 +129,40 @@ describe "HipChat (API V2)" do
|
|
129
129
|
OpenStruct.new(:code => 403)
|
130
130
|
}
|
131
131
|
|
132
|
-
expect { room.topic "" }.to raise_error(HipChat::
|
132
|
+
expect { room.topic "" }.to raise_error(HipChat::Unauthorized)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe "#send_message" do
|
137
|
+
include_context "HipChatV2"
|
138
|
+
it "successfully without custom options" do
|
139
|
+
mock_successful_send_message 'Hello world'
|
140
|
+
|
141
|
+
expect(room.send_message("Hello world")).to be_truthy
|
142
|
+
end
|
143
|
+
|
144
|
+
it "but fails when the room doesn't exist" do
|
145
|
+
mock(HipChat::Room).post(anything, anything) {
|
146
|
+
OpenStruct.new(:code => 404)
|
147
|
+
}
|
148
|
+
|
149
|
+
expect { room.send_message "" }.to raise_error(HipChat::UnknownRoom)
|
150
|
+
end
|
151
|
+
|
152
|
+
it "but fails when we're not allowed to do so" do
|
153
|
+
mock(HipChat::Room).post(anything, anything) {
|
154
|
+
OpenStruct.new(:code => 401)
|
155
|
+
}
|
156
|
+
|
157
|
+
expect { room.send_message "" }.to raise_error(HipChat::Unauthorized)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "but fails if we get an unknown response code" do
|
161
|
+
mock(HipChat::Room).post(anything, anything) {
|
162
|
+
OpenStruct.new(:code => 403)
|
163
|
+
}
|
164
|
+
|
165
|
+
expect { room.send_message "" }.to raise_error(HipChat::Unauthorized)
|
133
166
|
end
|
134
167
|
end
|
135
168
|
|
@@ -153,6 +186,17 @@ describe "HipChat (API V2)" do
|
|
153
186
|
expect(room.send("Dude", "Hello world", :color => 'red')).to be_truthy
|
154
187
|
end
|
155
188
|
|
189
|
+
it "successfully creates a card in the room" do
|
190
|
+
card = {
|
191
|
+
:style => 'application',
|
192
|
+
:title => 'My Awesome Card',
|
193
|
+
:id => 12345
|
194
|
+
}
|
195
|
+
mock_successful_send_card 'Dude', 'Hello world', card
|
196
|
+
|
197
|
+
expect(room.send("Dude", "Hello world", :card => card)).to be_truthy
|
198
|
+
end
|
199
|
+
|
156
200
|
it "successfully with text message_format" do
|
157
201
|
mock_successful_send 'Dude', 'Hello world', :message_format => 'text'
|
158
202
|
|
@@ -184,7 +228,46 @@ describe "HipChat (API V2)" do
|
|
184
228
|
OpenStruct.new(:code => 403)
|
185
229
|
}
|
186
230
|
|
187
|
-
expect { room.send "", "" }.to raise_error(HipChat::
|
231
|
+
expect { room.send "", "" }.to raise_error(HipChat::Unauthorized)
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe '#share_link' do
|
236
|
+
let(:link) { "http://i.imgur.com/cZ6GDFY.jpg" }
|
237
|
+
include_context "HipChatV2"
|
238
|
+
it "successfully" do
|
239
|
+
mock_successful_link_share 'Dude', 'Sloth love Chunk!', link
|
240
|
+
|
241
|
+
room.share_link("Dude", "Sloth love Chunk!", link).should be_truthy
|
242
|
+
end
|
243
|
+
|
244
|
+
it "but fails when the room doesn't exist" do
|
245
|
+
mock(HipChat::Room).post(anything, anything) {
|
246
|
+
OpenStruct.new(:code => 404)
|
247
|
+
}
|
248
|
+
|
249
|
+
lambda { room.share_link "", "", link }.should raise_error(HipChat::UnknownRoom)
|
250
|
+
end
|
251
|
+
|
252
|
+
it "but fails when we're not allowed to do so" do
|
253
|
+
mock(HipChat::Room).post(anything, anything) {
|
254
|
+
OpenStruct.new(:code => 401)
|
255
|
+
}
|
256
|
+
|
257
|
+
lambda { room.share_link "", "", link }.should raise_error(HipChat::Unauthorized)
|
258
|
+
end
|
259
|
+
|
260
|
+
it "but fails if the username is more than 15 chars" do
|
261
|
+
lambda { room.share_link "a very long username here", "a message", link }.should raise_error(HipChat::UsernameTooLong)
|
262
|
+
end
|
263
|
+
|
264
|
+
it "but fails if we get an unknown response code" do
|
265
|
+
mock(HipChat::Room).post(anything, anything) {
|
266
|
+
OpenStruct.new(:code => 403)
|
267
|
+
}
|
268
|
+
|
269
|
+
lambda { room.share_link "", "", link }.
|
270
|
+
should raise_error(HipChat::Unauthorized)
|
188
271
|
end
|
189
272
|
end
|
190
273
|
|
@@ -232,7 +315,7 @@ describe "HipChat (API V2)" do
|
|
232
315
|
}
|
233
316
|
|
234
317
|
lambda { room.send_file "", "", file }.
|
235
|
-
should raise_error(HipChat::
|
318
|
+
should raise_error(HipChat::Unauthorized)
|
236
319
|
end
|
237
320
|
end
|
238
321
|
|
@@ -257,6 +340,27 @@ describe "HipChat (API V2)" do
|
|
257
340
|
end
|
258
341
|
end
|
259
342
|
|
343
|
+
describe "#create_user" do
|
344
|
+
include_context "HipChatV2"
|
345
|
+
|
346
|
+
it "successfully with user name" do
|
347
|
+
mock_successful_user_creation("A User", "email@example.com")
|
348
|
+
|
349
|
+
expect(subject.create_user("A User", "email@example.com")).to be_truthy
|
350
|
+
end
|
351
|
+
|
352
|
+
it "successfully with custom parameters" do
|
353
|
+
mock_successful_user_creation("A User", "email@example.com", {:title => "Super user", :password => "password", :is_group_admin => true})
|
354
|
+
|
355
|
+
expect(subject.create_user("A User", "email@example.com", {:title => "Super user", :password => "password", :is_group_admin =>true})).to be_truthy
|
356
|
+
end
|
357
|
+
|
358
|
+
it "but fail is name is longer then 50 char" do
|
359
|
+
expect { subject.create_user("A User that is too long that I should fail right now", "email@example.com") }.
|
360
|
+
to raise_error(HipChat::UsernameTooLong)
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
260
364
|
describe "#get_room" do
|
261
365
|
include_context "HipChatV2"
|
262
366
|
|
@@ -286,6 +390,22 @@ describe "HipChat (API V2)" do
|
|
286
390
|
end
|
287
391
|
end
|
288
392
|
|
393
|
+
describe "#delete_room" do
|
394
|
+
include_context "HipChatV2"
|
395
|
+
|
396
|
+
it "successfully" do
|
397
|
+
mock_successful_delete_room("Hipchat",)
|
398
|
+
expect(room.delete_room).to be_truthy
|
399
|
+
end
|
400
|
+
|
401
|
+
it "missing room" do
|
402
|
+
mock_delete_missing_room("Hipchat")
|
403
|
+
expect do
|
404
|
+
room.delete_room
|
405
|
+
end.to raise_exception(HipChat::UnknownRoom)
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
289
409
|
describe "#invite" do
|
290
410
|
include_context "HipChatV2"
|
291
411
|
|
@@ -302,6 +422,22 @@ describe "HipChat (API V2)" do
|
|
302
422
|
end
|
303
423
|
end
|
304
424
|
|
425
|
+
describe "#add_member" do
|
426
|
+
include_context "HipChatV2"
|
427
|
+
|
428
|
+
it "successfully with user_id" do
|
429
|
+
mock_successful_add_member()
|
430
|
+
|
431
|
+
expect(room.add_member("1234")).to be_truthy
|
432
|
+
end
|
433
|
+
|
434
|
+
it "successfully with custom parameters" do
|
435
|
+
mock_successful_add_member({:user_id => "321", :room_roles => ["room_admin","room_member"]})
|
436
|
+
|
437
|
+
expect(room.add_member("321", ["room_admin","room_member"])).to be_truthy
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
305
441
|
describe "#send user message" do
|
306
442
|
include_context "HipChatV2"
|
307
443
|
it "successfully with a standard message" do
|
@@ -372,4 +508,152 @@ describe "HipChat (API V2)" do
|
|
372
508
|
lambda { user.send_file "", file }.should raise_error(HipChat::Unauthorized)
|
373
509
|
end
|
374
510
|
end
|
511
|
+
|
512
|
+
describe '#create_webhook' do
|
513
|
+
include_context "HipChatV2"
|
514
|
+
|
515
|
+
it "successfully with a valid room, url and event" do
|
516
|
+
mock_successful_create_webhook('Hipchat', 'https://example.org/hooks/awesome', 'room_enter')
|
517
|
+
|
518
|
+
expect(room.create_webhook('https://example.org/hooks/awesome', 'room_enter')).to be_truthy
|
519
|
+
end
|
520
|
+
|
521
|
+
it "but fails when the room doesn't exist" do
|
522
|
+
mock(HipChat::Room).post(anything, anything) {
|
523
|
+
OpenStruct.new(:code => 404)
|
524
|
+
}
|
525
|
+
|
526
|
+
lambda { room.create_webhook('https://example.org/hooks/awesome', 'room_enter') }.should raise_error(HipChat::UnknownRoom)
|
527
|
+
end
|
528
|
+
|
529
|
+
it "but fails when we're not allowed to do so" do
|
530
|
+
mock(HipChat::Room).post(anything, anything) {
|
531
|
+
OpenStruct.new(:code => 401)
|
532
|
+
}
|
533
|
+
|
534
|
+
lambda { room.create_webhook('https://example.org/hooks/awesome', 'room_enter') }.should raise_error(HipChat::Unauthorized)
|
535
|
+
end
|
536
|
+
|
537
|
+
it "but fails if the url is invalid" do
|
538
|
+
lambda { room.create_webhook('foo://bar.baz/', 'room_enter') }.should raise_error(HipChat::InvalidUrl)
|
539
|
+
end
|
540
|
+
|
541
|
+
it "but fails if the event is invalid" do
|
542
|
+
lambda { room.create_webhook('https://example.org/hooks/awesome', 'room_vandalize') }.should raise_error(HipChat::InvalidEvent)
|
543
|
+
end
|
544
|
+
|
545
|
+
it "but fails if we get an unknown response code" do
|
546
|
+
mock(HipChat::Room).post(anything, anything) {
|
547
|
+
OpenStruct.new(:code => 403)
|
548
|
+
}
|
549
|
+
|
550
|
+
lambda { room.create_webhook('https://example.org/hooks/awesome', 'room_enter') }.
|
551
|
+
should raise_error(HipChat::Unauthorized)
|
552
|
+
end
|
553
|
+
end
|
554
|
+
|
555
|
+
describe '#delete_webhook' do
|
556
|
+
include_context "HipChatV2"
|
557
|
+
|
558
|
+
it "successfully deletes a webhook with a valid webhook id" do
|
559
|
+
mock_successful_delete_webhook('Hipchat', 'my_awesome_webhook')
|
560
|
+
|
561
|
+
expect(room.delete_webhook('my_awesome_webhook')).to be_truthy
|
562
|
+
end
|
563
|
+
|
564
|
+
it "but fails when the webhook doesn't exist" do
|
565
|
+
mock(HipChat::Room).delete(anything, anything) {
|
566
|
+
OpenStruct.new(:code => 404)
|
567
|
+
}
|
568
|
+
|
569
|
+
lambda { room.delete_webhook('my_awesome_webhook') }.should raise_error(HipChat::UnknownWebhook)
|
570
|
+
end
|
571
|
+
|
572
|
+
it "but fails when we're not allowed to do so" do
|
573
|
+
mock(HipChat::Room).delete(anything, anything) {
|
574
|
+
OpenStruct.new(:code => 401)
|
575
|
+
}
|
576
|
+
|
577
|
+
lambda { room.delete_webhook('my_awesome_webhook') }.should raise_error(HipChat::Unauthorized)
|
578
|
+
end
|
579
|
+
|
580
|
+
it "but fails if we get an unknown response code" do
|
581
|
+
mock(HipChat::Room).delete(anything, anything) {
|
582
|
+
OpenStruct.new(:code => 403)
|
583
|
+
}
|
584
|
+
|
585
|
+
lambda { room.delete_webhook('my_awesome_webhook') }.
|
586
|
+
should raise_error(HipChat::Unauthorized)
|
587
|
+
end
|
588
|
+
end
|
589
|
+
|
590
|
+
describe '#get_all_webhooks' do
|
591
|
+
include_context "HipChatV2"
|
592
|
+
|
593
|
+
it "successfully lists webhooks with a valid room id" do
|
594
|
+
mock_successful_get_all_webhooks('Hipchat')
|
595
|
+
|
596
|
+
expect(room.get_all_webhooks).to be_truthy
|
597
|
+
end
|
598
|
+
|
599
|
+
it "but fails when the room doesn't exist" do
|
600
|
+
mock(HipChat::Room).get(anything, anything) {
|
601
|
+
OpenStruct.new(:code => 404)
|
602
|
+
}
|
603
|
+
|
604
|
+
lambda { room.get_all_webhooks }.should raise_error(HipChat::UnknownRoom)
|
605
|
+
end
|
606
|
+
|
607
|
+
it "but fails when we're not allowed to do so" do
|
608
|
+
mock(HipChat::Room).get(anything, anything) {
|
609
|
+
OpenStruct.new(:code => 401)
|
610
|
+
}
|
611
|
+
|
612
|
+
lambda { room.get_all_webhooks }.should raise_error(HipChat::Unauthorized)
|
613
|
+
end
|
614
|
+
|
615
|
+
it "but fails if we get an unknown response code" do
|
616
|
+
mock(HipChat::Room).get(anything, anything) {
|
617
|
+
OpenStruct.new(:code => 403)
|
618
|
+
}
|
619
|
+
|
620
|
+
lambda { room.get_all_webhooks }.
|
621
|
+
should raise_error(HipChat::Unauthorized)
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
625
|
+
describe '#get_webhook' do
|
626
|
+
include_context "HipChatV2"
|
627
|
+
|
628
|
+
it "successfully gets webhook info with valid room and webhook ids" do
|
629
|
+
mock_successful_get_webhook('Hipchat', '5678')
|
630
|
+
|
631
|
+
expect(room.get_webhook('5678')).to be_truthy
|
632
|
+
end
|
633
|
+
|
634
|
+
it "but fails when the webhook doesn't exist" do
|
635
|
+
mock(HipChat::Room).get(anything, anything) {
|
636
|
+
OpenStruct.new(:code => 404)
|
637
|
+
}
|
638
|
+
|
639
|
+
lambda { room.get_webhook('5678') }.should raise_error(HipChat::UnknownWebhook)
|
640
|
+
end
|
641
|
+
|
642
|
+
it "but fails when we're not allowed to do so" do
|
643
|
+
mock(HipChat::Room).get(anything, anything) {
|
644
|
+
OpenStruct.new(:code => 401)
|
645
|
+
}
|
646
|
+
|
647
|
+
lambda { room.get_webhook('5678') }.should raise_error(HipChat::Unauthorized)
|
648
|
+
end
|
649
|
+
|
650
|
+
it "but fails if we get an unknown response code" do
|
651
|
+
mock(HipChat::Room).get(anything, anything) {
|
652
|
+
OpenStruct.new(:code => 403)
|
653
|
+
}
|
654
|
+
|
655
|
+
lambda { room.get_webhook('5678') }.
|
656
|
+
should raise_error(HipChat::Unauthorized)
|
657
|
+
end
|
658
|
+
end
|
375
659
|
end
|