braze_ruby 0.3.1 → 0.4.2

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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +14 -3
  3. data/Gemfile.lock +43 -39
  4. data/README.md +59 -0
  5. data/braze_ruby.gemspec +7 -7
  6. data/lib/braze_ruby/api.rb +11 -4
  7. data/lib/braze_ruby/endpoints.rb +4 -0
  8. data/lib/braze_ruby/endpoints/campaigns.rb +1 -1
  9. data/lib/braze_ruby/endpoints/canvas.rb +2 -2
  10. data/lib/braze_ruby/endpoints/create_user_aliases.rb +19 -0
  11. data/lib/braze_ruby/endpoints/delete_users.rb +2 -2
  12. data/lib/braze_ruby/endpoints/email_status.rb +1 -1
  13. data/lib/braze_ruby/endpoints/email_sync.rb +2 -2
  14. data/lib/braze_ruby/endpoints/identify_users.rb +19 -0
  15. data/lib/braze_ruby/endpoints/remove_external_ids.rb +19 -0
  16. data/lib/braze_ruby/endpoints/rename_external_ids.rb +19 -0
  17. data/lib/braze_ruby/endpoints/schedule_messages.rb +1 -1
  18. data/lib/braze_ruby/endpoints/send_messages.rb +1 -1
  19. data/lib/braze_ruby/endpoints/subscription.rb +3 -3
  20. data/lib/braze_ruby/endpoints/track_users.rb +5 -5
  21. data/lib/braze_ruby/http.rb +18 -5
  22. data/lib/braze_ruby/rest.rb +4 -0
  23. data/lib/braze_ruby/rest/base.rb +4 -2
  24. data/lib/braze_ruby/rest/canvas_details.rb +3 -5
  25. data/lib/braze_ruby/rest/create_user_aliases.rb +13 -0
  26. data/lib/braze_ruby/rest/delete_users.rb +1 -2
  27. data/lib/braze_ruby/rest/email_hard_bounces.rb +3 -5
  28. data/lib/braze_ruby/rest/email_status.rb +3 -5
  29. data/lib/braze_ruby/rest/email_unsubscribes.rb +3 -5
  30. data/lib/braze_ruby/rest/export_users.rb +5 -7
  31. data/lib/braze_ruby/rest/identify_users.rb +13 -0
  32. data/lib/braze_ruby/rest/list_segments.rb +2 -4
  33. data/lib/braze_ruby/rest/remove_external_ids.rb +13 -0
  34. data/lib/braze_ruby/rest/rename_external_ids.rb +13 -0
  35. data/lib/braze_ruby/rest/schedule_messages.rb +3 -5
  36. data/lib/braze_ruby/rest/send_messages.rb +3 -5
  37. data/lib/braze_ruby/rest/subscription_status_get.rb +3 -5
  38. data/lib/braze_ruby/rest/subscription_status_set.rb +3 -5
  39. data/lib/braze_ruby/rest/subscription_user_status.rb +3 -5
  40. data/lib/braze_ruby/rest/track_users.rb +1 -2
  41. data/lib/braze_ruby/rest/trigger_campaign_send.rb +4 -8
  42. data/lib/braze_ruby/rest/trigger_canvas_send.rb +3 -5
  43. data/lib/braze_ruby/version.rb +1 -1
  44. data/spec/braze_ruby/endpoints/delete_users_spec.rb +1 -1
  45. data/spec/braze_ruby/endpoints/track_users_spec.rb +8 -8
  46. data/spec/braze_ruby/http_spec.rb +48 -0
  47. data/spec/braze_ruby/rest/create_user_aliases_spec.rb +23 -0
  48. data/spec/braze_ruby/rest/delete_users_spec.rb +3 -3
  49. data/spec/braze_ruby/rest/email_status_spec.rb +1 -2
  50. data/spec/braze_ruby/rest/export_users_spec.rb +3 -3
  51. data/spec/braze_ruby/rest/identify_users_spec.rb +23 -0
  52. data/spec/braze_ruby/rest/remove_external_ids_spec.rb +22 -0
  53. data/spec/braze_ruby/rest/rename_external_ids_spec.rb +22 -0
  54. data/spec/braze_ruby/rest/schedule_messages_spec.rb +1 -2
  55. data/spec/braze_ruby/rest/send_messages_spec.rb +8 -13
  56. data/spec/braze_ruby/rest/track_users_spec.rb +10 -9
  57. data/spec/fixtures/responses/campaigns/trigger_send/sends_an_email.yml +17 -15
  58. data/spec/fixtures/responses/canvas/details/returns_error_when_no_canvas.yml +16 -14
  59. data/spec/fixtures/responses/canvas/trigger_send/sends_a_canvas.yml +18 -16
  60. data/spec/fixtures/responses/create_user_aliases/unauthorized/responds_with_unauthorized.yml +67 -0
  61. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_created.yml +71 -0
  62. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_success_message.yml +71 -0
  63. data/spec/fixtures/responses/delete_users/unauthorized/responds_with_unauthorized.yml +20 -18
  64. data/spec/fixtures/responses/delete_users/with_success/responds_with_created.yml +25 -23
  65. data/spec/fixtures/responses/delete_users/with_success/responds_with_success_message.yml +25 -23
  66. data/spec/fixtures/responses/email_status/existing_email/responds_with_created.yml +22 -20
  67. data/spec/fixtures/responses/email_status/existing_email/responds_with_success_message.yml +22 -20
  68. data/spec/fixtures/responses/email_status/unknown_email/responds_with_bad_request.yml +22 -20
  69. data/spec/fixtures/responses/email_status/unknown_email/responds_with_success_message.yml +22 -20
  70. data/spec/fixtures/responses/email_sync/hard_bounces/responds_with_empty_array_when_no_hard_bounces.yml +18 -16
  71. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_empty_array_when_no_unsubscribes.yml +18 -16
  72. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml +21 -20
  73. data/spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml +25 -22
  74. data/spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml +24 -22
  75. data/spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml +68 -0
  76. data/spec/fixtures/responses/identify_users/with_success/responds_with_created.yml +71 -0
  77. data/spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml +71 -0
  78. data/spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml +35 -35
  79. data/spec/fixtures/responses/list_segments/with_success/responds_with_success.yml +35 -35
  80. data/spec/fixtures/responses/remove_external_ids/unauthorized/responds_with_unauthorized.yml +67 -0
  81. data/spec/fixtures/responses/remove_external_ids/with_success/responds_with_created.yml +69 -0
  82. data/spec/fixtures/responses/remove_external_ids/with_success/responds_with_success_message.yml +69 -0
  83. data/spec/fixtures/responses/rename_external_ids/unauthorized/responds_with_unauthorized.yml +67 -0
  84. data/spec/fixtures/responses/rename_external_ids/with_success/responds_with_created.yml +69 -0
  85. data/spec/fixtures/responses/rename_external_ids/with_success/responds_with_success_message.yml +69 -0
  86. data/spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml +20 -19
  87. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_created.yml +24 -23
  88. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_success_message.yml +24 -23
  89. data/spec/fixtures/responses/send_messages/unauthorized/responds_with_unauthorized.yml +20 -18
  90. data/spec/fixtures/responses/send_messages/with_success/responds_with_created.yml +24 -22
  91. data/spec/fixtures/responses/send_messages/with_success/responds_with_success_message.yml +24 -22
  92. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +16 -14
  93. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +16 -14
  94. data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +32 -28
  95. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_checking_subscribed_and_unsubscribed_user_status/returns_only_users_that_were_once_subscribed.yml +50 -44
  96. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +48 -42
  97. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +50 -46
  98. data/spec/fixtures/responses/track_users/unauthorized/responds_with_unauthorized.yml +23 -21
  99. data/spec/fixtures/responses/track_users/with_success/responds_with_created.yml +22 -20
  100. data/spec/fixtures/responses/track_users/with_success/responds_with_success_message.yml +22 -20
  101. data/spec/integrations/campaigns_spec.rb +4 -2
  102. data/spec/integrations/canvas_spec.rb +4 -2
  103. data/spec/integrations/create_user_aliases_spec.rb +32 -0
  104. data/spec/integrations/delete_users_spec.rb +1 -0
  105. data/spec/integrations/email_sync_spec.rb +2 -2
  106. data/spec/integrations/export_users_spec.rb +2 -2
  107. data/spec/integrations/identify_users_spec.rb +32 -0
  108. data/spec/integrations/list_segments_spec.rb +1 -1
  109. data/spec/integrations/remove_external_ids_spec.rb +33 -0
  110. data/spec/integrations/rename_external_ids_spec.rb +37 -0
  111. data/spec/integrations/schedule_messages_spec.rb +2 -1
  112. data/spec/integrations/send_messages_spec.rb +2 -1
  113. data/spec/integrations/subscription_spec.rb +7 -7
  114. data/spec/integrations/track_users_spec.rb +1 -0
  115. data/spec/spec_helper.rb +0 -8
  116. data/spec/support/integrations.rb +5 -1
  117. data/spec/support/vcr.rb +3 -1
  118. metadata +69 -19
@@ -3,17 +3,15 @@
3
3
  module BrazeRuby
4
4
  module REST
5
5
  class SubscriptionUserStatus < Base
6
- attr_reader :api_key, :params
6
+ attr_reader :params
7
7
 
8
- def initialize(api_key, braze_url, **params)
9
- @api_key = api_key
8
+ def initialize(api_key, braze_url, options, **params)
10
9
  @params = params
11
- super braze_url
10
+ super api_key, braze_url, options
12
11
  end
13
12
 
14
13
  def perform
15
14
  http.get('/subscription/user/status', {
16
- 'api_key': api_key,
17
15
  **params
18
16
  })
19
17
  end
@@ -3,9 +3,8 @@
3
3
  module BrazeRuby
4
4
  module REST
5
5
  class TrackUsers < Base
6
- def perform(api_key, attributes: [], events: [], purchases: [])
6
+ def perform(attributes: [], events: [], purchases: [])
7
7
  http.post '/users/track', {
8
- 'api_key': api_key,
9
8
  'attributes': attributes,
10
9
  'events': events,
11
10
  'purchases': purchases
@@ -3,19 +3,15 @@
3
3
  module BrazeRuby
4
4
  module REST
5
5
  class TriggerCampaignSend < Base
6
- attr_reader :api_key, :params
6
+ attr_reader :params
7
7
 
8
- def initialize(api_key, braze_url, **params)
9
- @api_key = api_key
8
+ def initialize(api_key, braze_url, options, **params)
10
9
  @params = params
11
- super braze_url
10
+ super api_key, braze_url, options
12
11
  end
13
12
 
14
13
  def perform
15
- http.post('/campaigns/trigger/send', {
16
- 'api_key': api_key,
17
- **@params
18
- })
14
+ http.post('/campaigns/trigger/send', @params)
19
15
  end
20
16
  end
21
17
  end
@@ -3,17 +3,15 @@
3
3
  module BrazeRuby
4
4
  module REST
5
5
  class TriggerCanvasSend < Base
6
- attr_reader :api_key, :params
6
+ attr_reader :params
7
7
 
8
- def initialize(api_key, braze_url, **params)
9
- @api_key = api_key
8
+ def initialize(api_key, braze_url, options, **params)
10
9
  @params = params
11
- super braze_url
10
+ super api_key, braze_url, options
12
11
  end
13
12
 
14
13
  def perform
15
14
  http.post('/canvas/trigger/send', {
16
- 'api_key': api_key,
17
15
  **@params
18
16
  })
19
17
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrazeRuby
4
- VERSION = '0.3.1'.freeze
4
+ VERSION = '0.4.2'.freeze
5
5
  end
@@ -23,7 +23,7 @@ describe BrazeRuby::Endpoints::DeleteUsers do
23
23
 
24
24
  it 'deletes users' do
25
25
  expect(delete_users_service).to receive(:perform)
26
- .with(:api_key, external_ids: payload)
26
+ .with(external_ids: payload)
27
27
 
28
28
  delete_users!
29
29
  end
@@ -23,11 +23,11 @@ describe BrazeRuby::Endpoints::TrackUsers do
23
23
  purchases: [build(:purchase)]
24
24
  }}
25
25
 
26
- subject(:track_users!) { api.track_users(payload) }
26
+ subject(:track_users!) { api.track_users(**payload) }
27
27
 
28
28
  it 'tracks attributes, events and purchases' do
29
29
  expect(track_users_service).to receive(:perform)
30
- .with(:api_key, payload)
30
+ .with(payload)
31
31
 
32
32
  track_users!
33
33
  end
@@ -36,11 +36,11 @@ describe BrazeRuby::Endpoints::TrackUsers do
36
36
  describe '#track_purchase' do
37
37
  let(:payload) { build(:purchase) }
38
38
 
39
- subject(:track_purchase!) { api.track_purchase(payload) }
39
+ subject(:track_purchase!) { api.track_purchase(**payload) }
40
40
 
41
41
  it 'tracks a single purchase' do
42
42
  expect(track_users_service).to receive(:perform)
43
- .with(:api_key, purchases: [payload])
43
+ .with(purchases: [payload])
44
44
 
45
45
  track_purchase!
46
46
  end
@@ -49,11 +49,11 @@ describe BrazeRuby::Endpoints::TrackUsers do
49
49
  describe '#track_event' do
50
50
  let(:payload) { build(:event) }
51
51
 
52
- subject(:track_event!) { api.track_event(payload) }
52
+ subject(:track_event!) { api.track_event(**payload) }
53
53
 
54
54
  it 'tracks a single purchase' do
55
55
  expect(track_users_service).to receive(:perform)
56
- .with(:api_key, events: [payload])
56
+ .with(events: [payload])
57
57
 
58
58
  track_event!
59
59
  end
@@ -62,11 +62,11 @@ describe BrazeRuby::Endpoints::TrackUsers do
62
62
  describe '#track_attribute' do
63
63
  let(:payload) { build(:attribute) }
64
64
 
65
- subject(:track_attribute!) { api.track_attribute(payload) }
65
+ subject(:track_attribute!) { api.track_attribute(**payload) }
66
66
 
67
67
  it 'tracks a single purchase' do
68
68
  expect(track_users_service).to receive(:perform)
69
- .with(:api_key, attributes: [payload])
69
+ .with(attributes: [payload])
70
70
 
71
71
  track_attribute!
72
72
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'braze_ruby/http'
5
+
6
+ describe BrazeRuby::HTTP do
7
+ describe "#connection" do
8
+ let(:options) { double("options", :"[]=" => nil) }
9
+ let(:headers) { double("headers", :"[]=" => nil) }
10
+ let(:conn) { double("conn", adapter: nil, options: options, headers: headers) }
11
+ let(:api_key) { "braze-api-key" }
12
+ let(:braze_url) { "http://example.com" }
13
+
14
+ before :each do
15
+ allow(Faraday).to receive(:new).and_yield(conn)
16
+ allow(Faraday).to receive(:default_adapter).and_return(:default_adapter)
17
+ end
18
+
19
+ it "it defaults to the timeout option" do
20
+ described_class.new(api_key, braze_url).connection
21
+
22
+ expect(options).to have_received(:"[]=").with(:timeout, described_class::DEFAULT_TIMEOUT)
23
+ end
24
+
25
+ it "it sets the default timeout option when given" do
26
+ timeout = 5
27
+ described_class.new(api_key, braze_url, {timeout: timeout}).connection
28
+
29
+ expect(options).to have_received(:"[]=").with(:timeout, timeout)
30
+ end
31
+
32
+ it "sets the headers" do
33
+ described_class.new(api_key, braze_url).connection
34
+
35
+
36
+ expect(headers).to have_received(:"[]=").with("Content-Type", "application/json")
37
+ expect(headers).to have_received(:"[]=").with("Accept", "application/json")
38
+ expect(headers).to have_received(:"[]=").with("User-Agent", "Braze Ruby gem v#{BrazeRuby::VERSION}")
39
+ expect(headers).to have_received(:"[]=").with("Authorization", "Bearer braze-api-key")
40
+ end
41
+
42
+ it "it sets the default adapter" do
43
+ described_class.new(api_key, braze_url).connection
44
+
45
+ expect(conn).to have_received(:adapter).with(:default_adapter)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe BrazeRuby::REST::CreateUserAliases do
6
+ let(:http) { double(:http) }
7
+
8
+ let(:payload) { {user_aliases: [user]} }
9
+ let(:user) { { user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
10
+
11
+ let(:api_key) { :api_key }
12
+
13
+ subject { described_class.new :api_key, :rest_url, {}}
14
+
15
+ before { subject.http = http }
16
+
17
+ it 'makes an http call to the user aliases endpoint' do
18
+ expect(http).to receive(:post).with '/users/alias/new',
19
+ payload
20
+
21
+ subject.perform(**payload)
22
+ end
23
+ end
@@ -9,14 +9,14 @@ describe BrazeRuby::REST::DeleteUsers do
9
9
 
10
10
  let(:api_key) { :api_key }
11
11
 
12
- subject { described_class.new :rest_url}
12
+ subject { described_class.new :api_key, :rest_url, {}}
13
13
 
14
14
  before { subject.http = http }
15
15
 
16
16
  it 'makes an http call to the delete user endpoint' do
17
17
  expect(http).to receive(:post).with '/users/delete',
18
- payload.merge({ api_key: :api_key })
18
+ payload
19
19
 
20
- subject.perform(api_key, payload)
20
+ subject.perform(**payload)
21
21
  end
22
22
  end
@@ -7,11 +7,10 @@ describe BrazeRuby::REST::EmailStatus do
7
7
 
8
8
  before { subject.http = http }
9
9
 
10
- subject { described_class.new(:api_key, :rest_url, email: :email, status: :status) }
10
+ subject { described_class.new(:api_key, :rest_url, {}, email: :email, status: :status) }
11
11
 
12
12
  it 'makes an http call to the email status endpoint' do
13
13
  expect(http).to receive(:post).with '/email/status', {
14
- api_key: :api_key,
15
14
  email: :email,
16
15
  subscription_state: :status
17
16
  }
@@ -8,14 +8,14 @@ describe BrazeRuby::REST::ExportUsers do
8
8
  let(:payload) {{ external_ids: external_ids }}
9
9
  let(:external_ids) { [1] }
10
10
 
11
- subject { described_class.new :rest_url }
11
+ subject { described_class.new :api_key, :rest_url, {} }
12
12
 
13
13
  before { subject.http = http }
14
14
 
15
15
  it 'makes an http call to the track user endpoint' do
16
16
  expect(http).to receive(:post).with '/users/export/ids',
17
- payload.merge({ api_key: :api_key })
17
+ payload
18
18
 
19
- subject.perform(:api_key, payload)
19
+ subject.perform(**payload)
20
20
  end
21
21
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe BrazeRuby::REST::IdentifyUsers do
6
+ let(:http) { double(:http) }
7
+
8
+ let(:payload) { {aliases_to_identify: [user]} }
9
+ let(:user) { { external_id: 123, user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
10
+
11
+ let(:api_key) { :api_key }
12
+
13
+ subject { described_class.new :api_key, :rest_url, {}}
14
+
15
+ before { subject.http = http }
16
+
17
+ it 'makes an http call to the identify users endpoint' do
18
+ expect(http).to receive(:post).with '/users/identify',
19
+ payload
20
+
21
+ subject.perform(**payload)
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe BrazeRuby::REST::RemoveExternalIds do
6
+ let(:http) { double(:http) }
7
+
8
+ let(:payload) { { external_ids: ['foo'] } }
9
+
10
+ let(:api_key) { :api_key }
11
+
12
+ subject { described_class.new :api_key, :rest_url, {}}
13
+
14
+ before { subject.http = http }
15
+
16
+ it 'makes an http call to the remove external ids endpoint' do
17
+ expect(http).to receive(:post).with '/users/external_ids/remove',
18
+ payload
19
+
20
+ subject.perform(**payload)
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe BrazeRuby::REST::RenameExternalIds do
6
+ let(:http) { double(:http) }
7
+
8
+ let(:payload) { { external_id_renames: [{ current_external_id: 'abc', new_external_id: 'foo' }] } }
9
+
10
+ let(:api_key) { :api_key }
11
+
12
+ subject { described_class.new :api_key, :rest_url, {}}
13
+
14
+ before { subject.http = http }
15
+
16
+ it 'makes an http call to the rename external ids endpoint' do
17
+ expect(http).to receive(:post).with '/users/external_ids/rename',
18
+ payload
19
+
20
+ subject.perform(**payload)
21
+ end
22
+ end
@@ -14,7 +14,7 @@ describe BrazeRuby::REST::ScheduleMessages do
14
14
 
15
15
  let(:api_key) { :api_key }
16
16
 
17
- subject { described_class.new(api_key, :rest_url, payload) }
17
+ subject { described_class.new(api_key, :rest_url, {}, **payload) }
18
18
 
19
19
  before { subject.http = http }
20
20
 
@@ -26,7 +26,6 @@ describe BrazeRuby::REST::ScheduleMessages do
26
26
 
27
27
  def expect_schedule_messages_http_call
28
28
  expect(http).to receive(:post).with '/messages/schedule/create', {
29
- api_key: api_key,
30
29
  external_user_ids: :external_user_ids,
31
30
  schedule: {
32
31
  time: :time,
@@ -5,16 +5,12 @@ require 'spec_helper'
5
5
  describe BrazeRuby::REST::SendMessages do
6
6
  let(:http) { double(:http) }
7
7
 
8
- let(:payload) {{
9
- messages: :messages,
10
- external_user_ids: :external_user_ids,
11
- }}
12
-
13
- let(:api_key) { :api_key }
14
-
15
- subject { described_class.new(api_key,
16
- messages: :messages,
17
- external_user_ids: :external_user_ids
8
+ subject { described_class.new(
9
+ :api_key,
10
+ :rest_url,
11
+ {},
12
+ messages: ["message"],
13
+ external_user_ids: ["1", "2"]
18
14
  ) }
19
15
 
20
16
  before { subject.http = http }
@@ -27,9 +23,8 @@ describe BrazeRuby::REST::SendMessages do
27
23
 
28
24
  def expect_send_messages_http_call
29
25
  expect(http).to receive(:post).with '/messages/send', {
30
- api_key: :api_key,
31
- messages: [],
32
- external_user_ids: [],
26
+ messages: ["message"],
27
+ external_user_ids: ["1", "2"],
33
28
  }
34
29
  end
35
30
  end
@@ -5,22 +5,23 @@ require 'spec_helper'
5
5
  describe BrazeRuby::REST::TrackUsers do
6
6
  let(:http) { double(:http) }
7
7
 
8
- let(:payload) {{
9
- attributes: :attributes,
10
- events: :events,
11
- purchases: :purchases
12
- }}
8
+ let(:payload) do
9
+ {
10
+ attributes: :attributes,
11
+ events: :events,
12
+ purchases: :purchases
13
+ }
14
+ end
13
15
 
14
16
  let(:api_key) { :api_key }
15
17
 
16
- subject { described_class.new :rest_url}
18
+ subject { described_class.new :api_key, :rest_url, {}}
17
19
 
18
20
  before { subject.http = http }
19
21
 
20
22
  it 'makes an http call to the track user endpoint' do
21
- expect(http).to receive(:post).with '/users/track',
22
- payload.merge({ api_key: :api_key })
23
+ expect(http).to receive(:post).with '/users/track', payload
23
24
 
24
- subject.perform(api_key, payload)
25
+ subject.perform(**payload)
25
26
  end
26
27
  end
@@ -5,14 +5,16 @@ http_interactions:
5
5
  uri: "<BRAZE_REST_URL>/campaigns/trigger/send"
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"api_key":"<BRAZE_REST_API_KEY>","campaign_id":"69e9b681-779c-4b4c-b6b8-cd74b17d21d2","recipients":[{"external_user_id":132404,"trigger_properties":{"first_name":"John"}}]}'
8
+ string: '{"campaign_id":"d8b73da7-0b7c-fc72-1d80-e59c7f20f0d3","recipients":[{"external_user_id":12345,"trigger_properties":{"first_name":"John"}}]}'
9
9
  headers:
10
10
  Content-Type:
11
11
  - application/json
12
12
  Accept:
13
13
  - application/json
14
14
  User-Agent:
15
- - Braze Ruby gem v0.2.0
15
+ - Braze Ruby gem v0.3.3
16
+ Authorization:
17
+ - Bearer <BRAZE_REST_API_KEY>
16
18
  Accept-Encoding:
17
19
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
20
  response:
@@ -20,12 +22,16 @@ http_interactions:
20
22
  code: 201
21
23
  message: Created
22
24
  headers:
25
+ Connection:
26
+ - keep-alive
27
+ Content-Length:
28
+ - '94'
23
29
  Cache-Control:
24
30
  - max-age=0, private, must-revalidate
25
31
  Content-Type:
26
32
  - application/json
27
33
  Etag:
28
- - W/"838a7c62adda8d131d694ae13ba2c5b7"
34
+ - W/"b02a5788c87daf846d9cf451bf7f4e6d"
29
35
  Server:
30
36
  - nginx
31
37
  Strict-Transport-Security:
@@ -36,34 +42,30 @@ http_interactions:
36
42
  X-Ratelimit-Remaining:
37
43
  - '249998'
38
44
  X-Ratelimit-Reset:
39
- - '1567425600'
45
+ - '1592427600'
40
46
  X-Request-Id:
41
- - e6f14e03-5226-45f3-9a9f-901a0139b071
47
+ - ab80a33e-db36-4fe9-af89-6ce274df5edc
42
48
  X-Runtime:
43
- - '0.019114'
44
- Content-Length:
45
- - '46'
49
+ - '0.016803'
46
50
  Accept-Ranges:
47
51
  - bytes
48
52
  Date:
49
- - Mon, 02 Sep 2019 11:41:42 GMT
53
+ - Wed, 17 Jun 2020 20:04:46 GMT
50
54
  Via:
51
55
  - 1.1 varnish
52
- Connection:
53
- - keep-alive
54
56
  X-Served-By:
55
- - cache-hhn4029-HHN
57
+ - cache-hhn4039-HHN
56
58
  X-Cache:
57
59
  - MISS
58
60
  X-Cache-Hits:
59
61
  - '0'
60
62
  X-Timer:
61
- - S1567424502.370259,VS0,VE27
63
+ - S1592424287.720589,VS0,VE19
62
64
  Vary:
63
65
  - Origin,Accept-Encoding
64
66
  body:
65
67
  encoding: ASCII-8BIT
66
- string: '{"message":"success"}'
68
+ string: '{"dispatch_id":"14497aa4b013bf150881547fb3076fd6","message":"success"}'
67
69
  http_version:
68
- recorded_at: Mon, 02 Sep 2019 11:41:42 GMT
70
+ recorded_at: Wed, 17 Jun 2020 20:04:46 GMT
69
71
  recorded_with: VCR 5.0.0