urbanairship 2.4.1 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/spec/spec_helper.rb DELETED
@@ -1,17 +0,0 @@
1
- require 'base64'
2
- require 'fakeweb'
3
-
4
- require File.join(File.dirname(__FILE__), '/../lib/urbanairship')
5
-
6
-
7
- RSpec.configure do |config|
8
- config.after(:each) do
9
- # reset configuration
10
- Urbanairship.application_key = nil
11
- Urbanairship.application_secret = nil
12
- Urbanairship.master_secret = nil
13
- Urbanairship.logger = nil
14
-
15
- FakeWeb.instance_variable_set("@last_request", nil)
16
- end
17
- end
@@ -1,1090 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for "an Urbanairship client" do
4
- before(:all) do
5
- FakeWeb.allow_net_connect = false
6
-
7
- # register_device
8
- FakeWeb.register_uri(:put, "https://my_app_key:my_app_secret@go.urbanairship.com/api/apids/new_device_token", :status => ["201", "Created"])
9
- FakeWeb.register_uri(:put, "https://my_app_key:my_app_secret@go.urbanairship.com/api/device_tokens/new_device_token", :status => ["201", "Created"])
10
- FakeWeb.register_uri(:put, "https://my_app_key:my_app_secret@go.urbanairship.com/api/device_tokens/existing_device_token", :status => ["200", "OK"])
11
- FakeWeb.register_uri(:put, "https://my_app_key:my_app_secret@go.urbanairship.com/api/device_tokens/device_token_one", :status => ["201", "Created"])
12
- FakeWeb.register_uri(:put, /bad_key\:my_app_secret\@go\.urbanairship\.com/, :status => ["401", "Unauthorized"])
13
-
14
- # unregister_device
15
- FakeWeb.register_uri(:delete, /my_app_key\:my_app_secret\@go\.urbanairship.com\/api\/apids\/.+/, :status => ["204", "No Content"])
16
- FakeWeb.register_uri(:delete, /my_app_key\:my_app_secret\@go\.urbanairship.com\/api\/device_tokens\/.+/, :status => ["204", "No Content"])
17
- FakeWeb.register_uri(:delete, /bad_key\:my_app_secret\@go\.urbanairship.com\/api\/device_tokens\/.+/, :status => ["401", "Unauthorized"])
18
-
19
- # device_info
20
- FakeWeb.register_uri(:get, /my_app_key\:my_app_secret\@go\.urbanairship.com\/api\/apids\/.+/, :status => ["200", "OK"], :body => "{\"active\":true,\"alias\":null}")
21
- FakeWeb.register_uri(:get, /my_app_key\:my_app_secret\@go\.urbanairship.com\/api\/device_tokens\/.+/, :status => ["200", "OK"], :body => "{\"active\":true,\"alias\":null}")
22
- FakeWeb.register_uri(:get, /bad_key\:my_app_secret\@go\.urbanairship.com\/api\/device_tokens\/.+/, :status => ["401", "Unauthorized"])
23
-
24
- # device_tokens
25
- FakeWeb.register_uri(:get, "https://my_app_key:my_master_secret@go.urbanairship.com/api/device_tokens/", :status => ["200", "OK"], :body => '{"device_tokens":[{"device_token": "0101F9929660BAD9FFF31A0B5FA32620FA988507DFFA52BD6C1C1F4783EDA2DB","active": false,"alias": null, "tags": []}], "device_tokens_count":50, "active_device_tokens_count":55}')
26
- FakeWeb.register_uri(:get, "https://my_app_key2:my_master_secret2@go.urbanairship.com/api/device_tokens/", :status => ["401", "OK"])
27
-
28
- # push
29
- FakeWeb.register_uri(:post, "https://my_app_key:my_master_secret@go.urbanairship.com/api/push/", :status => ["200", "OK"])
30
- FakeWeb.register_uri(:post, "https://my_app_key2:my_master_secret2@go.urbanairship.com/api/push/", :status => ["400", "Bad Request"])
31
- FakeWeb.register_uri(:post, /bad_key\:my_master_secret\@go\.urbanairship\.com/, :status => ["401", "Unauthorized"])
32
-
33
- # batch_push
34
- FakeWeb.register_uri(:post, "https://my_app_key:my_master_secret@go.urbanairship.com/api/push/batch/", :status => ["200", "OK"])
35
- FakeWeb.register_uri(:post, "https://my_app_key2:my_master_secret2@go.urbanairship.com/api/push/batch/", :status => ["400", "Bad Request"])
36
-
37
- # broadcast push
38
- FakeWeb.register_uri(:post, "https://my_app_key:my_master_secret@go.urbanairship.com/api/push/broadcast/", :status => ["200", "OK"])
39
- FakeWeb.register_uri(:post, "https://my_app_key2:my_master_secret2@go.urbanairship.com/api/push/broadcast/", :status => ["400", "Bad Request"])
40
-
41
- # delete_scheduled_push
42
- FakeWeb.register_uri(:delete, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/push\/scheduled\/[0-9]+/, :status => ["204", "No Content"])
43
- FakeWeb.register_uri(:delete, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/push\/scheduled\/alias\/.+/, :status => ["204", "No Content"])
44
- FakeWeb.register_uri(:delete, /bad_key\:my_master_secret\@go\.urbanairship.com\/api\/push\/scheduled\/[0-9]+/, :status => ["401", "Unauthorized"])
45
-
46
- # feedback
47
- FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/device_tokens\/feedback/, :status => ["200", "OK"], :body => "[{\"device_token\":\"token\",\"marked_inactive_on\":\"2010-10-14T19:15:13Z\",\"alias\":\"my_alias\"}]")
48
- FakeWeb.register_uri(:get, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/device_tokens\/feedback/, :status => ["500", "Internal Server Error"])
49
-
50
- #tags
51
- FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags/, :status => ["200", "OK"], :body => "[{\"tags\":[\"tag1\",\"tag2\"]}]")
52
- FakeWeb.register_uri(:get, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/tags/, :status => ["500", "Internal Server Error"])
53
-
54
- #add_tag
55
- FakeWeb.register_uri(:put, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags\/new_tag/, :status => ["200", "OK"])
56
- FakeWeb.register_uri(:put, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags\/existing_tag/, :status => ["201", "OK"])
57
- FakeWeb.register_uri(:put, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/tags\/a_tag/, :status => ["500", "Internal Server Error"])
58
-
59
- #remove_tag
60
- FakeWeb.register_uri(:delete, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags\/non_deleted_tag/, :status => ["204", "OK"])
61
- FakeWeb.register_uri(:delete, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags\/deleted_tag/, :status => ["404", "OK"])
62
- FakeWeb.register_uri(:delete, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/tags\/a_tag/, :status => ["500", "Internal Server Error"])
63
-
64
- #tags_for_device_tokens
65
- FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/device_tokens\/valid_device_token\/tags/, :status => ["200", "OK"], :body => "[{\"tags\":[\"tag1\",\"tag2\"]}]")
66
- FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/device_tokens\/invalid_device_token\/tags/, :status => ["404", "OK"])
67
- FakeWeb.register_uri(:get, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/device_tokens\/a_device_token\/tags/, :status => ["500", "Internal Server Error"])
68
-
69
- ##tag_device
70
- FakeWeb.register_uri(:post, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags\/new_tag/, :status => ["201", "OK"], :body => '{"device_tokens":{"add":["valid_device_token"]}')
71
- FakeWeb.register_uri(:post, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags\/existing_tag/, :status => ["200", "OK"], :body => '{"device_tokens":{"add":["valid_device_token"]}')
72
- FakeWeb.register_uri(:post, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/tags\/a_tag/, :status => ["500", "Internal Server Error"], :body => '{"device_tokens":{"add":["a_device_token"]}')
73
-
74
- #untag_device
75
- FakeWeb.register_uri(:post, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags\/existing_tag/, :status => ["204", "OK"], :body => '{"device_tokens":{"remove":["valid_device_token"]}')
76
- FakeWeb.register_uri(:post, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/tags\/non_existant_tag/, :status => ["404", "OK"], :body => '{"device_tokens":{"remove":["valid_device_token"]}')
77
- FakeWeb.register_uri(:post, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/tags\/a_tag/, :status => ["500", "Internal Server Error"], :body => '{"device_tokens":{"remove":["a_device_token"]}')
78
-
79
- #Get Segment
80
- FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments\/valid_id/, :status => ["200", "OK"], :body => '{"display_name":"Male in NY", "criteria":{"and":[{"tag":"male"}, {"tag":"in NY"}]}}')
81
- FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments\/not_found/, :status => ["404", "OK"])
82
- FakeWeb.register_uri(:get, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/segments\/invalid_segment/, :status => ["500", "Internal Server Error"])
83
-
84
- #Get List of Segments
85
- FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments$/, :status => ["200", "OK"], :body => '{"segments":[{"id":"abcd-efgh-ijkl", "display_name":"test1", "creation_date":1360950614201, "modification_date":1360950614201}, {"id": "mnop-qrst-uvwx", "display_name": "test2", "creation_date":1360950614202, "modification_date":1360950614202}]}')
86
- FakeWeb.register_uri(:get, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/segments$/, :status => ["500", "Internal Server Error"])
87
-
88
- #Create Segment
89
- FakeWeb.register_uri(:post, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments/, :status => ["201", "OK"])
90
- FakeWeb.register_uri(:post, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/segments/, :status => ["500", "Internal Server Error"])
91
-
92
- #Update Segment
93
- FakeWeb.register_uri(:put, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments\/valid_segment/, :status => ["200", "OK"])
94
- FakeWeb.register_uri(:put, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments\/invalid_segment/, :status => ["404", "OK"])
95
- FakeWeb.register_uri(:put, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/segments\/a_segment/, :status => ["500", "Internal Server Error"])
96
-
97
- #Delete Segment
98
- FakeWeb.register_uri(:delete, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments\/valid_segment/, :status => ["204", "OK"])
99
- FakeWeb.register_uri(:delete, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments\/invalid_segment/, :status => ["404", "OK"])
100
- FakeWeb.register_uri(:delete, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/segments\/a_segment/, :status => ["500", "Internal Server Error"])
101
-
102
- # push to segment
103
- FakeWeb.register_uri(:post, "https://my_app_key:my_master_secret@go.urbanairship.com/api/push/segments", :status => ["200", "OK"])
104
- FakeWeb.register_uri(:post, "https://my_app_key2:my_master_secret2@go.urbanairship.com/api/push/segments", :status => ["400", "Bad Request"])
105
- FakeWeb.register_uri(:post, /bad_key\:my_master_secret\@go\.urbanairship\.com/, :status => ["401", "Unauthorized"])
106
-
107
- #device_tokens_count
108
- FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/device_tokens\/count/, :status => ["200", "OK"], :body => "{\"device_tokens_count\":50, \"active_device_tokens_count\":55}")
109
- FakeWeb.register_uri(:get, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/device_tokens\/count/, :status => ["500", "Internal Server Error"])
110
- end
111
-
112
- describe "configuration" do
113
- it "enables you to configure the application key" do
114
- subject.application_key.should be_nil
115
- subject.application_key = "asdf1234"
116
- subject.application_key.should == "asdf1234"
117
- end
118
-
119
- it "enables you to configure the application secret" do
120
- subject.application_secret.should be_nil
121
- subject.application_secret = "asdf1234"
122
- subject.application_secret.should == "asdf1234"
123
- end
124
-
125
- it "enables you to configure the master secret" do
126
- subject.master_secret.should be_nil
127
- subject.master_secret = "asdf1234"
128
- subject.master_secret.should == "asdf1234"
129
- end
130
- end
131
-
132
- describe "::tags" do
133
- before(:each) do
134
- subject.application_key = "my_app_key"
135
- subject.master_secret = "my_master_secret"
136
- end
137
-
138
- it "raises an error if call is made without an app key and master secret configured" do
139
- subject.application_key = nil
140
- subject.master_secret = nil
141
-
142
- lambda {
143
- subject.tags
144
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
145
- end
146
-
147
- it "uses app key and secret to sign the request" do
148
- subject.tags
149
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
150
- end
151
-
152
- it "returns valid tags" do
153
- response = subject.tags
154
- response.first.should include("tags")
155
- response.first["tags"].should include("tag1")
156
- response.first["tags"].should include("tag2")
157
- end
158
-
159
- it "success? is false when the call doesn't return 200" do
160
- subject.application_key = "my_app_key2"
161
- subject.master_secret = "my_master_secret2"
162
- subject.tags.success?.should == false
163
- end
164
-
165
- end
166
-
167
- describe "::add_tag" do
168
- before(:each) do
169
- subject.application_key = "my_app_key"
170
- subject.master_secret = "my_master_secret"
171
- end
172
-
173
- it "raises an error if call is made without an app key and master secret configured" do
174
- subject.application_key = nil
175
- subject.master_secret = nil
176
-
177
- lambda {
178
- subject.add_tag('a_tag')
179
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
180
- end
181
-
182
- it "uses app key and secret to sign the request" do
183
- subject.add_tag('new_tag')
184
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
185
- end
186
-
187
- it "adds a new tag" do
188
- subject.add_tag('new_tag').success?.should == true
189
- subject.add_tag('new_tag').code.should == "200"
190
- end
191
-
192
- it "adds an exisiting tag" do
193
- subject.add_tag('existing_tag').success?.should == true
194
- subject.add_tag('existing_tag').code.should == "201"
195
- end
196
-
197
- it "success? is false when the call doesn't return 200 or 201" do
198
- subject.application_key = "my_app_key2"
199
- subject.master_secret = "my_master_secret2"
200
- subject.add_tag('a_tag').success?.should == false
201
- end
202
-
203
- it "sets the content-type to text/plain" do
204
- subject.add_tag('new_tag')
205
- FakeWeb.last_request['content-type'].should == "text/plain"
206
- end
207
- end
208
-
209
- describe "::remove_tag" do
210
- before(:each) do
211
- subject.application_key = "my_app_key"
212
- subject.master_secret = "my_master_secret"
213
- end
214
-
215
- it "raises an error if call is made without an app key and master secret configured" do
216
- subject.application_key = nil
217
- subject.master_secret = nil
218
-
219
- lambda {
220
- subject.remove_tag('a_tag')
221
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
222
- end
223
-
224
- it "uses app key and secret to sign the request" do
225
- subject.remove_tag('non_deleted_tag')
226
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
227
- end
228
-
229
- it "removes a tag that has not been removed yet" do
230
- subject.remove_tag('non_deleted_tag').success?.should == true
231
- subject.remove_tag('non_deleted_tag').code.should == "204"
232
- end
233
-
234
- it "attempts to remove an already deleted tag" do
235
- subject.remove_tag('deleted_tag').success?.should == false
236
- subject.remove_tag('deleted_tag').code.should == "404"
237
- end
238
-
239
- it "success? is false when the call doesn't return 204" do
240
- subject.application_key = "my_app_key2"
241
- subject.master_secret = "my_master_secret2"
242
- subject.add_tag('a_tag').success?.should == false
243
- end
244
- end
245
-
246
- describe "::tags_for_device" do
247
- before(:each) do
248
- subject.application_key = "my_app_key"
249
- subject.master_secret = "my_master_secret"
250
- end
251
-
252
- it "raises an error if call is made without an app key and master secret configured" do
253
- subject.application_key = nil
254
- subject.master_secret = nil
255
-
256
- lambda {
257
- subject.tags_for_device('a_device_token')
258
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
259
- end
260
-
261
- it "uses app key and secret to sign the request" do
262
- subject.tags_for_device('valid_device_token')
263
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
264
- end
265
-
266
- it "returns valid tags for a device" do
267
- response = subject.tags_for_device('valid_device_token')
268
- response.first.should include("tags")
269
- response.first["tags"].should include("tag1")
270
- response.first["tags"].should include("tag2")
271
- response.code.should == "200"
272
- end
273
-
274
- it "returns invalid response for device token that is not found or registered" do
275
- response = subject.tags_for_device('invalid_device_token')
276
- response.code.should == "404"
277
- end
278
-
279
- it "success? is false when the call doesn't return 200" do
280
- subject.application_key = "my_app_key2"
281
- subject.master_secret = "my_master_secret2"
282
- subject.tags_for_device('a_device_token').success?.should == false
283
- end
284
- end
285
-
286
- describe "::tag_device" do
287
- before(:each) do
288
- subject.application_key = "my_app_key"
289
- subject.master_secret = "my_master_secret"
290
- end
291
-
292
- it "raises an error if call is made without an app key and master secret configured" do
293
- subject.application_key = nil
294
- subject.master_secret = nil
295
-
296
- lambda {
297
- subject.tag_device({:device_token => 'a_device_token', :tag => 'a_tag'})
298
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
299
- end
300
-
301
- it "uses app key and secret to sign the request" do
302
- subject.tag_device({:device_token => 'valid_device_token', :tag => 'new_tag'})
303
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
304
- end
305
-
306
- it "adds a valid device token to tag" do
307
- response = subject.tag_device({:device_token => 'valid_device_token', :tag => 'new_tag'})
308
- response.code.should == "201"
309
- response.success?.should == true
310
- end
311
-
312
- it "adds a valid device token to an existing tag" do
313
- response = subject.tag_device({:device_token => 'valid_device_token', :tag => 'existing_tag'})
314
- response.code.should == "204"
315
- response.success?.should == true
316
- end
317
- end
318
-
319
- describe "::untag_device" do
320
- before(:each) do
321
- subject.application_key = "my_app_key"
322
- subject.master_secret = "my_master_secret"
323
- end
324
-
325
- it "raises an error if call is made without an app key and master secret configured" do
326
- subject.application_key = nil
327
- subject.master_secret = nil
328
-
329
- lambda {
330
- subject.untag_device({:device_token => 'a_device_token', :tag => 'a_tag'})
331
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
332
- end
333
-
334
- it "uses app key and secret to sign the request" do
335
- subject.untag_device({:device_token => 'valid_device_token', :tag => 'existing_tag'})
336
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
337
- end
338
-
339
- it "removes a valid device token from a tag" do
340
- response = subject.untag_device({:device_token => 'valid_device_token', :tag => 'existing_tag'})
341
- response.code.should == "204"
342
- response.success?.should == true
343
- end
344
-
345
- it "removes a device token from a tag that it is not associated with" do
346
- response = subject.untag_device({:device_token => 'valid_device_token', :tag => 'non_existant_tag'})
347
- response.code.should == "404"
348
- response.success?.should == false
349
- end
350
- end
351
-
352
- describe "::register_device" do
353
- before(:each) do
354
- @valid_params = {:alias => 'one'}
355
- subject.application_key = "my_app_key"
356
- subject.application_secret = "my_app_secret"
357
- end
358
-
359
- it "raises an error if call is made without an app key and secret configured" do
360
- subject.application_key = nil
361
- subject.application_secret = nil
362
-
363
- lambda {
364
- subject.register_device("asdf1234")
365
- }.should raise_error(RuntimeError, "Must configure application_key, application_secret before making this request.")
366
- end
367
-
368
- it "uses app key and secret to sign the request" do
369
- subject.register_device("new_device_token")
370
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_app_secret').chomp}"
371
- end
372
-
373
- it "takes and sends a device token" do
374
- subject.register_device("new_device_token")
375
- FakeWeb.last_request.path.should == "/api/device_tokens/new_device_token"
376
- end
377
-
378
- it "returns true when the device is registered for the first time" do
379
- subject.register_device("new_device_token").success?.should == true
380
- end
381
-
382
- it "returns true when the device is registered again" do
383
- subject.register_device("existing_device_token").success?.should == true
384
- end
385
-
386
- it "returns false when the authorization is invalid" do
387
- subject.application_key = "bad_key"
388
- subject.register_device("new_device_token").success?.should == false
389
- end
390
-
391
- it "accepts an alias" do
392
- subject.register_device("device_token_one", @valid_params).success?.should == true
393
- end
394
-
395
- it "adds alias to the JSON payload" do
396
- subject.register_device("device_token_one", @valid_params)
397
- request_json['alias'].should == "one"
398
- end
399
-
400
- it "converts alias param to string" do
401
- subject.register_device("device_token_one", :alias => 11)
402
- request_json['alias'].should be_a_kind_of String
403
- end
404
-
405
- it "uses the iOS interface by default" do
406
- subject.register_device("new_device_token")
407
- FakeWeb.last_request.path.should == "/api/device_tokens/new_device_token"
408
- end
409
-
410
- it "uses the android interface if 'provider' configuration option is set to :android Symbol" do
411
- subject.provider = :android
412
- subject.register_device("new_device_token")
413
- FakeWeb.last_request.path.should == "/api/apids/new_device_token"
414
- subject.provider = nil
415
- end
416
-
417
- it "uses the android interface if 'provider' configuration option is set to 'android' String" do
418
- subject.provider = 'android'
419
- subject.register_device("new_device_token")
420
- FakeWeb.last_request.path.should == "/api/apids/new_device_token"
421
- subject.provider = nil
422
- end
423
-
424
- it "uses the android interface if :provider Symbol key is passed an :android Symbol value" do
425
- subject.register_device("new_device_token", :provider => :android)
426
- FakeWeb.last_request.path.should == "/api/apids/new_device_token"
427
- end
428
-
429
- it "uses the android interface if 'provider' Symbol key is passed an 'android' String value" do
430
- subject.register_device("new_device_token", :provider => "android")
431
- FakeWeb.last_request.path.should == "/api/apids/new_device_token"
432
- end
433
-
434
- end
435
-
436
- describe "::unregister_device" do
437
- before(:each) do
438
- subject.application_key = "my_app_key"
439
- subject.application_secret = "my_app_secret"
440
- end
441
-
442
- it "raises an error if call is made without an app key and secret configured" do
443
- subject.application_key = nil
444
- subject.application_secret = nil
445
-
446
- lambda {
447
- subject.unregister_device("asdf1234")
448
- }.should raise_error(RuntimeError, "Must configure application_key, application_secret before making this request.")
449
- end
450
-
451
- it "uses app key and secret to sign the request" do
452
- subject.unregister_device("key_to_delete")
453
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_app_secret').chomp}"
454
- end
455
-
456
- it "sends the key that needs to be deleted" do
457
- subject.unregister_device("key_to_delete")
458
- FakeWeb.last_request.path.should == "/api/device_tokens/key_to_delete"
459
- end
460
-
461
- it "returns true when the device is successfully unregistered" do
462
- subject.unregister_device("key_to_delete").success?.should == true
463
- FakeWeb.last_request.body.should be_nil
464
- end
465
-
466
- it "returns false when the authorization is invalid" do
467
- subject.application_key = "bad_key"
468
- subject.unregister_device("key_to_delete").success?.should == false
469
- end
470
-
471
- it "uses the android interface if 'provider' configuration option is set to :android Symbol" do
472
- subject.provider = :android
473
- subject.unregister_device("new_device_token")
474
- FakeWeb.last_request.path.should == "/api/apids/new_device_token"
475
- subject.provider = nil
476
- end
477
-
478
- it "uses the android interface if 'provider' configuration option is set to 'android' String" do
479
- subject.provider = 'android'
480
- subject.unregister_device("new_device_token")
481
- FakeWeb.last_request.path.should == "/api/apids/new_device_token"
482
- subject.provider = nil
483
- end
484
-
485
- it "uses the android interface if :provider Symbol key is passed with an :android Symbol value" do
486
- subject.unregister_device("new_device_token", :provider => :android)
487
- FakeWeb.last_request.path.should == "/api/apids/new_device_token"
488
- end
489
-
490
- it "uses the android interface if :provider Symbol key is passed with an 'android' String value" do
491
- subject.unregister_device("new_device_token", :provider => "android")
492
- FakeWeb.last_request.path.should == "/api/apids/new_device_token"
493
- end
494
-
495
- end
496
-
497
- describe "::device_info" do
498
- before(:each) do
499
- @valid_params = {:alias => 'one'}
500
- subject.application_key = "my_app_key"
501
- subject.application_secret = "my_app_secret"
502
- end
503
-
504
- it "raises an error if call is made without an app key and secret configured" do
505
- subject.application_key = nil
506
- subject.application_secret = nil
507
-
508
- lambda {
509
- subject.device_info("asdf1234")
510
- }.should raise_error(RuntimeError, "Must configure application_key, application_secret before making this request.")
511
- end
512
-
513
- it "uses app key and secret to sign the request" do
514
- subject.device_info("device_token")
515
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_app_secret').chomp}"
516
- end
517
-
518
- it "takes and sends a device token" do
519
- subject.device_info("device_token")
520
- FakeWeb.last_request.path.should == "/api/device_tokens/device_token"
521
- end
522
-
523
- it "returns false when the authorization is invalid" do
524
- subject.application_key = "bad_key"
525
- subject.device_info("device_token").success?.should == false
526
- end
527
-
528
- it "uses the iOS interface by default" do
529
- subject.device_info("device_token")
530
- FakeWeb.last_request.path.should == "/api/device_tokens/device_token"
531
- end
532
-
533
- it "uses the android interface if 'provider' configuration option is set to :android Symbol" do
534
- subject.provider = :android
535
- subject.device_info("device_token")
536
- FakeWeb.last_request.path.should == "/api/apids/device_token"
537
- subject.provider = nil
538
- end
539
-
540
- it "uses the android interface if 'provider' configuration option is set to 'android' String" do
541
- subject.provider = 'android'
542
- subject.device_info("device_token")
543
- FakeWeb.last_request.path.should == "/api/apids/device_token"
544
- subject.provider = nil
545
- end
546
-
547
- it "uses the android interface if :provider Symbol key is passed an :android Symbol value" do
548
- subject.device_info("device_token", :provider => :android)
549
- FakeWeb.last_request.path.should == "/api/apids/device_token"
550
- end
551
-
552
- it "uses the android interface if 'provider' Symbol key is passed an 'android' String value" do
553
- subject.device_info("device_token", :provider => "android")
554
- FakeWeb.last_request.path.should == "/api/apids/device_token"
555
- end
556
-
557
- end
558
-
559
- describe "::delete_scheduled_push" do
560
- before(:each) do
561
- subject.application_key = "my_app_key"
562
- subject.master_secret = "my_master_secret"
563
- end
564
-
565
- it "raises an error if call is made without an app key and master secret configured" do
566
- subject.application_key = nil
567
- subject.master_secret = nil
568
-
569
- lambda {
570
- subject.delete_scheduled_push("123456789")
571
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
572
- end
573
-
574
- it "uses app key and secret to sign the request" do
575
- subject.delete_scheduled_push("123456789")
576
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
577
- end
578
-
579
- it "sends the key that needs to be deleted" do
580
- subject.delete_scheduled_push("123456789")
581
- FakeWeb.last_request.path.should == "/api/push/scheduled/123456789"
582
- end
583
-
584
- it "sends the key that needs to be deleted" do
585
- subject.delete_scheduled_push(123456789)
586
- FakeWeb.last_request.path.should == "/api/push/scheduled/123456789"
587
- end
588
-
589
- it "sends the alias that needs to be deleted" do
590
- subject.delete_scheduled_push(:alias => "alias_to_delete")
591
- FakeWeb.last_request.path.should == "/api/push/scheduled/alias/alias_to_delete"
592
- end
593
-
594
- it "returns true when the push notification is successfully deleted" do
595
- subject.delete_scheduled_push("123456789").success?.should == true
596
- FakeWeb.last_request.body.should be_nil
597
- end
598
-
599
- it "returns false when the authorization is invalid" do
600
- subject.application_key = "bad_key"
601
- subject.delete_scheduled_push("123456789").success?.should == false
602
- end
603
- end
604
-
605
- describe "::push" do
606
- before(:each) do
607
- @valid_params = {:device_tokens => ['device_token_one', 'device_token_two'], :aps => {:alert => 'foo'}}
608
- subject.application_key = "my_app_key"
609
- subject.master_secret = "my_master_secret"
610
- end
611
-
612
- it "raises an error if call is made without an app key and master secret configured" do
613
- subject.application_key = nil
614
- subject.master_secret = nil
615
-
616
- lambda {
617
- subject.push(@valid_params)
618
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
619
- end
620
-
621
- it "uses app key and secret to sign the request" do
622
- subject.push(@valid_params)
623
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
624
- end
625
-
626
- it "returns true when it successfully pushes a notification" do
627
- subject.push(@valid_params).success?.should == true
628
- end
629
-
630
- it "returns false when the authorization is invalid" do
631
- subject.application_key = "bad_key"
632
- subject.push(@valid_params).success?.should == false
633
- end
634
-
635
- it "uses v3 of the API when requested" do
636
- subject.push(@valid_params.merge(:version => 3)).success?.should == true
637
- FakeWeb.last_request["Accept"].should == "application/vnd.urbanairship+json; version=3;"
638
- end
639
-
640
- it "adds schedule_for to the JSON payload" do
641
- time = Time.parse("Oct 17th, 2010, 8:00 PM UTC")
642
- subject.push(@valid_params.merge(:schedule_for => [time]))
643
- request_json['schedule_for'].should == ['2010-10-17T20:00:00Z']
644
- end
645
-
646
- it "only attempts to format schedule_for if it is a time object" do
647
- subject.push(@valid_params.merge(:schedule_for => ["2010-10-10 09:09:09 UTC"]))
648
- request_json['schedule_for'].should == ['2010-10-10T09:09:09Z']
649
- end
650
-
651
- it "returns false if urbanairship responds with a non-200 response" do
652
- subject.application_key = "my_app_key2"
653
- subject.master_secret = "my_master_secret2"
654
- subject.push.success?.should == false
655
- end
656
-
657
- it "converts aliases to strings" do
658
- subject.push(@valid_params.merge(:aliases => [:one, 2]))
659
- request_json['aliases'].should == ['one', '2']
660
- end
661
- end
662
-
663
- describe "::push_to_segment" do
664
- before(:each) do
665
- @valid_params = {:segments => ['segment-id'], :aps => {:alert => 'foo'}}
666
- subject.application_key = "my_app_key"
667
- subject.master_secret = "my_master_secret"
668
- end
669
-
670
- it "raises an error if call is made without an app key and master secret configured" do
671
- subject.application_key = nil
672
- subject.master_secret = nil
673
-
674
- lambda {
675
- subject.push(@valid_params)
676
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
677
- end
678
-
679
- it "uses app key and secret to sign the request" do
680
- subject.push_to_segment(@valid_params)
681
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
682
- end
683
-
684
- it "returns true when it successfully pushes a notification" do
685
- subject.push_to_segment(@valid_params).success?.should == true
686
- end
687
-
688
- it "returns false when the authorization is invalid" do
689
- subject.application_key = "bad_key"
690
- subject.push_to_segment(@valid_params).success?.should == false
691
- end
692
-
693
- it "adds schedule_for to the JSON payload" do
694
- time = Time.parse("Oct 17th, 2010, 8:00 PM UTC")
695
- subject.push_to_segment(@valid_params.merge(:schedule_for => [time]))
696
- request_json['schedule_for'].should == ['2010-10-17T20:00:00Z']
697
- end
698
-
699
- it "only attempts to format schedule_for if it is a time object" do
700
- subject.push_to_segment(@valid_params.merge(:schedule_for => ["2010-10-10 09:09:09 UTC"]))
701
- request_json['schedule_for'].should == ['2010-10-10T09:09:09Z']
702
- end
703
-
704
- it "returns false if urbanairship responds with a non-200 response" do
705
- subject.application_key = "my_app_key2"
706
- subject.master_secret = "my_master_secret2"
707
- subject.push_to_segment.success?.should == false
708
- end
709
- end
710
-
711
- describe "::batch_push" do
712
- before(:each) do
713
- @valid_params = [
714
- {:device_tokens => ['device_token_one', 'device_token_two'], :aps => {:alert => 'foo'}},
715
- {:device_tokens => ['device_token_three', 'device_token_four'], :aps => {:alert => 'bar'}}
716
- ]
717
- subject.application_key = "my_app_key"
718
- subject.master_secret = "my_master_secret"
719
- end
720
-
721
- it "raises an error if call is made without an app key and master secret configured" do
722
- subject.application_key = nil
723
- subject.master_secret = nil
724
-
725
- lambda {
726
- subject.batch_push(@valid_params)
727
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
728
- end
729
-
730
- it "uses app key and secret to sign the request" do
731
- subject.batch_push(@valid_params)
732
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
733
- end
734
-
735
- it "returns true when it successfully pushes a notification" do
736
- subject.batch_push(@valid_params).success?.should == true
737
- end
738
-
739
- it "returns false when the authorization is invalid" do
740
- subject.application_key = "bad_key"
741
- subject.batch_push(@valid_params).success?.should == false
742
- end
743
-
744
- it "adds schedule_for to the JSON payload" do
745
- time = Time.parse("Oct 17th, 2010, 8:00 PM UTC")
746
- @valid_params[0].merge!(:schedule_for => [time])
747
- subject.batch_push(@valid_params)
748
- request_json[0]['schedule_for'].should == ['2010-10-17T20:00:00Z']
749
- end
750
-
751
- it "accepts strings as schedule_for values" do
752
- @valid_params[0].merge!(:schedule_for => ["2010-10-10 09:09:09 UTC"])
753
- subject.batch_push(@valid_params)
754
- request_json[0]['schedule_for'].should == ['2010-10-10T09:09:09Z']
755
- end
756
-
757
- it "returns false if urbanairship responds with a non-200 response" do
758
- subject.application_key = "my_app_key2"
759
- subject.master_secret = "my_master_secret2"
760
- subject.batch_push.success?.should == false
761
- end
762
- end
763
-
764
- describe "::broadcast_push" do
765
- before(:each) do
766
- @valid_params = {:aps => {:alert => 'foo'}}
767
- subject.application_key = "my_app_key"
768
- subject.master_secret = "my_master_secret"
769
- end
770
-
771
- it "raises an error if call is made without an app key and master secret configured" do
772
- subject.application_key = nil
773
- subject.master_secret = nil
774
-
775
- lambda {
776
- subject.broadcast_push(@valid_params)
777
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
778
- end
779
-
780
- it "uses app key and secret to sign the request" do
781
- subject.broadcast_push(@valid_params)
782
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
783
- end
784
-
785
- it "returns true when it successfully pushes a notification" do
786
- subject.broadcast_push(@valid_params).success?.should == true
787
- end
788
-
789
- it "returns false when the authorization is invalid" do
790
- subject.application_key = "bad_key"
791
- subject.broadcast_push(@valid_params).success?.should == false
792
- end
793
-
794
- it "adds schedule_for to the JSON payload" do
795
- time = Time.parse("Oct 17th, 2010, 8:00 PM UTC")
796
- @valid_params[:schedule_for] = [time]
797
- subject.broadcast_push(@valid_params)
798
- request_json['schedule_for'].should == ['2010-10-17T20:00:00Z']
799
- end
800
-
801
- it "accepts strings as schedule_for values" do
802
- @valid_params[:schedule_for] = ["2010-10-10 09:09:09 UTC"]
803
- subject.broadcast_push(@valid_params)
804
- request_json['schedule_for'].should == ['2010-10-10T09:09:09Z']
805
- end
806
-
807
- it "returns false if urbanairship responds with a non-200 response" do
808
- subject.application_key = "my_app_key2"
809
- subject.master_secret = "my_master_secret2"
810
- subject.broadcast_push.success?.should == false
811
- end
812
- end
813
-
814
- describe "::feedback" do
815
- before(:each) do
816
- subject.application_key = "my_app_key"
817
- subject.master_secret = "my_master_secret"
818
- end
819
-
820
- it "raises an error if call is made without an app key and master secret configured" do
821
- subject.application_key = nil
822
- subject.master_secret = nil
823
-
824
- lambda {
825
- subject.feedback(Time.now)
826
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
827
- end
828
-
829
- it "uses app key and secret to sign the request" do
830
- subject.feedback(Time.now)
831
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
832
- end
833
-
834
- it "encodes the time argument in UTC, ISO 8601 format" do
835
- time = Time.parse("October 10, 2010, 8:00pm")
836
- formatted_time = time.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
837
- subject.feedback(time)
838
- FakeWeb.last_request.path.should include(formatted_time)
839
- end
840
-
841
- it "accepts a string as the time argument" do
842
- subject.feedback("Oct 07, 2010 8:00AM UTC")
843
- FakeWeb.last_request.path.should include("2010-10-07T08:00:00Z")
844
- end
845
-
846
- it "returns an array of responses from the feedback API" do
847
- response = subject.feedback(Time.now)
848
- response[0].should include("device_token")
849
- response[0].should include("marked_inactive_on")
850
- response[0].should include("alias")
851
- end
852
-
853
- it "success? is false when the call doesn't return 200" do
854
- subject.application_key = "my_app_key2"
855
- subject.master_secret = "my_master_secret2"
856
- subject.feedback(Time.now).success?.should == false
857
- end
858
- end
859
-
860
- describe "::device_tokens" do
861
-
862
- before(:each) do
863
- subject.application_key = "my_app_key"
864
- subject.master_secret = "my_master_secret"
865
- end
866
-
867
- it "raises an error if call is made without an app key and master secret configured" do
868
- subject.application_key = nil
869
- subject.master_secret = nil
870
-
871
- lambda {
872
- subject.device_tokens_count
873
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
874
- end
875
-
876
- it "uses app key and secret to sign the request" do
877
- subject.device_tokens_count
878
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
879
- end
880
-
881
- it "returns a hash as response from the Device Token List API with an array of device tokens" do
882
- response = subject.device_tokens
883
- response["device_tokens"].class.should == Array
884
- response["device_tokens_count"].should == 50
885
- response["active_device_tokens_count"].should == 55
886
- end
887
-
888
- it "success? is false when the call doesn't return 200" do
889
- subject.application_key = "my_app_key2"
890
- subject.master_secret = "my_master_secret2"
891
- subject.device_tokens.success?.should == false
892
- end
893
-
894
- end
895
-
896
- describe "::device_tokens_count" do
897
-
898
- before(:each) do
899
- subject.application_key = "my_app_key"
900
- subject.master_secret = "my_master_secret"
901
- end
902
-
903
- it "raises an error if call is made without an app key and master secret configured" do
904
- subject.application_key = nil
905
- subject.master_secret = nil
906
-
907
- lambda {
908
- subject.device_tokens_count
909
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
910
- end
911
-
912
- it "uses app key and secret to sign the request" do
913
- subject.device_tokens_count
914
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
915
- end
916
-
917
- it "returns a hash as response from the Device Token List API" do
918
- response = subject.device_tokens_count
919
- response["device_tokens_count"].should == 50
920
- response["active_device_tokens_count"].should == 55
921
- end
922
-
923
- it "success? is false when the call doesn't return 200" do
924
- subject.application_key = "my_app_key2"
925
- subject.master_secret = "my_master_secret2"
926
- subject.device_tokens_count.success?.should == false
927
- end
928
-
929
- end
930
-
931
- describe "::segments" do
932
- before(:each) do
933
- subject.application_key = "my_app_key"
934
- subject.master_secret = "my_master_secret"
935
- @valid_segment = {:display_name => "Test Male NY", :criteria => {:and => [ {:tag => "male"}, {:tag => "NY"}]} }
936
- end
937
-
938
- it "raises an error if call is made without an app key and master secret configured" do
939
- subject.application_key = nil
940
- subject.master_secret = nil
941
-
942
- lambda {
943
- subject.segments
944
- }.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
945
- end
946
-
947
- it "uses app key and secret to sign the request" do
948
- subject.segments
949
- FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
950
- end
951
-
952
- it "returns valid segments" do
953
- response = subject.segments
954
- response.first.should include("segments")
955
- response["segments"].each do |s|
956
- ["id", "display_name", "creation_date", "modification_date"].each do |k|
957
- s.should include(k)
958
- end
959
- end
960
- end
961
-
962
- it "can create a valid segment" do
963
- response = subject.create_segment(@valid_segment)
964
- response.code.should == "201"
965
- end
966
-
967
- it "can get a segment given its id" do
968
- response = subject.segment("valid_id")
969
- response.code.should == "200"
970
- response.should include("display_name")
971
- response.should include("criteria")
972
- end
973
-
974
- it "returns not found if invalid segment id is given" do
975
- response = subject.segment("not_found")
976
- response.code.should == "404"
977
- end
978
-
979
- it "can update a segment given a valid id" do
980
- response = subject.update_segment("valid_segment", @valid_segment)
981
- response.code.should == "200"
982
- end
983
-
984
- it "cant update a segment when given an invalid id" do
985
- response = subject.update_segment("invalid_segment", @valid_segment)
986
- response.code.should == "404"
987
- end
988
-
989
- it "can delete a segment given a valid id" do
990
- response = subject.delete_segment("valid_segment")
991
- response.code.should == "204"
992
- end
993
-
994
- it "cant delete a segment given an invalid id" do
995
- response = subject.delete_segment("invalid_segment")
996
- response.code.should == "404"
997
- end
998
-
999
- it "success? is false when the call doesn't return 200" do
1000
- subject.application_key = "my_app_key2"
1001
- subject.master_secret = "my_master_secret2"
1002
- subject.segments.success?.should == false
1003
- end
1004
-
1005
- end
1006
-
1007
-
1008
- describe "logging" do
1009
-
1010
- before(:each) do
1011
- @logger = mock("logger", :info => true)
1012
- subject.application_key = "my_app_key"
1013
- subject.application_secret = "my_app_secret"
1014
- subject.master_secret = "my_master_secret"
1015
- subject.logger = @logger
1016
- end
1017
-
1018
- it "logs request and response information when registering a device" do
1019
- @logger.should_receive(:info).with(/\/api\/device_tokens\/new_device_token/)
1020
- subject.register_device('new_device_token')
1021
- end
1022
-
1023
- it "logs request and response information when sending push notifications" do
1024
- @logger.should_receive(:info).with(/\/api\/push/)
1025
- subject.push(:device_tokens => ["device_token"], :aps => {:alert => "foo"})
1026
- end
1027
-
1028
- it "logs request and response information when sending batch push notifications" do
1029
- @logger.should_receive(:info).with(/\/api\/push\/batch/)
1030
- subject.batch_push([:device_tokens => ["device_token"], :aps => {:alert => "foo"}])
1031
- end
1032
-
1033
- it "logs request and response information when sending feedback requests" do
1034
- @logger.should_receive(:info).with(/\/api\/device_tokens\/feedback/)
1035
- subject.feedback(Time.now)
1036
- end
1037
-
1038
- it "flushes the logger buffer if it's an ActiveSupport::BufferedLogger (Default Rails logger)" do
1039
- @logger.stub(:flush).and_return("message in the buffer\n")
1040
- @logger.should_receive(:flush)
1041
- subject.feedback(Time.now)
1042
- end
1043
- end
1044
-
1045
- describe "request timeout" do
1046
- before(:each) do
1047
- @logger = mock("logger", :info => true)
1048
- subject.application_key = "my_app_key"
1049
- subject.application_secret = "my_app_secret"
1050
- subject.master_secret = "my_master_secret"
1051
- subject.logger = @logger
1052
- end
1053
-
1054
- it "does not attempt to log if logger is not set" do
1055
- Urbanairship::Timer.should_receive(:timeout).with(5.0).and_raise(Timeout::Error)
1056
- subject.logger = nil
1057
-
1058
- lambda {
1059
- subject.register_device('new_device_token')
1060
- }.should_not raise_exception(NoMethodError)
1061
- end
1062
-
1063
- it "uses a default request_timeout value of five seconds" do
1064
- Urbanairship::Timer.should_receive(:timeout).with(5.0).and_raise(Timeout::Error)
1065
- @logger.should_receive(:error).with(/Urbanairship request timed out/)
1066
-
1067
- subject.register_device('new_device_token')
1068
- end
1069
-
1070
- it "accepts a configured request_timeout value" do
1071
- Urbanairship::Timer.should_receive(:timeout).with(1.23).and_raise(Timeout::Error)
1072
- @logger.should_receive(:error).with(/Urbanairship request timed out/)
1073
-
1074
- subject.request_timeout = 1.23
1075
- subject.register_device('new_device_token')
1076
- end
1077
- end
1078
- end
1079
-
1080
- describe Urbanairship do
1081
- it_should_behave_like "an Urbanairship client"
1082
- end
1083
-
1084
- describe Urbanairship::Client do
1085
- it_should_behave_like "an Urbanairship client"
1086
- end
1087
-
1088
- def request_json
1089
- JSON.parse FakeWeb.last_request.body
1090
- end