hipchat 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/hipchat/user.rb CHANGED
@@ -5,13 +5,13 @@ module HipChat
5
5
 
6
6
  class User < OpenStruct
7
7
  include HTTParty
8
+ include FileHelper
8
9
 
9
- format :json
10
+ format :json
10
11
 
11
12
  def initialize(token, params)
12
13
  @token = token
13
- @api = HipChat::ApiVersion::User.new(params[:user_id],
14
- params)
14
+ @api = HipChat::ApiVersion::User.new(params)
15
15
  self.class.base_uri(@api.base_uri)
16
16
  super(params)
17
17
  end
@@ -19,13 +19,36 @@ module HipChat
19
19
  #
20
20
  # Send a private message to user.
21
21
  #
22
- def send(message)
22
+ def send(message, message_format='text')
23
23
  response = self.class.post(@api.send_config[:url],
24
+ :query => { :auth_token => @token },
25
+ :body => {
26
+ :message => message,
27
+ :message_format => message_format
28
+ }.send(@api.send_config[:body_format]),
29
+ :headers => @api.headers
30
+ )
31
+
32
+ case response.code
33
+ when 200, 204;
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
42
+ end
43
+
44
+ #
45
+ # Send a private file to user.
46
+ #
47
+ def send_file(message, file)
48
+ response = self.class.post(@api.send_file_config[:url],
24
49
  :query => { :auth_token => @token },
25
- :body => {
26
- :message => message
27
- }.send(@api.send_config[:body_format]),
28
- :headers => @api.headers
50
+ :body => file_body({ :message => message }.send(@api.send_config[:body_format]), file),
51
+ :headers => file_body_headers(@api.headers)
29
52
  )
30
53
 
31
54
  case response.code
@@ -43,18 +66,36 @@ module HipChat
43
66
  # Get a user's details.
44
67
  #
45
68
  def view
46
- puts "#{@api.base_uri}#{@api.view_config[:url]}"
47
69
  response = self.class.get(@api.view_config[:url],
48
- :query => { :auth_token => @token },
49
- :headers => @api.headers
70
+ :query => { :auth_token => @token }.merge(@api.view_config[:query_params]),
71
+ :headers => @api.headers
50
72
  )
51
73
 
52
74
  case response.code
53
75
  when 200
54
- User.new(@token, response.merge(:api_version => 'v2'))
76
+ User.new(@token, response.merge(:api_version => @api.version))
55
77
  else
56
78
  raise UnknownResponseCode, "Unexpected #{response.code} for view message to `#{user_id}'"
57
79
  end
58
80
  end
81
+
82
+ #
83
+ # Get private message history
84
+ #
85
+ def history(params = {})
86
+ params.select! { |key, _value| @api.history_config[:allowed_params].include? key }
87
+
88
+ response = self.class.get(@api.history_config[:url],
89
+ :query => { :auth_token => @token }.merge(params),
90
+ :headers => @api.headers
91
+ )
92
+
93
+ case response.code
94
+ when 200
95
+ response.body
96
+ else
97
+ raise UnknownResponseCode, "Unexpected #{response.code} for view private message history for `#{user_id}'"
98
+ end
99
+ end
59
100
  end
60
101
  end
@@ -1,3 +1,3 @@
1
1
  module HipChat
2
- VERSION = "1.4.0"
2
+ VERSION = '1.5.0'
3
3
  end
@@ -11,20 +11,20 @@ describe "HipChat (API V1)" do
11
11
  it "is successful without custom options" do
12
12
  mock_successful_history()
13
13
 
14
- room.history().should be_true
14
+ expect(room.history()).to be_truthy
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')
19
- room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19').should be_true
18
+ mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10)
19
+ expect(room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10)).to be_truthy
20
20
  end
21
21
 
22
22
  it "is successful from fetched room" do
23
23
  mock_successful_rooms
24
24
  mock_successful_history
25
25
 
26
- subject.rooms.should be_true
27
- subject.rooms.first.history.should be_true
26
+ expect(subject.rooms).to be_truthy
27
+ expect(subject.rooms.first.history).to be_truthy
28
28
  end
29
29
 
30
30
  it "fails when the room doen't exist" do
@@ -32,7 +32,7 @@ describe "HipChat (API V1)" do
32
32
  OpenStruct.new(:code => 404)
33
33
  }
34
34
 
35
- lambda { room.history }.should raise_error(HipChat::UnknownRoom)
35
+ expect { room.history }.to raise_error(HipChat::UnknownRoom)
36
36
  end
37
37
 
38
38
  it "fails when we're not allowed to do so" do
@@ -40,7 +40,7 @@ describe "HipChat (API V1)" do
40
40
  OpenStruct.new(:code => 401)
41
41
  }
42
42
 
43
- lambda { room.history }.should raise_error(HipChat::Unauthorized)
43
+ expect { room.history }.to raise_error(HipChat::Unauthorized)
44
44
  end
45
45
 
46
46
  it "fails if we get an unknown response code" do
@@ -48,8 +48,7 @@ describe "HipChat (API V1)" do
48
48
  OpenStruct.new(:code => 403)
49
49
  }
50
50
 
51
- lambda { room.history }.
52
- should raise_error(HipChat::UnknownResponseCode)
51
+ expect { room.history }.to raise_error(HipChat::UnknownResponseCode)
53
52
  end
54
53
  end
55
54
 
@@ -58,13 +57,13 @@ describe "HipChat (API V1)" do
58
57
  it "is successful without custom options" do
59
58
  mock_successful_topic_change("Nice topic")
60
59
 
61
- room.topic("Nice topic").should be_true
60
+ expect(room.topic("Nice topic")).to be_truthy
62
61
  end
63
62
 
64
63
  it "is successful with a custom from" do
65
64
  mock_successful_topic_change("Nice topic", :from => "Me")
66
65
 
67
- room.topic("Nice topic", :from => "Me").should be_true
66
+ expect(room.topic("Nice topic", :from => "Me")).to be_truthy
68
67
  end
69
68
 
70
69
  it "fails when the room doesn't exist" do
@@ -72,7 +71,7 @@ describe "HipChat (API V1)" do
72
71
  OpenStruct.new(:code => 404)
73
72
  }
74
73
 
75
- lambda { room.topic "" }.should raise_error(HipChat::UnknownRoom)
74
+ expect { room.topic "" }.to raise_error(HipChat::UnknownRoom)
76
75
  end
77
76
 
78
77
  it "fails when we're not allowed to do so" do
@@ -80,7 +79,7 @@ describe "HipChat (API V1)" do
80
79
  OpenStruct.new(:code => 401)
81
80
  }
82
81
 
83
- lambda { room.topic "" }.should raise_error(HipChat::Unauthorized)
82
+ expect { room.topic "" }.to raise_error(HipChat::Unauthorized)
84
83
  end
85
84
 
86
85
  it "fails if we get an unknown response code" do
@@ -88,8 +87,7 @@ describe "HipChat (API V1)" do
88
87
  OpenStruct.new(:code => 403)
89
88
  }
90
89
 
91
- lambda { room.topic "" }.
92
- should raise_error(HipChat::UnknownResponseCode)
90
+ expect { room.topic "" }.to raise_error(HipChat::UnknownResponseCode)
93
91
  end
94
92
  end
95
93
 
@@ -98,25 +96,25 @@ describe "HipChat (API V1)" do
98
96
  it "successfully without custom options" do
99
97
  mock_successful_send 'Dude', 'Hello world'
100
98
 
101
- room.send("Dude", "Hello world").should be_true
99
+ expect(room.send("Dude", "Hello world")).to be_truthy
102
100
  end
103
101
 
104
102
  it "successfully with notifications on as option" do
105
103
  mock_successful_send 'Dude', 'Hello world', :notify => 1
106
104
 
107
- room.send("Dude", "Hello world", :notify => 1).should be_true
105
+ expect(room.send("Dude", "Hello world", :notify => 1)).to be_truthy
108
106
  end
109
107
 
110
108
  it "successfully with custom color" do
111
109
  mock_successful_send 'Dude', 'Hello world', :color => 'red'
112
110
 
113
- room.send("Dude", "Hello world", :color => 'red').should be_true
111
+ expect(room.send("Dude", "Hello world", :color => 'red')).to be_truthy
114
112
  end
115
113
 
116
114
  it "successfully with text message_format" do
117
115
  mock_successful_send 'Dude', 'Hello world', :message_format => 'text'
118
116
 
119
- room.send("Dude", "Hello world", :message_format => 'text').should be_true
117
+ expect(room.send("Dude", "Hello world", :message_format => 'text')).to be_truthy
120
118
  end
121
119
 
122
120
  it "but fails when the room doesn't exist" do
@@ -124,7 +122,7 @@ describe "HipChat (API V1)" do
124
122
  OpenStruct.new(:code => 404)
125
123
  }
126
124
 
127
- lambda { room.send "", "" }.should raise_error(HipChat::UnknownRoom)
125
+ expect { room.send "", "" }.to raise_error(HipChat::UnknownRoom)
128
126
  end
129
127
 
130
128
  it "but fails when we're not allowed to do so" do
@@ -132,11 +130,11 @@ describe "HipChat (API V1)" do
132
130
  OpenStruct.new(:code => 401)
133
131
  }
134
132
 
135
- lambda { room.send "", "" }.should raise_error(HipChat::Unauthorized)
133
+ expect { room.send "", "" }.to raise_error(HipChat::Unauthorized)
136
134
  end
137
135
 
138
136
  it "but fails if the username is more than 15 chars" do
139
- lambda { room.send "a very long username here", "a message" }.should raise_error(HipChat::UsernameTooLong)
137
+ expect { room.send "a very long username here", "a message" }.to raise_error(HipChat::UsernameTooLong)
140
138
  end
141
139
 
142
140
  it "but fails if we get an unknown response code" do
@@ -144,8 +142,7 @@ describe "HipChat (API V1)" do
144
142
  OpenStruct.new(:code => 403)
145
143
  }
146
144
 
147
- lambda { room.send "", "" }.
148
- should raise_error(HipChat::UnknownResponseCode)
145
+ expect { room.send "", "" }.to raise_error(HipChat::UnknownResponseCode)
149
146
  end
150
147
  end
151
148
 
@@ -155,26 +152,25 @@ describe "HipChat (API V1)" do
155
152
  it "successfully with room name" do
156
153
  mock_successful_room_creation("A Room", :owner_user_id => "123456")
157
154
 
158
- subject.create_room("A Room", {:owner_user_id => "123456"}).should be_true
155
+ expect(subject.create_room("A Room", {:owner_user_id => "123456"})).to be_truthy
159
156
  end
160
157
 
161
158
  it "successfully with custom parameters" do
162
159
  mock_successful_room_creation("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access => "1"})
163
160
 
164
- subject.create_room("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access =>true}).should be_true
161
+ expect(subject.create_room("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access =>true})).to be_truthy
165
162
  end
166
163
 
167
164
  it "but fails if we dont pass owner_user_id" do
168
- lambda { subject.create_room("A Room", {:privacy => "private", :guest_access =>true}) }.
169
- should raise_error(HipChat::RoomMissingOwnerUserId)
165
+ expect { subject.create_room("A Room", {:privacy => "private", :guest_access =>true}) }.to raise_error(HipChat::RoomMissingOwnerUserId)
170
166
  end
171
167
  end
172
168
 
173
169
  describe "#send user message" do
174
170
  it "fails because API V1 doesn't support user operations" do
175
171
 
176
- lambda { HipChat::Client.new("blah", :api_version => @api_version).user('12345678') }.
177
- should raise_error(HipChat::InvalidApiVersion)
172
+ expect { HipChat::Client.new("blah", :api_version => @api_version).user('12345678').send('nope') }.
173
+ to raise_error(HipChat::InvalidApiVersion)
178
174
  end
179
175
  end
180
176
  end
@@ -12,20 +12,20 @@ describe "HipChat (API V2)" do
12
12
  it "is successful without custom options" do
13
13
  mock_successful_history()
14
14
 
15
- room.history().should be_true
15
+ expect(room.history()).to be_truthy
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')
20
- room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19').should be_true
19
+ mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10)
20
+ expect(room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10)).to be_truthy
21
21
  end
22
22
 
23
23
  it "is successful from fetched room" do
24
24
  mock_successful_rooms
25
25
  mock_successful_history
26
26
 
27
- subject.rooms.should be_true
28
- subject.rooms.first.history.should be_true
27
+ expect(subject.rooms).to be_truthy
28
+ expect(subject.rooms.first.history).to be_truthy
29
29
  end
30
30
 
31
31
  it "fails when the room doen't exist" do
@@ -33,7 +33,7 @@ describe "HipChat (API V2)" do
33
33
  OpenStruct.new(:code => 404)
34
34
  }
35
35
 
36
- lambda { room.history }.should raise_error(HipChat::UnknownRoom)
36
+ expect { room.history }.to raise_error(HipChat::UnknownRoom)
37
37
  end
38
38
 
39
39
  it "fails when we're not allowed to do so" do
@@ -41,7 +41,7 @@ describe "HipChat (API V2)" do
41
41
  OpenStruct.new(:code => 401)
42
42
  }
43
43
 
44
- lambda { room.history }.should raise_error(HipChat::Unauthorized)
44
+ expect { room.history }.to raise_error(HipChat::Unauthorized)
45
45
  end
46
46
 
47
47
  it "fails if we get an unknown response code" do
@@ -49,8 +49,7 @@ describe "HipChat (API V2)" do
49
49
  OpenStruct.new(:code => 403)
50
50
  }
51
51
 
52
- lambda { room.history }.
53
- should raise_error(HipChat::UnknownResponseCode)
52
+ expect { room.history }.to raise_error(HipChat::UnknownResponseCode)
54
53
  end
55
54
  end
56
55
 
@@ -59,15 +58,15 @@ describe "HipChat (API V2)" do
59
58
  it "is successful without custom options" do
60
59
  mock_successful_statistics
61
60
 
62
- room.statistics().should be_true
61
+ expect(room.statistics()).to be_truthy
63
62
  end
64
63
 
65
64
  it "is successful from fetched room" do
66
65
  mock_successful_rooms
67
66
  mock_successful_statistics
68
67
 
69
- subject.rooms.should be_true
70
- subject.rooms.first.statistics.should be_true
68
+ expect(subject.rooms).to be_truthy
69
+ expect(subject.rooms.first.statistics).to be_truthy
71
70
  end
72
71
 
73
72
  it "fails when the room doen't exist" do
@@ -75,7 +74,7 @@ describe "HipChat (API V2)" do
75
74
  OpenStruct.new(:code => 404)
76
75
  }
77
76
 
78
- lambda { room.statistics }.should raise_error(HipChat::UnknownRoom)
77
+ expect { room.statistics }.to raise_error(HipChat::UnknownRoom)
79
78
  end
80
79
 
81
80
  it "fails when we're not allowed to do so" do
@@ -83,7 +82,7 @@ describe "HipChat (API V2)" do
83
82
  OpenStruct.new(:code => 401)
84
83
  }
85
84
 
86
- lambda { room.statistics }.should raise_error(HipChat::Unauthorized)
85
+ expect { room.statistics }.to raise_error(HipChat::Unauthorized)
87
86
  end
88
87
 
89
88
  it "fails if we get an unknown response code" do
@@ -91,9 +90,8 @@ describe "HipChat (API V2)" do
91
90
  OpenStruct.new(:code => 403)
92
91
  }
93
92
 
94
- lambda { room.statistics }.
95
- should raise_error(HipChat::UnknownResponseCode)
96
- end
93
+ expect { room.statistics }.to raise_error(HipChat::UnknownResponseCode)
94
+ end
97
95
  end
98
96
 
99
97
  describe "#topic" do
@@ -101,13 +99,13 @@ describe "HipChat (API V2)" do
101
99
  it "is successful without custom options" do
102
100
  mock_successful_topic_change("Nice topic")
103
101
 
104
- room.topic("Nice topic").should be_true
102
+ expect(room.topic("Nice topic")).to be_truthy
105
103
  end
106
104
 
107
105
  it "is successful with a custom from" do
108
106
  mock_successful_topic_change("Nice topic", :from => "Me")
109
107
 
110
- room.topic("Nice topic", :from => "Me").should be_true
108
+ expect(room.topic("Nice topic", :from => "Me")).to be_truthy
111
109
  end
112
110
 
113
111
  it "fails when the room doesn't exist" do
@@ -115,7 +113,7 @@ describe "HipChat (API V2)" do
115
113
  OpenStruct.new(:code => 404)
116
114
  }
117
115
 
118
- lambda { room.topic "" }.should raise_error(HipChat::UnknownRoom)
116
+ expect { room.topic "" }.to raise_error(HipChat::UnknownRoom)
119
117
  end
120
118
 
121
119
  it "fails when we're not allowed to do so" do
@@ -123,7 +121,7 @@ describe "HipChat (API V2)" do
123
121
  OpenStruct.new(:code => 401)
124
122
  }
125
123
 
126
- lambda { room.topic "" }.should raise_error(HipChat::Unauthorized)
124
+ expect { room.topic "" }.to raise_error(HipChat::Unauthorized)
127
125
  end
128
126
 
129
127
  it "fails if we get an unknown response code" do
@@ -131,8 +129,7 @@ describe "HipChat (API V2)" do
131
129
  OpenStruct.new(:code => 403)
132
130
  }
133
131
 
134
- lambda { room.topic "" }.
135
- should raise_error(HipChat::UnknownResponseCode)
132
+ expect { room.topic "" }.to raise_error(HipChat::UnknownResponseCode)
136
133
  end
137
134
  end
138
135
 
@@ -141,25 +138,25 @@ describe "HipChat (API V2)" do
141
138
  it "successfully without custom options" do
142
139
  mock_successful_send 'Dude', 'Hello world'
143
140
 
144
- room.send("Dude", "Hello world").should be_true
141
+ expect(room.send("Dude", "Hello world")).to be_truthy
145
142
  end
146
143
 
147
144
  it "successfully with notifications on as option" do
148
145
  mock_successful_send 'Dude', 'Hello world', :notify => true
149
146
 
150
- room.send("Dude", "Hello world", :notify => true).should be_true
147
+ expect(room.send("Dude", "Hello world", :notify => true)).to be_truthy
151
148
  end
152
149
 
153
150
  it "successfully with custom color" do
154
151
  mock_successful_send 'Dude', 'Hello world', :color => 'red'
155
152
 
156
- room.send("Dude", "Hello world", :color => 'red').should be_true
153
+ expect(room.send("Dude", "Hello world", :color => 'red')).to be_truthy
157
154
  end
158
155
 
159
156
  it "successfully with text message_format" do
160
157
  mock_successful_send 'Dude', 'Hello world', :message_format => 'text'
161
158
 
162
- room.send("Dude", "Hello world", :message_format => 'text').should be_true
159
+ expect(room.send("Dude", "Hello world", :message_format => 'text')).to be_truthy
163
160
  end
164
161
 
165
162
  it "but fails when the room doesn't exist" do
@@ -167,7 +164,7 @@ describe "HipChat (API V2)" do
167
164
  OpenStruct.new(:code => 404)
168
165
  }
169
166
 
170
- lambda { room.send "", "" }.should raise_error(HipChat::UnknownRoom)
167
+ expect { room.send "", "" }.to raise_error(HipChat::UnknownRoom)
171
168
  end
172
169
 
173
170
  it "but fails when we're not allowed to do so" do
@@ -175,11 +172,11 @@ describe "HipChat (API V2)" do
175
172
  OpenStruct.new(:code => 401)
176
173
  }
177
174
 
178
- lambda { room.send "", "" }.should raise_error(HipChat::Unauthorized)
175
+ expect { room.send "", "" }.to raise_error(HipChat::Unauthorized)
179
176
  end
180
177
 
181
178
  it "but fails if the username is more than 15 chars" do
182
- lambda { room.send "a very long username here", "a message" }.should raise_error(HipChat::UsernameTooLong)
179
+ expect { room.send "a very long username here", "a message" }.to raise_error(HipChat::UsernameTooLong)
183
180
  end
184
181
 
185
182
  it "but fails if we get an unknown response code" do
@@ -187,7 +184,54 @@ describe "HipChat (API V2)" do
187
184
  OpenStruct.new(:code => 403)
188
185
  }
189
186
 
190
- lambda { room.send "", "" }.
187
+ expect { room.send "", "" }.to raise_error(HipChat::UnknownResponseCode)
188
+ end
189
+ end
190
+
191
+ describe "#send_file" do
192
+ let(:file) do
193
+ Tempfile.new('foo').tap do |f|
194
+ f.write("the content")
195
+ f.rewind
196
+ end
197
+ end
198
+
199
+ after { file.unlink }
200
+
201
+ include_context "HipChatV2"
202
+
203
+ it "successfully" do
204
+ mock_successful_file_send 'Dude', 'Hello world', file
205
+
206
+ room.send_file("Dude", "Hello world", file).should be_truthy
207
+ end
208
+
209
+ it "but fails when the room doesn't exist" do
210
+ mock(HipChat::Room).post(anything, anything) {
211
+ OpenStruct.new(:code => 404)
212
+ }
213
+
214
+ lambda { room.send_file "", "", file }.should raise_error(HipChat::UnknownRoom)
215
+ end
216
+
217
+ it "but fails when we're not allowed to do so" do
218
+ mock(HipChat::Room).post(anything, anything) {
219
+ OpenStruct.new(:code => 401)
220
+ }
221
+
222
+ lambda { room.send_file "", "", file }.should raise_error(HipChat::Unauthorized)
223
+ end
224
+
225
+ it "but fails if the username is more than 15 chars" do
226
+ lambda { room.send_file "a very long username here", "a message", file }.should raise_error(HipChat::UsernameTooLong)
227
+ end
228
+
229
+ it "but fails if we get an unknown response code" do
230
+ mock(HipChat::Room).post(anything, anything) {
231
+ OpenStruct.new(:code => 403)
232
+ }
233
+
234
+ lambda { room.send_file "", "", file }.
191
235
  should raise_error(HipChat::UnknownResponseCode)
192
236
  end
193
237
  end
@@ -198,18 +242,18 @@ describe "HipChat (API V2)" do
198
242
  it "successfully with room name" do
199
243
  mock_successful_room_creation("A Room")
200
244
 
201
- subject.create_room("A Room").should be_true
245
+ expect(subject.create_room("A Room")).to be_truthy
202
246
  end
203
247
 
204
248
  it "successfully with custom parameters" do
205
249
  mock_successful_room_creation("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access => true})
206
250
 
207
- subject.create_room("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access =>true}).should be_true
251
+ expect(subject.create_room("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access =>true})).to be_truthy
208
252
  end
209
253
 
210
254
  it "but fail is name is longer then 50 char" do
211
- lambda { subject.create_room("A Room that is too long that I should fail right now") }.
212
- should raise_error(HipChat::RoomNameTooLong)
255
+ expect { subject.create_room("A Room that is too long that I should fail right now") }.
256
+ to raise_error(HipChat::RoomNameTooLong)
213
257
  end
214
258
  end
215
259
 
@@ -219,7 +263,7 @@ describe "HipChat (API V2)" do
219
263
  it "successfully" do
220
264
  mock_successful_get_room("Hipchat")
221
265
 
222
- room.get_room.should be_true
266
+ expect(room.get_room).to be_truthy
223
267
  end
224
268
 
225
269
  end
@@ -236,9 +280,9 @@ describe "HipChat (API V2)" do
236
280
  "owner" => { "id" => "12345" }
237
281
  }
238
282
  }
239
- it "successfully" do
283
+ it "successfully" do
240
284
  mock_successful_update_room("Hipchat", room_info)
241
- room.update_room(room_info).should be_true
285
+ expect(room.update_room(room_info)).to be_truthy
242
286
  end
243
287
  end
244
288
 
@@ -248,13 +292,13 @@ describe "HipChat (API V2)" do
248
292
  it "successfully with user_id" do
249
293
  mock_successful_invite()
250
294
 
251
- room.invite("1234").should be_true
295
+ expect(room.invite("1234")).to be_truthy
252
296
  end
253
297
 
254
298
  it "successfully with custom parameters" do
255
299
  mock_successful_invite({:user_id => "321", :reason => "A great reason"})
256
300
 
257
- room.invite("321", "A great reason").should be_true
301
+ expect(room.invite("321", "A great reason")).to be_truthy
258
302
  end
259
303
  end
260
304
 
@@ -263,7 +307,53 @@ describe "HipChat (API V2)" do
263
307
  it "successfully with a standard message" do
264
308
  mock_successful_user_send 'Equal bytes for everyone'
265
309
 
266
- user.send('Equal bytes for everyone').should be_true
310
+ expect(user.send('Equal bytes for everyone')).to be_truthy
311
+ end
312
+
313
+ it "but fails when the user doesn't exist" do
314
+ mock(HipChat::User).post(anything, anything) {
315
+ OpenStruct.new(:code => 404)
316
+ }
317
+
318
+ expect { user.send "" }.to raise_error(HipChat::UnknownUser)
319
+ end
320
+
321
+ it "but fails when we're not allowed to do so" do
322
+ mock(HipChat::User).post(anything, anything) {
323
+ OpenStruct.new(:code => 401)
324
+ }
325
+
326
+ expect { user.send "" }.to raise_error(HipChat::Unauthorized)
327
+ end
328
+ end
329
+
330
+ describe '#get_user_history' do
331
+ include_context 'HipChatV2'
332
+
333
+ it 'successfully returns history' do
334
+ mock_successful_user_history
335
+ user.history.should be_truthy
336
+ end
337
+
338
+ it 'has allowed params' do
339
+ expect(user.instance_variable_get(:@api).history_config[:allowed_params]).to eq([:'max-results', :timezone, :'not-before'])
340
+ end
341
+ end
342
+
343
+ describe "#send_file user" do
344
+ include_context "HipChatV2"
345
+
346
+ let(:file) do
347
+ Tempfile.new('foo').tap do |f|
348
+ f.write("the content")
349
+ f.rewind
350
+ end
351
+ end
352
+
353
+ it "successfully with a standard file" do
354
+ mock_successful_user_send_file 'Equal bytes for everyone', file
355
+
356
+ user.send_file('Equal bytes for everyone', file).should be_truthy
267
357
  end
268
358
 
269
359
  it "but fails when the user doesn't exist" do
@@ -271,7 +361,7 @@ describe "HipChat (API V2)" do
271
361
  OpenStruct.new(:code => 404)
272
362
  }
273
363
 
274
- lambda { user.send "" }.should raise_error(HipChat::UnknownUser)
364
+ lambda { user.send_file "", file }.should raise_error(HipChat::UnknownUser)
275
365
  end
276
366
 
277
367
  it "but fails when we're not allowed to do so" do
@@ -279,7 +369,7 @@ describe "HipChat (API V2)" do
279
369
  OpenStruct.new(:code => 401)
280
370
  }
281
371
 
282
- lambda { user.send "" }.should raise_error(HipChat::Unauthorized)
372
+ lambda { user.send_file "", file }.should raise_error(HipChat::Unauthorized)
283
373
  end
284
374
  end
285
375
  end