one_signal 0.0.6
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 +7 -0
- data/.gitignore +37 -0
- data/Gemfile +3 -0
- data/LICENSE +675 -0
- data/Rakefile +9 -0
- data/example.rb +103 -0
- data/lib/one_signal/errors/no_recipients_error.rb +4 -0
- data/lib/one_signal/errors/one_signal_error.rb +17 -0
- data/lib/one_signal/notification.rb +51 -0
- data/lib/one_signal/one_signal.rb +86 -0
- data/lib/one_signal/player.rb +51 -0
- data/lib/one_signal/version.rb +3 -0
- data/lib/one_signal.rb +8 -0
- data/one_signal.gemspec +18 -0
- data/test/helper.rb +24 -0
- data/test/notification_test.rb +43 -0
- data/test/one_signal_test.rb +123 -0
- data/test/player_test.rb +56 -0
- metadata +116 -0
data/Rakefile
ADDED
data/example.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'one_signal'
|
2
|
+
require 'dotenv'
|
3
|
+
|
4
|
+
Dotenv.load
|
5
|
+
api_key = ENV['ONESIGNAL_API_KEY']
|
6
|
+
@app_id = ENV['ONESIGNAL_APP_ID']
|
7
|
+
@device_token = "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc3"
|
8
|
+
|
9
|
+
OneSignal::OneSignal.api_key = api_key
|
10
|
+
|
11
|
+
def create_player
|
12
|
+
params = {
|
13
|
+
app_id: @app_id,
|
14
|
+
device_type: 0,
|
15
|
+
identifier: @device_token,
|
16
|
+
tags: {
|
17
|
+
user_id: 'test2',
|
18
|
+
device_type: 'chrome'
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
begin
|
23
|
+
response = OneSignal::Player.create(params: params)
|
24
|
+
puts "code : #{response.code}"
|
25
|
+
puts "message : #{response.message}"
|
26
|
+
puts "body : #{response.body}"
|
27
|
+
puts "id : #{JSON.parse(response.body).class}"
|
28
|
+
return JSON.parse(response.body)["id"]
|
29
|
+
rescue OneSignal::OneSignalError => e
|
30
|
+
puts "-- message : #{e.message}"
|
31
|
+
puts "-- status : #{e.http_status}"
|
32
|
+
puts "-- body : #{e.http_body}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def update_player(id:)
|
37
|
+
params = {
|
38
|
+
app_id: @app_id,
|
39
|
+
device_type: 0,
|
40
|
+
identifier: @device_token,
|
41
|
+
tags: {
|
42
|
+
user_id: 'test2updated',
|
43
|
+
device_type: 'chrome'
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
begin
|
48
|
+
response = OneSignal::Player.update(id: id, params: params)
|
49
|
+
puts "code : #{response.code}"
|
50
|
+
puts "message : #{response.message}"
|
51
|
+
puts "body : #{response.body}"
|
52
|
+
puts "id : #{JSON.parse(response.body).class}"
|
53
|
+
rescue OneSignal::OneSignalError => e
|
54
|
+
puts "-- message : #{e.message}"
|
55
|
+
puts "-- status : #{e.http_status}"
|
56
|
+
puts "-- body : #{e.http_body}"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def notify
|
61
|
+
params = {
|
62
|
+
app_id: @app_id,
|
63
|
+
contents: {
|
64
|
+
en: 'hey buddy'
|
65
|
+
},
|
66
|
+
ios_badgeType: 'None',
|
67
|
+
ios_badgeCount: 1,
|
68
|
+
tags: [
|
69
|
+
{
|
70
|
+
key: 'user_id',
|
71
|
+
relation: '=',
|
72
|
+
value: "unknown"
|
73
|
+
},
|
74
|
+
{ operator: 'AND' },
|
75
|
+
{
|
76
|
+
key: 'device_type',
|
77
|
+
relation: '=',
|
78
|
+
value: 'ios'
|
79
|
+
}
|
80
|
+
]
|
81
|
+
}
|
82
|
+
|
83
|
+
begin
|
84
|
+
response = OneSignal::Notification.create(params: params)
|
85
|
+
puts "code : #{response.code}"
|
86
|
+
puts "message : #{response.message}"
|
87
|
+
puts "body : #{response.body}"
|
88
|
+
rescue OneSignal::NoRecipientsError => e
|
89
|
+
puts "--- NoRecipientsError: #{e.inspect}"
|
90
|
+
puts "-- message : #{e.message}"
|
91
|
+
puts "-- status : #{e.http_status}"
|
92
|
+
puts "-- body : #{e.http_body}"
|
93
|
+
rescue OneSignal::OneSignalError => e
|
94
|
+
puts "--- OneSignalError : #{e.inspect}"
|
95
|
+
puts "-- message : #{e.message}"
|
96
|
+
puts "-- status : #{e.http_status}"
|
97
|
+
puts "-- body : #{e.http_body}"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# player_id = create_player
|
102
|
+
# update_player(id: player_id)
|
103
|
+
notify
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module OneSignal
|
2
|
+
class OneSignalError < StandardError
|
3
|
+
attr_reader :message
|
4
|
+
attr_reader :http_status
|
5
|
+
attr_reader :http_body
|
6
|
+
|
7
|
+
def initialize(message: nil, http_status: nil, http_body: nil)
|
8
|
+
@message = message
|
9
|
+
@http_status = http_status
|
10
|
+
@http_body = http_body
|
11
|
+
@message += " - http status : #{@http_status}" unless @http_status.nil?
|
12
|
+
@message += " - http body : #{@http_body}" unless @http_body.nil?
|
13
|
+
super(@message)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module OneSignal
|
2
|
+
|
3
|
+
class Notification < OneSignal
|
4
|
+
|
5
|
+
def self.create(params: {})
|
6
|
+
uri_string = @@base_uri
|
7
|
+
uri_string += "/notifications"
|
8
|
+
uri = URI.parse(uri_string)
|
9
|
+
|
10
|
+
response = send_post_request(uri: uri, body: params)
|
11
|
+
|
12
|
+
if response.code != '200'
|
13
|
+
handle_error(uri: uri, params: params, response: response)
|
14
|
+
end
|
15
|
+
|
16
|
+
return response
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def self.handle_error(uri:, params:, response:)
|
22
|
+
msg = "Create Notification error - uri: #{uri} params: #{params}"
|
23
|
+
if is_no_recipients_error(response: response)
|
24
|
+
raise NoRecipientsError.new(message: msg,
|
25
|
+
http_status: response.code,
|
26
|
+
http_body: response.body)
|
27
|
+
else
|
28
|
+
raise OneSignalError.new(message: msg,
|
29
|
+
http_status: response.code,
|
30
|
+
http_body: response.body)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.is_no_recipients_error(response:)
|
35
|
+
return false if response.code != '400' ||
|
36
|
+
response.body.nil?
|
37
|
+
|
38
|
+
body = JSON.parse(response.body)
|
39
|
+
return false unless body['errors'] &&
|
40
|
+
body['errors'].is_a?(Array) &&
|
41
|
+
!body['errors'].empty?
|
42
|
+
|
43
|
+
expected_error_msg = "error: 0 recipients."
|
44
|
+
return false unless body['errors'][0].strip.downcase == expected_error_msg
|
45
|
+
|
46
|
+
return true
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module OneSignal
|
6
|
+
|
7
|
+
class OneSignal
|
8
|
+
@@base_uri = "https://onesignal.com/api/v1"
|
9
|
+
@@api_key = nil
|
10
|
+
@@open_timeout = 30
|
11
|
+
@@read_timeout = 30
|
12
|
+
|
13
|
+
def self.api_key=(new_api_key)
|
14
|
+
@@api_key = new_api_key
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.api_key
|
18
|
+
@@api_key
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.open_timeout=(new_timeout)
|
22
|
+
@@open_timeout = new_timeout
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.open_timeout
|
26
|
+
@@open_timeout
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.read_timeout=(new_timeout)
|
30
|
+
@@read_timeout = new_timeout
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.read_timeout
|
34
|
+
@@read_timeout
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.http_object(uri:)
|
38
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
39
|
+
http.use_ssl = uri.scheme == 'https'
|
40
|
+
http.open_timeout = @@open_timeout
|
41
|
+
http.read_timeout = @@read_timeout
|
42
|
+
return http
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.send_post_request(uri:, body:)
|
46
|
+
ensure_api_key
|
47
|
+
|
48
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
49
|
+
request.body = body.to_json
|
50
|
+
request = request_with_headers(request: request)
|
51
|
+
|
52
|
+
http = http_object(uri: uri)
|
53
|
+
|
54
|
+
response = http.request(request)
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.send_put_request(uri:, body:)
|
58
|
+
ensure_api_key
|
59
|
+
|
60
|
+
request = Net::HTTP::Put.new(uri.request_uri)
|
61
|
+
request.body = body.to_json
|
62
|
+
request = request_with_headers(request: request)
|
63
|
+
|
64
|
+
http = http_object(uri: uri)
|
65
|
+
|
66
|
+
response = http.request(request)
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def self.ensure_api_key
|
72
|
+
unless @@api_key && !@@api_key.strip.empty?
|
73
|
+
msg = "No API key provided"
|
74
|
+
raise OneSignalError.new(message: msg)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.request_with_headers(request:)
|
79
|
+
request.add_field("Content-Type", "application/json")
|
80
|
+
request.add_field("Authorization", "Basic #{@@api_key}")
|
81
|
+
return request
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module OneSignal
|
2
|
+
|
3
|
+
class Player < OneSignal
|
4
|
+
|
5
|
+
def self.create(params: {})
|
6
|
+
uri_string = @@base_uri
|
7
|
+
uri_string += "/players"
|
8
|
+
uri = URI.parse(uri_string)
|
9
|
+
|
10
|
+
response = send_post_request(uri: uri, body: params)
|
11
|
+
|
12
|
+
ensure_http_status(response: response,
|
13
|
+
status: '200',
|
14
|
+
method_name: 'Create',
|
15
|
+
uri: uri,
|
16
|
+
params: params)
|
17
|
+
|
18
|
+
return response
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.update(id:, params: {})
|
22
|
+
uri_string = @@base_uri
|
23
|
+
uri_string += "/players"
|
24
|
+
uri_string += "/#{id}"
|
25
|
+
uri = URI.parse(uri_string)
|
26
|
+
|
27
|
+
response = send_put_request(uri: uri, body: params)
|
28
|
+
|
29
|
+
ensure_http_status(response: response,
|
30
|
+
status: '200',
|
31
|
+
method_name: 'Update',
|
32
|
+
uri: uri,
|
33
|
+
params: params)
|
34
|
+
|
35
|
+
return response
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def self.ensure_http_status(response:, status:, method_name:, uri:, params:)
|
41
|
+
if response.code != status.to_s
|
42
|
+
msg = "#{method_name} Player error - uri: #{uri} params: #{params}"
|
43
|
+
raise OneSignalError.new(message: msg,
|
44
|
+
http_status: response.code,
|
45
|
+
http_body: response.body)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/lib/one_signal.rb
ADDED
data/one_signal.gemspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path('lib/one_signal/version')
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.add_runtime_dependency 'json', '~> 1.8'
|
5
|
+
s.add_development_dependency 'rake', '~> 10.4'
|
6
|
+
s.add_development_dependency 'mocha', '~> 1.1'
|
7
|
+
s.add_development_dependency 'dotenv', '~> 2.0'
|
8
|
+
s.name = 'one_signal'
|
9
|
+
s.version = OneSignal::VERSION
|
10
|
+
s.summary = "A library which implements the OneSignal API"
|
11
|
+
s.description = "A library which implements the OneSignal API."
|
12
|
+
s.authors = ["Thomas Balthazar"]
|
13
|
+
s.email = 'thomas@balthazar.info'
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.homepage = 'https://github.com/tbalthazar/onesignal-ruby'
|
17
|
+
s.license = 'MIT'
|
18
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'mocha/mini_test'
|
4
|
+
require 'one_signal'
|
5
|
+
|
6
|
+
def mock_response_ok
|
7
|
+
response = mock()
|
8
|
+
response.expects(:code).returns("200")
|
9
|
+
return response
|
10
|
+
end
|
11
|
+
|
12
|
+
def mock_response_ko
|
13
|
+
response = mock()
|
14
|
+
response.expects(:code).returns("400").at_least_once
|
15
|
+
response.expects(:body).at_least_once
|
16
|
+
return response
|
17
|
+
end
|
18
|
+
|
19
|
+
def mock_response_no_recipients
|
20
|
+
response = mock()
|
21
|
+
response.expects(:code).returns("400").at_least_once
|
22
|
+
response.expects(:body).returns('{"errors":[" Error: 0 Recipients."]}').at_least_once
|
23
|
+
return response
|
24
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class NotificationTest < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@uri = URI.parse("https://onesignal.com/api/v1/notifications")
|
7
|
+
@create_params = {
|
8
|
+
foo: "bar",
|
9
|
+
widget: "acme"
|
10
|
+
}
|
11
|
+
@api_key = "fake api key"
|
12
|
+
OneSignal::OneSignal.api_key = @api_key
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_create_raises_onesignal_error
|
16
|
+
response = mock_response_ko
|
17
|
+
OneSignal::OneSignal.expects(:send_post_request)
|
18
|
+
.with(uri: @uri, body: @create_params)
|
19
|
+
.returns(response)
|
20
|
+
assert_raises OneSignal::OneSignalError do
|
21
|
+
OneSignal::Notification.create(params: @create_params)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_create_raises_no_recipients_error
|
26
|
+
response = mock_response_no_recipients
|
27
|
+
OneSignal::OneSignal.expects(:send_post_request)
|
28
|
+
.with(uri: @uri, body: @create_params)
|
29
|
+
.returns(response)
|
30
|
+
assert_raises OneSignal::NoRecipientsError do
|
31
|
+
OneSignal::Notification.create(params: @create_params)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_create
|
36
|
+
response = mock_response_ok
|
37
|
+
OneSignal::OneSignal.expects(:send_post_request)
|
38
|
+
.with(uri: @uri, body: @create_params)
|
39
|
+
.returns(response)
|
40
|
+
assert_equal response, OneSignal::Notification.create(params: @create_params)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class OneSignalTest < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@api_key = "fake_api_123"
|
7
|
+
@body = "fake body"
|
8
|
+
@uri = URI.parse("https://www.example.com/foo/bar")
|
9
|
+
@default_timeout = 30
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
OneSignal::OneSignal.api_key = nil
|
14
|
+
OneSignal::OneSignal.open_timeout = @default_timeout
|
15
|
+
OneSignal::OneSignal.read_timeout = @default_timeout
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_mock_request
|
19
|
+
request = mock()
|
20
|
+
request.expects(:body=).with(@body.to_json)
|
21
|
+
request.expects(:add_field).with("Content-Type", "application/json")
|
22
|
+
request.expects(:add_field).with("Authorization", "Basic #{@api_key}")
|
23
|
+
return request
|
24
|
+
end
|
25
|
+
|
26
|
+
def build_mock_http_object
|
27
|
+
use_ssl = @uri.scheme == 'https'
|
28
|
+
http = mock()
|
29
|
+
http.expects(:use_ssl=).with(use_ssl)
|
30
|
+
http.expects(:open_timeout=)
|
31
|
+
http.expects(:read_timeout=)
|
32
|
+
return http
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_building_request_with_nil_api_key_raises_error
|
36
|
+
OneSignal::OneSignal.api_key = nil
|
37
|
+
|
38
|
+
assert_raises OneSignal::OneSignalError do
|
39
|
+
OneSignal::OneSignal.send_post_request(uri: @uri, body: @body)
|
40
|
+
end
|
41
|
+
assert_raises OneSignal::OneSignalError do
|
42
|
+
OneSignal::OneSignal.send_put_request(uri: @uri, body: @body)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_building_request_with_empty_api_key_raises_error
|
47
|
+
OneSignal::OneSignal.api_key = " "
|
48
|
+
|
49
|
+
assert_raises OneSignal::OneSignalError do
|
50
|
+
OneSignal::OneSignal.send_post_request(uri: @uri, body: @body)
|
51
|
+
end
|
52
|
+
assert_raises OneSignal::OneSignalError do
|
53
|
+
OneSignal::OneSignal.send_put_request(uri: @uri, body: @body)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_default_timeout
|
58
|
+
assert_equal @default_timeout, OneSignal::OneSignal.open_timeout
|
59
|
+
assert_equal @default_timeout, OneSignal::OneSignal.read_timeout
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_setting_timeout
|
63
|
+
open_timeout = OneSignal::OneSignal.open_timeout + 1
|
64
|
+
read_timeout = OneSignal::OneSignal.read_timeout + 2
|
65
|
+
OneSignal::OneSignal.open_timeout = open_timeout
|
66
|
+
OneSignal::OneSignal.read_timeout = read_timeout
|
67
|
+
|
68
|
+
assert_equal open_timeout, OneSignal::OneSignal.open_timeout
|
69
|
+
assert_equal read_timeout, OneSignal::OneSignal.read_timeout
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_http_object
|
73
|
+
# test default timeout values
|
74
|
+
http_object = OneSignal::OneSignal.http_object(uri: @uri)
|
75
|
+
assert_equal @default_timeout, http_object.open_timeout
|
76
|
+
assert_equal @default_timeout, http_object.read_timeout
|
77
|
+
|
78
|
+
# change timeout values
|
79
|
+
open_timeout = OneSignal::OneSignal.open_timeout + 1
|
80
|
+
read_timeout = OneSignal::OneSignal.read_timeout + 2
|
81
|
+
OneSignal::OneSignal.open_timeout = open_timeout
|
82
|
+
OneSignal::OneSignal.read_timeout = read_timeout
|
83
|
+
http_object = OneSignal::OneSignal.http_object(uri: @uri)
|
84
|
+
|
85
|
+
assert_equal open_timeout, http_object.open_timeout
|
86
|
+
assert_equal read_timeout, http_object.read_timeout
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_send_post_request
|
90
|
+
# test request creation
|
91
|
+
request = build_mock_request
|
92
|
+
Net::HTTP::Post.expects(:new).with(@uri.request_uri).returns(request)
|
93
|
+
|
94
|
+
# test http object creation
|
95
|
+
http = build_mock_http_object
|
96
|
+
Net::HTTP.expects(:new).with(@uri.host, @uri.port).returns(http)
|
97
|
+
|
98
|
+
# test send request
|
99
|
+
response = mock()
|
100
|
+
http.expects(:request).with(request).returns(response)
|
101
|
+
|
102
|
+
OneSignal::OneSignal.api_key = @api_key
|
103
|
+
assert_equal response, OneSignal::OneSignal.send_post_request(uri: @uri, body: @body)
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_send_put_request
|
107
|
+
# test request creation
|
108
|
+
request = build_mock_request
|
109
|
+
Net::HTTP::Put.expects(:new).with(@uri.request_uri).returns(request)
|
110
|
+
|
111
|
+
# test http object creation
|
112
|
+
http = build_mock_http_object
|
113
|
+
Net::HTTP.expects(:new).with(@uri.host, @uri.port).returns(http)
|
114
|
+
|
115
|
+
# test send request
|
116
|
+
response = mock()
|
117
|
+
http.expects(:request).with(request).returns(response)
|
118
|
+
|
119
|
+
OneSignal::OneSignal.api_key = @api_key
|
120
|
+
assert_equal response, OneSignal::OneSignal.send_put_request(uri: @uri, body: @body)
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
data/test/player_test.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class PlayerTest < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
base_url = "https://onesignal.com/api/v1/players"
|
7
|
+
@create_uri = URI.parse(base_url)
|
8
|
+
|
9
|
+
@player_id = "fake-id-123"
|
10
|
+
@update_uri = URI.parse(base_url + "/#{@player_id}")
|
11
|
+
|
12
|
+
@params = {
|
13
|
+
foo: "bar",
|
14
|
+
widget: "acme"
|
15
|
+
}
|
16
|
+
@api_key = "fake api key"
|
17
|
+
OneSignal::OneSignal.api_key = @api_key
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_create_raises_error
|
21
|
+
response = mock_response_ko
|
22
|
+
OneSignal::OneSignal.expects(:send_post_request)
|
23
|
+
.with(uri: @create_uri, body: @params)
|
24
|
+
.returns(response)
|
25
|
+
assert_raises OneSignal::OneSignalError do
|
26
|
+
OneSignal::Player.create(params: @params)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_create
|
31
|
+
response = mock_response_ok
|
32
|
+
OneSignal::OneSignal.expects(:send_post_request)
|
33
|
+
.with(uri: @create_uri, body: @params)
|
34
|
+
.returns(response)
|
35
|
+
assert_equal response, OneSignal::Player.create(params: @params)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_update_raises_error
|
39
|
+
response = mock_response_ko
|
40
|
+
OneSignal::OneSignal.expects(:send_put_request)
|
41
|
+
.with(uri: @update_uri, body: @params)
|
42
|
+
.returns(response)
|
43
|
+
assert_raises OneSignal::OneSignalError do
|
44
|
+
OneSignal::Player.update(id: @player_id, params: @params)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_update
|
49
|
+
response = mock_response_ok
|
50
|
+
OneSignal::OneSignal.expects(:send_put_request)
|
51
|
+
.with(uri: @update_uri, body: @params)
|
52
|
+
.returns(response)
|
53
|
+
assert_equal response, OneSignal::Player.update(id: @player_id, params: @params)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|