braze_ruby 0.4.2 → 0.5.0

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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +57 -0
  3. data/.circleci/gem_credentials +2 -0
  4. data/.circleci/setup-rubygems +6 -0
  5. data/.gitignore +12 -19
  6. data/.standard.yml +1 -0
  7. data/Gemfile +1 -2
  8. data/LICENSE.txt +17 -18
  9. data/README.md +4 -1
  10. data/Rakefile +2 -1
  11. data/bin/release +16 -0
  12. data/braze_ruby.gemspec +28 -31
  13. data/lib/braze_ruby.rb +4 -4
  14. data/lib/braze_ruby/api.rb +12 -12
  15. data/lib/braze_ruby/deprecated.rb +4 -4
  16. data/lib/braze_ruby/endpoints.rb +10 -10
  17. data/lib/braze_ruby/endpoints/remove_external_ids.rb +2 -2
  18. data/lib/braze_ruby/endpoints/rename_external_ids.rb +2 -2
  19. data/lib/braze_ruby/endpoints/subscription.rb +0 -1
  20. data/lib/braze_ruby/http.rb +8 -8
  21. data/lib/braze_ruby/rest.rb +20 -20
  22. data/lib/braze_ruby/rest/base.rb +3 -3
  23. data/lib/braze_ruby/rest/canvas_details.rb +1 -1
  24. data/lib/braze_ruby/rest/create_user_aliases.rb +2 -2
  25. data/lib/braze_ruby/rest/delete_users.rb +2 -2
  26. data/lib/braze_ruby/rest/email_hard_bounces.rb +1 -1
  27. data/lib/braze_ruby/rest/email_status.rb +3 -3
  28. data/lib/braze_ruby/rest/email_unsubscribes.rb +1 -1
  29. data/lib/braze_ruby/rest/export_users.rb +4 -4
  30. data/lib/braze_ruby/rest/identify_users.rb +2 -2
  31. data/lib/braze_ruby/rest/list_segments.rb +1 -1
  32. data/lib/braze_ruby/rest/remove_external_ids.rb +2 -2
  33. data/lib/braze_ruby/rest/rename_external_ids.rb +2 -2
  34. data/lib/braze_ruby/rest/schedule_messages.rb +6 -6
  35. data/lib/braze_ruby/rest/send_messages.rb +3 -3
  36. data/lib/braze_ruby/rest/subscription_status_get.rb +1 -1
  37. data/lib/braze_ruby/rest/subscription_status_set.rb +1 -1
  38. data/lib/braze_ruby/rest/subscription_user_status.rb +1 -1
  39. data/lib/braze_ruby/rest/track_users.rb +4 -4
  40. data/lib/braze_ruby/rest/trigger_campaign_send.rb +1 -1
  41. data/lib/braze_ruby/rest/trigger_canvas_send.rb +1 -1
  42. data/lib/braze_ruby/version.rb +1 -1
  43. metadata +45 -197
  44. data/.github/workflows/ci.yml +0 -30
  45. data/Gemfile.lock +0 -82
  46. data/spec/braze_ruby/api_spec.rb +0 -6
  47. data/spec/braze_ruby/endpoints/delete_users_spec.rb +0 -31
  48. data/spec/braze_ruby/endpoints/track_users_spec.rb +0 -74
  49. data/spec/braze_ruby/http_spec.rb +0 -48
  50. data/spec/braze_ruby/rest/create_user_aliases_spec.rb +0 -23
  51. data/spec/braze_ruby/rest/delete_users_spec.rb +0 -22
  52. data/spec/braze_ruby/rest/email_status_spec.rb +0 -20
  53. data/spec/braze_ruby/rest/export_users_spec.rb +0 -21
  54. data/spec/braze_ruby/rest/identify_users_spec.rb +0 -23
  55. data/spec/braze_ruby/rest/remove_external_ids_spec.rb +0 -22
  56. data/spec/braze_ruby/rest/rename_external_ids_spec.rb +0 -22
  57. data/spec/braze_ruby/rest/schedule_messages_spec.rb +0 -37
  58. data/spec/braze_ruby/rest/send_messages_spec.rb +0 -30
  59. data/spec/braze_ruby/rest/track_users_spec.rb +0 -27
  60. data/spec/factories.rb +0 -38
  61. data/spec/fixtures/responses/campaigns/trigger_send/sends_an_email.yml +0 -71
  62. data/spec/fixtures/responses/canvas/details/returns_error_when_no_canvas.yml +0 -69
  63. data/spec/fixtures/responses/canvas/trigger_send/sends_a_canvas.yml +0 -71
  64. data/spec/fixtures/responses/create_user_aliases/unauthorized/responds_with_unauthorized.yml +0 -67
  65. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_created.yml +0 -71
  66. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_success_message.yml +0 -71
  67. data/spec/fixtures/responses/delete_users/unauthorized/responds_with_unauthorized.yml +0 -68
  68. data/spec/fixtures/responses/delete_users/with_success/responds_with_created.yml +0 -71
  69. data/spec/fixtures/responses/delete_users/with_success/responds_with_success_message.yml +0 -71
  70. data/spec/fixtures/responses/email_status/existing_email/responds_with_created.yml +0 -71
  71. data/spec/fixtures/responses/email_status/existing_email/responds_with_success_message.yml +0 -71
  72. data/spec/fixtures/responses/email_status/unknown_email/responds_with_bad_request.yml +0 -71
  73. data/spec/fixtures/responses/email_status/unknown_email/responds_with_success_message.yml +0 -71
  74. data/spec/fixtures/responses/email_sync/hard_bounces/responds_with_empty_array_when_no_hard_bounces.yml +0 -75
  75. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_empty_array_when_no_unsubscribes.yml +0 -75
  76. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml +0 -75
  77. data/spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml +0 -72
  78. data/spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml +0 -71
  79. data/spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml +0 -68
  80. data/spec/fixtures/responses/identify_users/with_success/responds_with_created.yml +0 -71
  81. data/spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml +0 -71
  82. data/spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml +0 -81
  83. data/spec/fixtures/responses/list_segments/with_success/responds_with_success.yml +0 -81
  84. data/spec/fixtures/responses/remove_external_ids/unauthorized/responds_with_unauthorized.yml +0 -67
  85. data/spec/fixtures/responses/remove_external_ids/with_success/responds_with_created.yml +0 -69
  86. data/spec/fixtures/responses/remove_external_ids/with_success/responds_with_success_message.yml +0 -69
  87. data/spec/fixtures/responses/rename_external_ids/unauthorized/responds_with_unauthorized.yml +0 -67
  88. data/spec/fixtures/responses/rename_external_ids/with_success/responds_with_created.yml +0 -69
  89. data/spec/fixtures/responses/rename_external_ids/with_success/responds_with_success_message.yml +0 -69
  90. data/spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml +0 -68
  91. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_created.yml +0 -71
  92. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_success_message.yml +0 -71
  93. data/spec/fixtures/responses/send_messages/unauthorized/responds_with_unauthorized.yml +0 -68
  94. data/spec/fixtures/responses/send_messages/with_success/responds_with_created.yml +0 -71
  95. data/spec/fixtures/responses/send_messages/with_success/responds_with_success_message.yml +0 -71
  96. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +0 -71
  97. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +0 -68
  98. data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +0 -139
  99. 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 +0 -211
  100. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +0 -199
  101. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +0 -211
  102. data/spec/fixtures/responses/track_users/unauthorized/responds_with_unauthorized.yml +0 -70
  103. data/spec/fixtures/responses/track_users/with_success/responds_with_created.yml +0 -73
  104. data/spec/fixtures/responses/track_users/with_success/responds_with_success_message.yml +0 -73
  105. data/spec/integrations/campaigns_spec.rb +0 -19
  106. data/spec/integrations/canvas_spec.rb +0 -28
  107. data/spec/integrations/create_user_aliases_spec.rb +0 -32
  108. data/spec/integrations/delete_users_spec.rb +0 -32
  109. data/spec/integrations/email_status_spec.rb +0 -38
  110. data/spec/integrations/email_sync_spec.rb +0 -31
  111. data/spec/integrations/export_users_spec.rb +0 -29
  112. data/spec/integrations/identify_users_spec.rb +0 -32
  113. data/spec/integrations/list_segments_spec.rb +0 -21
  114. data/spec/integrations/remove_external_ids_spec.rb +0 -33
  115. data/spec/integrations/rename_external_ids_spec.rb +0 -37
  116. data/spec/integrations/schedule_messages_spec.rb +0 -34
  117. data/spec/integrations/send_messages_spec.rb +0 -33
  118. data/spec/integrations/subscription_spec.rb +0 -149
  119. data/spec/integrations/track_users_spec.rb +0 -38
  120. data/spec/spec_helper.rb +0 -25
  121. data/spec/support/factory_bot.rb +0 -12
  122. data/spec/support/integrations.rb +0 -27
  123. data/spec/support/vcr.rb +0 -20
@@ -1,70 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: "<BRAZE_REST_URL>/users/track"
6
- body:
7
- encoding: UTF-8
8
- string: '{"attributes":[{"external_id":1,"foo":"bar"}],"events":[{"external_id":1,"name":"baz","time":"2019-02-15
9
- 00:00:00 -0500"}],"purchases":[{"external_id":1,"product_id":1,"time":"2019-02-15
10
- 00:00:00 -0500","currency":"CAD","price":1.0}]}'
11
- headers:
12
- Content-Type:
13
- - application/json
14
- Accept:
15
- - application/json
16
- User-Agent:
17
- - Braze Ruby gem v0.3.3
18
- Authorization:
19
- - Bearer non-existent
20
- Accept-Encoding:
21
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
- response:
23
- status:
24
- code: 401
25
- message: Unauthorized
26
- headers:
27
- Connection:
28
- - keep-alive
29
- Content-Length:
30
- - '69'
31
- Cache-Control:
32
- - no-cache
33
- Content-Type:
34
- - application/json
35
- Server:
36
- - nginx
37
- Strict-Transport-Security:
38
- - max-age=0; includeSubDomains
39
- X-Ratelimit-Limit:
40
- - ''
41
- X-Ratelimit-Remaining:
42
- - ''
43
- X-Ratelimit-Reset:
44
- - ''
45
- X-Request-Id:
46
- - 455108aa-0cf4-438f-8d27-489896ca716b
47
- X-Runtime:
48
- - '0.001106'
49
- Accept-Ranges:
50
- - bytes
51
- Date:
52
- - Wed, 17 Jun 2020 20:31:42 GMT
53
- Via:
54
- - 1.1 varnish
55
- X-Served-By:
56
- - cache-hhn4044-HHN
57
- X-Cache:
58
- - MISS
59
- X-Cache-Hits:
60
- - '0'
61
- X-Timer:
62
- - S1592425903.848710,VS0,VE4
63
- Vary:
64
- - Origin,Accept-Encoding
65
- body:
66
- encoding: ASCII-8BIT
67
- string: '{"message":"Invalid API key: non-existent"}'
68
- http_version:
69
- recorded_at: Wed, 17 Jun 2020 20:31:42 GMT
70
- recorded_with: VCR 5.0.0
@@ -1,73 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: "<BRAZE_REST_URL>/users/track"
6
- body:
7
- encoding: UTF-8
8
- string: '{"attributes":[{"external_id":1,"foo":"bar"}],"events":[{"external_id":1,"name":"baz","time":"2019-02-15
9
- 00:00:00 -0500"}],"purchases":[{"external_id":1,"product_id":1,"time":"2019-02-15
10
- 00:00:00 -0500","currency":"CAD","price":1.0}]}'
11
- headers:
12
- Content-Type:
13
- - application/json
14
- Accept:
15
- - application/json
16
- User-Agent:
17
- - Braze Ruby gem v0.3.3
18
- Authorization:
19
- - Bearer <BRAZE_REST_API_KEY>
20
- Accept-Encoding:
21
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
- response:
23
- status:
24
- code: 201
25
- message: Created
26
- headers:
27
- Connection:
28
- - keep-alive
29
- Content-Length:
30
- - '85'
31
- Cache-Control:
32
- - max-age=0, private, must-revalidate
33
- Content-Type:
34
- - application/json
35
- Etag:
36
- - W/"68b326343749fed4d6cc5dda395b5367"
37
- Server:
38
- - nginx
39
- Strict-Transport-Security:
40
- - max-age=0; includeSubDomains
41
- - max-age=31536000; includeSubDomains
42
- X-Ratelimit-Limit:
43
- - '250000'
44
- X-Ratelimit-Remaining:
45
- - '250000'
46
- X-Ratelimit-Reset:
47
- - '1592427600'
48
- X-Request-Id:
49
- - 2e7a73fc-7efe-4c04-b837-c696cb10735a
50
- X-Runtime:
51
- - '0.007710'
52
- Accept-Ranges:
53
- - bytes
54
- Date:
55
- - Wed, 17 Jun 2020 20:31:42 GMT
56
- Via:
57
- - 1.1 varnish
58
- X-Served-By:
59
- - cache-hhn4030-HHN
60
- X-Cache:
61
- - MISS
62
- X-Cache-Hits:
63
- - '0'
64
- X-Timer:
65
- - S1592425903.632582,VS0,VE10
66
- Vary:
67
- - Origin,Accept-Encoding
68
- body:
69
- encoding: ASCII-8BIT
70
- string: '{"attributes_processed":1,"events_processed":1,"purchases_processed":1,"message":"success"}'
71
- http_version:
72
- recorded_at: Wed, 17 Jun 2020 20:31:42 GMT
73
- recorded_with: VCR 5.0.0
@@ -1,73 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: "<BRAZE_REST_URL>/users/track"
6
- body:
7
- encoding: UTF-8
8
- string: '{"attributes":[{"external_id":1,"foo":"bar"}],"events":[{"external_id":1,"name":"baz","time":"2019-02-15
9
- 00:00:00 -0500"}],"purchases":[{"external_id":1,"product_id":1,"time":"2019-02-15
10
- 00:00:00 -0500","currency":"CAD","price":1.0}]}'
11
- headers:
12
- Content-Type:
13
- - application/json
14
- Accept:
15
- - application/json
16
- User-Agent:
17
- - Braze Ruby gem v0.3.3
18
- Authorization:
19
- - Bearer <BRAZE_REST_API_KEY>
20
- Accept-Encoding:
21
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
- response:
23
- status:
24
- code: 201
25
- message: Created
26
- headers:
27
- Connection:
28
- - keep-alive
29
- Content-Length:
30
- - '85'
31
- Cache-Control:
32
- - max-age=0, private, must-revalidate
33
- Content-Type:
34
- - application/json
35
- Etag:
36
- - W/"68b326343749fed4d6cc5dda395b5367"
37
- Server:
38
- - nginx
39
- Strict-Transport-Security:
40
- - max-age=0; includeSubDomains
41
- - max-age=31536000; includeSubDomains
42
- X-Ratelimit-Limit:
43
- - '250000'
44
- X-Ratelimit-Remaining:
45
- - '250000'
46
- X-Ratelimit-Reset:
47
- - '1592427600'
48
- X-Request-Id:
49
- - 75dc3ac0-d4d2-4278-89d0-b29e540dc719
50
- X-Runtime:
51
- - '0.008741'
52
- Accept-Ranges:
53
- - bytes
54
- Date:
55
- - Wed, 17 Jun 2020 20:31:42 GMT
56
- Via:
57
- - 1.1 varnish
58
- X-Served-By:
59
- - cache-hhn4063-HHN
60
- X-Cache:
61
- - MISS
62
- X-Cache-Hits:
63
- - '0'
64
- X-Timer:
65
- - S1592425903.749169,VS0,VE11
66
- Vary:
67
- - Origin,Accept-Encoding
68
- body:
69
- encoding: ASCII-8BIT
70
- string: '{"attributes_processed":1,"events_processed":1,"purchases_processed":1,"message":"success"}'
71
- http_version:
72
- recorded_at: Wed, 17 Jun 2020 20:31:42 GMT
73
- recorded_with: VCR 5.0.0
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe 'campaigns' do
6
- describe 'trigger_send' do
7
- it 'sends an email', vcr: true do
8
- response = api.trigger_campaign_send(
9
- campaign_id: 'd8b73da7-0b7c-fc72-1d80-e59c7f20f0d3',
10
- recipients: [
11
- external_user_id: 12345,
12
- trigger_properties: {first_name: 'John'}
13
- ]
14
- )
15
-
16
- expect(response.success?).to eq(true)
17
- end
18
- end
19
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe 'canvas' do
6
- describe 'trigger_send' do
7
- it 'sends a canvas', vcr: true do
8
- response = api.trigger_canvas_send(
9
- canvas_id: '70a7fb99-cbcb-451a-8224-5f8b8c63e03f',
10
- recipients: [
11
- external_user_id: 12345,
12
- canvas_entry_properties: {first_name: 'John'}
13
- ]
14
- )
15
-
16
- expect(response.success?).to eq(true)
17
- end
18
- end
19
-
20
- describe 'details' do
21
- it 'returns error when no canvas', vcr: true do
22
- response = api.canvas_details(
23
- canvas_id: 'non-existing'
24
- )
25
- expect(response.status).to eq(400)
26
- end
27
- end
28
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'create user aliases' do
6
- let(:user) { { user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
7
-
8
- subject(:create_user_aliases) do
9
- api.create_user_aliases(user_aliases: [user])
10
- end
11
-
12
- context 'with success', vcr: true do
13
- it 'responds with created' do
14
- expect(create_user_aliases.status).to be 201
15
- end
16
-
17
- it 'responds with success message' do
18
- expect(JSON.parse(create_user_aliases.body)).to eq(
19
- 'aliases_processed' => 1,
20
- 'message' => 'success'
21
- )
22
- end
23
- end
24
-
25
- context 'unauthorized', vcr: true do
26
- let(:api_key) { 'non-existent' }
27
-
28
- it 'responds with unauthorized' do
29
- expect(create_user_aliases.status).to be 401
30
- end
31
- end
32
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'delete users' do
6
- let(:external_ids) { [400, 401, 402] }
7
-
8
- subject(:delete_users) do
9
- api.delete_users(external_ids)
10
- end
11
-
12
- context 'with success', vcr: true do
13
- it 'responds with created' do
14
- expect(delete_users.status).to be 201
15
- end
16
-
17
- it 'responds with success message' do
18
- expect(JSON.parse(delete_users.body)).to include(
19
- 'deleted' => 3,
20
- 'message' => 'success'
21
- )
22
- end
23
- end
24
-
25
- context 'unauthorized', vcr: true do
26
- let(:api_key) { 'non-existent' }
27
-
28
- it 'responds with unauthorized' do
29
- expect(delete_users.status).to be 401
30
- end
31
- end
32
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'email status' do
6
- let(:email) { 'john@example.com' }
7
- let(:status) { :unsubscribed }
8
-
9
- subject do
10
- api.email_status(email: email, status: status)
11
- end
12
-
13
- context 'existing email', vcr: true do
14
- it 'responds with created' do
15
- expect(subject.status).to be 201
16
- end
17
-
18
- it 'responds with success message' do
19
- expect(JSON.parse(subject.body)).to eq(
20
- 'message' => 'success'
21
- )
22
- end
23
- end
24
-
25
- context 'unknown email', vcr: true do
26
- let(:email) { 'notthere@example.com' }
27
-
28
- it 'responds with bad request' do
29
- expect(subject.status).to be 201
30
- end
31
-
32
- it 'responds with success message' do
33
- expect(JSON.parse(subject.body)).to eq(
34
- 'message' => 'success'
35
- )
36
- end
37
- end
38
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe 'email sync' do
6
- describe 'unsubscribes' do
7
- it 'responds with unsubscribed emails', vcr: true do
8
- response = api.email_unsubscribes(start_date: '2020-06-17', end_date: '2020-06-18')
9
- emails = JSON.parse(response.body)['emails']
10
-
11
- expect(emails.size).to eq(1)
12
- expect(emails.first['email']).to eq('example@123.com')
13
- end
14
-
15
- it 'responds with empty array when no unsubscribes', vcr: true do
16
- response = api.email_unsubscribes(start_date: '2019-02-20', end_date: '2019-02-25')
17
- emails = JSON.parse(response.body)['emails']
18
-
19
- expect(emails.size).to eq(0)
20
- end
21
- end
22
-
23
- describe 'hard_bounces' do
24
- it 'responds with empty array when no hard bounces', vcr: true do
25
- response = api.email_hard_bounces(start_date: '2019-02-20', end_date: '2019-02-25')
26
- emails = JSON.parse(response.body)['emails']
27
-
28
- expect(emails.size).to eq(0)
29
- end
30
- end
31
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'export users' do
6
- context 'by ids' do
7
- subject(:export_users) { api.export_users(external_ids: [12345]) }
8
-
9
- context 'with success', :vcr do
10
- it 'responds with created' do
11
- expect(export_users).to be_success
12
- end
13
- end
14
- end
15
-
16
- context 'by segment' do
17
- context 'with success', :vcr do
18
- let(:segment_id) { "3aca937b-9bbc-4e42-9370-05e411967b2b" }
19
-
20
- subject(:export_users) do
21
- api.export_users(segment_id: segment_id, callback_endpoint: 'https://example.com')
22
- end
23
-
24
- it 'responds with created' do
25
- expect(export_users).to be_success
26
- end
27
- end
28
- end
29
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe 'identify users' do
6
- let(:user) { { external_id: 12345, user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
7
-
8
- subject(:identify_users) do
9
- api.identify_users(aliases_to_identify: [user])
10
- end
11
-
12
- context 'with success', vcr: true do
13
- it 'responds with created' do
14
- expect(identify_users.status).to be 201
15
- end
16
-
17
- it 'responds with success message' do
18
- expect(JSON.parse(identify_users.body)).to eq(
19
- 'aliases_processed' => 1,
20
- 'message' => 'success'
21
- )
22
- end
23
- end
24
-
25
- context 'unauthorized', vcr: true do
26
- let(:api_key) { 'non-existent' }
27
-
28
- it 'responds with unauthorized' do
29
- expect(identify_users.status).to be 401
30
- end
31
- end
32
- end