castle-rb 7.2.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/lib/castle/api/authenticate.rb +3 -12
  3. data/lib/castle/api/end_impersonation.rb +1 -3
  4. data/lib/castle/api/filter.rb +2 -10
  5. data/lib/castle/api/log.rb +2 -10
  6. data/lib/castle/api/risk.rb +2 -10
  7. data/lib/castle/api/start_impersonation.rb +1 -3
  8. data/lib/castle/api/track.rb +1 -3
  9. data/lib/castle/client.rb +1 -5
  10. data/lib/castle/commands/log.rb +1 -5
  11. data/lib/castle/commands/risk.rb +1 -5
  12. data/lib/castle/configuration.rb +2 -5
  13. data/lib/castle/core/process_response.rb +4 -3
  14. data/lib/castle/core/send_request.rb +1 -3
  15. data/lib/castle/errors.rb +4 -0
  16. data/lib/castle/headers/extract.rb +1 -3
  17. data/lib/castle/headers/filter.rb +2 -3
  18. data/lib/castle/payload/prepare.rb +1 -2
  19. data/lib/castle/session.rb +1 -1
  20. data/lib/castle/version.rb +1 -1
  21. data/lib/castle.rb +1 -3
  22. data/spec/integration/rails/rails_spec.rb +9 -3
  23. data/spec/integration/rails/support/application.rb +2 -2
  24. data/spec/integration/rails/support/home_controller.rb +4 -30
  25. data/spec/lib/castle/api/approve_device_spec.rb +2 -6
  26. data/spec/lib/castle/api/authenticate_spec.rb +22 -25
  27. data/spec/lib/castle/api/end_impersonation_spec.rb +8 -14
  28. data/spec/lib/castle/api/get_device_spec.rb +1 -3
  29. data/spec/lib/castle/api/get_devices_for_user_spec.rb +1 -3
  30. data/spec/lib/castle/api/report_device_spec.rb +2 -6
  31. data/spec/lib/castle/api/start_impersonation_spec.rb +8 -14
  32. data/spec/lib/castle/api/track_spec.rb +9 -16
  33. data/spec/lib/castle/client_id/extract_spec.rb +2 -9
  34. data/spec/lib/castle/client_spec.rb +32 -78
  35. data/spec/lib/castle/command_spec.rb +3 -3
  36. data/spec/lib/castle/commands/approve_device_spec.rb +2 -2
  37. data/spec/lib/castle/commands/authenticate_spec.rb +17 -24
  38. data/spec/lib/castle/commands/end_impersonation_spec.rb +14 -21
  39. data/spec/lib/castle/commands/filter_spec.rb +15 -15
  40. data/spec/lib/castle/commands/get_device_spec.rb +2 -2
  41. data/spec/lib/castle/commands/get_devices_for_user_spec.rb +2 -2
  42. data/spec/lib/castle/commands/log_spec.rb +15 -15
  43. data/spec/lib/castle/commands/report_device_spec.rb +2 -2
  44. data/spec/lib/castle/commands/risk_spec.rb +15 -15
  45. data/spec/lib/castle/commands/start_impersonation_spec.rb +14 -21
  46. data/spec/lib/castle/commands/track_spec.rb +19 -24
  47. data/spec/lib/castle/configuration_spec.rb +1 -1
  48. data/spec/lib/castle/context/get_default_spec.rb +9 -8
  49. data/spec/lib/castle/context/prepare_spec.rb +3 -4
  50. data/spec/lib/castle/core/process_response_spec.rb +3 -6
  51. data/spec/lib/castle/core/process_webhook_spec.rb +12 -6
  52. data/spec/lib/castle/core/send_request_spec.rb +7 -11
  53. data/spec/lib/castle/failover/strategy_spec.rb +5 -5
  54. data/spec/lib/castle/headers/extract_spec.rb +1 -1
  55. data/spec/lib/castle/headers/filter_spec.rb +6 -3
  56. data/spec/lib/castle/headers/format_spec.rb +5 -5
  57. data/spec/lib/castle/ips/extract_spec.rb +2 -6
  58. data/spec/lib/castle/logger_spec.rb +2 -1
  59. data/spec/lib/castle/payload/prepare_spec.rb +4 -7
  60. data/spec/lib/castle/secure_mode_spec.rb +1 -3
  61. data/spec/lib/castle/session_spec.rb +1 -5
  62. data/spec/lib/castle/singleton_configuration_spec.rb +1 -1
  63. data/spec/lib/castle/utils/clone_spec.rb +1 -1
  64. data/spec/lib/castle/utils/merge_spec.rb +2 -4
  65. data/spec/lib/castle/validators/not_supported_spec.rb +1 -6
  66. data/spec/lib/castle/validators/present_spec.rb +2 -9
  67. data/spec/lib/castle/verdict_spec.rb +3 -3
  68. data/spec/lib/castle/webhooks/verify_spec.rb +12 -6
  69. data/spec/lib/castle_spec.rb +5 -7
  70. data/spec/support/shared_examples/action_request.rb +16 -34
  71. data/spec/support/shared_examples/configuration.rb +14 -16
  72. metadata +48 -48
@@ -22,9 +22,12 @@ describe Castle::API::StartImpersonation do
22
22
  before do
23
23
  Timecop.freeze(time_now)
24
24
  stub_const('Castle::VERSION', '2.2.0')
25
- stub_request(:any, /api.castle.io/)
26
- .with(basic_auth: ['', 'secret'])
27
- .to_return(status: 200, body: response_body, headers: {})
25
+ stub_request(:any, /api.castle.io/).with(basic_auth: ['', 'secret']).to_return(
26
+ status: 200,
27
+ body: response_body,
28
+ headers: {
29
+ }
30
+ )
28
31
  end
29
32
 
30
33
  after { Timecop.return }
@@ -32,19 +35,10 @@ describe Castle::API::StartImpersonation do
32
35
  describe 'call' do
33
36
  let(:impersonator) { 'test@castle.io' }
34
37
  let(:request_body) do
35
- {
36
- user_id: '1234',
37
- sent_at: time_auto,
38
- properties: {
39
- impersonator: impersonator
40
- },
41
- context: context
42
- }
38
+ { user_id: '1234', sent_at: time_auto, properties: { impersonator: impersonator }, context: context }
43
39
  end
44
40
  let(:response_body) { { success: true }.to_json }
45
- let(:options) do
46
- { user_id: '1234', properties: { impersonator: impersonator }, context: context }
47
- end
41
+ let(:options) { { user_id: '1234', properties: { impersonator: impersonator }, context: context } }
48
42
 
49
43
  context 'when used with symbol keys' do
50
44
  before { call }
@@ -24,17 +24,18 @@ describe Castle::API::Track do
24
24
  before do
25
25
  Timecop.freeze(time_now)
26
26
  stub_const('Castle::VERSION', '2.2.0')
27
- stub_request(:any, /api.castle.io/)
28
- .with(basic_auth: ['', 'secret'])
29
- .to_return(status: 200, body: response_body, headers: {})
27
+ stub_request(:any, /api.castle.io/).with(basic_auth: ['', 'secret']).to_return(
28
+ status: 200,
29
+ body: response_body,
30
+ headers: {
31
+ }
32
+ )
30
33
  end
31
34
 
32
35
  after { Timecop.return }
33
36
 
34
37
  describe 'track' do
35
- let(:request_body) do
36
- { event: '$login.succeeded', context: context, user_id: '1234', sent_at: time_auto }
37
- end
38
+ let(:request_body) { { event: '$login.succeeded', context: context, user_id: '1234', sent_at: time_auto } }
38
39
 
39
40
  before { call }
40
41
 
@@ -48,17 +49,9 @@ describe Castle::API::Track do
48
49
  end
49
50
 
50
51
  context 'when passed timestamp in options and no defined timestamp' do
51
- let(:options) do
52
- { event: '$login.succeeded', user_id: '1234', timestamp: time_user, context: context }
53
- end
52
+ let(:options) { { event: '$login.succeeded', user_id: '1234', timestamp: time_user, context: context } }
54
53
  let(:request_body) do
55
- {
56
- event: '$login.succeeded',
57
- user_id: '1234',
58
- context: context,
59
- timestamp: time_user,
60
- sent_at: time_auto
61
- }
54
+ { event: '$login.succeeded', user_id: '1234', context: context, timestamp: time_user, sent_at: time_auto }
62
55
  end
63
56
 
64
57
  it do
@@ -11,20 +11,13 @@ describe Castle::ClientId::Extract do
11
11
  let(:env) { Rack::MockRequest.env_for('/', headers) }
12
12
 
13
13
  context 'with client_id' do
14
- let(:headers) do
15
- {
16
- 'HTTP_X_FORWARDED_FOR' => '1.2.3.4',
17
- 'HTTP_COOKIE' => "__cid=#{client_id_cookie};other=efgh"
18
- }
19
- end
14
+ let(:headers) { { 'HTTP_X_FORWARDED_FOR' => '1.2.3.4', 'HTTP_COOKIE' => "__cid=#{client_id_cookie};other=efgh" } }
20
15
 
21
16
  it { expect(extractor.call).to eql(client_id_cookie) }
22
17
  end
23
18
 
24
19
  context 'with X-Castle-Client-Id header' do
25
- let(:headers) do
26
- { 'HTTP_X_FORWARDED_FOR' => '1.2.3.4', 'HTTP_X_CASTLE_CLIENT_ID' => client_id_header }
27
- end
20
+ let(:headers) { { 'HTTP_X_FORWARDED_FOR' => '1.2.3.4', 'HTTP_X_CASTLE_CLIENT_ID' => client_id_header } }
28
21
 
29
22
  it 'appends the client_id' do
30
23
  expect(extractor.call).to eql(client_id_header)
@@ -9,20 +9,17 @@ describe Castle::Client do
9
9
  '/',
10
10
  'HTTP_USER_AGENT' => ua,
11
11
  'HTTP_X_FORWARDED_FOR' => ip,
12
- 'HTTP_COOKIE' => "__cid=#{cookie_id};other=efgh"
12
+ 'HTTP_COOKIE' => "__cid=#{cookie_id};other=efgh",
13
+ 'HTTP_CONTENT_LENGTH' => '0'
13
14
  )
14
15
  end
15
16
  let(:request) { Rack::Request.new(env) }
16
17
  let(:client) { described_class.from_request(request) }
17
18
  let(:request_to_context) { Castle::Context::Prepare.call(request) }
18
- let(:client_with_user_timestamp) do
19
- described_class.new(context: request_to_context, timestamp: time_user)
20
- end
19
+ let(:client_with_user_timestamp) { described_class.new(context: request_to_context, timestamp: time_user) }
21
20
  let(:client_with_no_timestamp) { described_class.new(context: request_to_context) }
22
21
 
23
- let(:headers) do
24
- { 'Content-Length': '0', 'User-Agent': ua, 'X-Forwarded-For': ip.to_s, 'Cookie': true }
25
- end
22
+ let(:headers) { { 'Content-Length': '0', 'User-Agent': ua, 'X-Forwarded-For': ip.to_s, Cookie: true } }
26
23
  let(:context) do
27
24
  {
28
25
  client_id: 'abcd',
@@ -44,9 +41,12 @@ describe Castle::Client do
44
41
  let(:response_code) { 200 }
45
42
 
46
43
  let(:stub_response) do
47
- stub_request(:any, /api.castle.io/)
48
- .with(basic_auth: ['', 'secret'])
49
- .to_return(status: response_code, body: response_body, headers: {})
44
+ stub_request(:any, /api.castle.io/).with(basic_auth: ['', 'secret']).to_return(
45
+ status: response_code,
46
+ body: response_body,
47
+ headers: {
48
+ }
49
+ )
50
50
  end
51
51
 
52
52
  before do
@@ -95,9 +95,7 @@ describe Castle::Client do
95
95
  context 'when request is not successful' do
96
96
  let(:response_body) { {}.to_json }
97
97
 
98
- it do
99
- expect { client.end_impersonation(options) }.to raise_error(Castle::ImpersonationFailed)
100
- end
98
+ it { expect { client.end_impersonation(options) }.to raise_error(Castle::ImpersonationFailed) }
101
99
  end
102
100
  end
103
101
 
@@ -130,9 +128,7 @@ describe Castle::Client do
130
128
  context 'when request is not successful' do
131
129
  let(:response_body) { {}.to_json }
132
130
 
133
- it do
134
- expect { client.start_impersonation(options) }.to raise_error(Castle::ImpersonationFailed)
135
- end
131
+ it { expect { client.start_impersonation(options) }.to raise_error(Castle::ImpersonationFailed) }
136
132
  end
137
133
  end
138
134
 
@@ -140,13 +136,7 @@ describe Castle::Client do
140
136
  let(:options) { { event: '$login.succeeded', user_id: '1234' } }
141
137
  let(:request_response) { client.authenticate(options) }
142
138
  let(:request_body) do
143
- {
144
- event: '$login.succeeded',
145
- user_id: '1234',
146
- context: context,
147
- timestamp: time_auto,
148
- sent_at: time_auto
149
- }
139
+ { event: '$login.succeeded', user_id: '1234', context: context, timestamp: time_auto, sent_at: time_auto }
150
140
  end
151
141
 
152
142
  context 'when used with symbol keys' do
@@ -162,13 +152,7 @@ describe Castle::Client do
162
152
  let(:client) { client_with_no_timestamp }
163
153
  let(:options) { { event: '$login.succeeded', user_id: '1234', timestamp: time_user } }
164
154
  let(:request_body) do
165
- {
166
- event: '$login.succeeded',
167
- user_id: '1234',
168
- context: context,
169
- timestamp: time_user,
170
- sent_at: time_auto
171
- }
155
+ { event: '$login.succeeded', user_id: '1234', context: context, timestamp: time_user, sent_at: time_auto }
172
156
  end
173
157
 
174
158
  it do
@@ -181,13 +165,7 @@ describe Castle::Client do
181
165
  context 'with client initialized with timestamp' do
182
166
  let(:client) { client_with_user_timestamp }
183
167
  let(:request_body) do
184
- {
185
- event: '$login.succeeded',
186
- user_id: '1234',
187
- context: context,
188
- timestamp: time_user,
189
- sent_at: time_auto
190
- }
168
+ { event: '$login.succeeded', user_id: '1234', context: context, timestamp: time_user, sent_at: time_auto }
191
169
  end
192
170
 
193
171
  it do
@@ -230,19 +208,15 @@ describe Castle::Client do
230
208
  end
231
209
 
232
210
  it { assert_not_requested :post, 'https://api.castle.io/v1/authenticate' }
233
- it { expect(request_response[:policy][:action]).to be_eql(Castle::Verdict::ALLOW) }
234
- it { expect(request_response[:action]).to be_eql(Castle::Verdict::ALLOW) }
235
- it { expect(request_response[:user_id]).to be_eql('1234') }
211
+ it { expect(request_response[:policy][:action]).to eql(Castle::Verdict::ALLOW) }
212
+ it { expect(request_response[:action]).to eql(Castle::Verdict::ALLOW) }
213
+ it { expect(request_response[:user_id]).to eql('1234') }
236
214
  it { expect(request_response[:failover]).to be true }
237
- it { expect(request_response[:failover_reason]).to be_eql('Castle is set to do not track.') }
215
+ it { expect(request_response[:failover_reason]).to eql('Castle is set to do not track.') }
238
216
  end
239
217
 
240
218
  context 'when request with fail' do
241
- before do
242
- allow(Castle::API).to receive(:send_request).and_raise(
243
- Castle::RequestError.new(Timeout::Error)
244
- )
245
- end
219
+ before { allow(Castle::API).to receive(:send_request).and_raise(Castle::RequestError.new(Timeout::Error)) }
246
220
 
247
221
  context 'with request error and throw strategy' do
248
222
  before { allow(Castle.config).to receive(:failover_strategy).and_return(:throw) }
@@ -252,18 +226,16 @@ describe Castle::Client do
252
226
 
253
227
  context 'with request error and not throw on eg deny strategy' do
254
228
  it { assert_not_requested :post, 'https://:secret@api.castle.io/v1/authenticate' }
255
- it { expect(request_response[:policy][:action]).to be_eql('allow') }
256
- it { expect(request_response[:action]).to be_eql('allow') }
257
- it { expect(request_response[:user_id]).to be_eql('1234') }
229
+ it { expect(request_response[:policy][:action]).to eql('allow') }
230
+ it { expect(request_response[:action]).to eql('allow') }
231
+ it { expect(request_response[:user_id]).to eql('1234') }
258
232
  it { expect(request_response[:failover]).to be true }
259
- it { expect(request_response[:failover_reason]).to be_eql('Castle::RequestError') }
233
+ it { expect(request_response[:failover_reason]).to eql('Castle::RequestError') }
260
234
  end
261
235
  end
262
236
 
263
237
  context 'when request is internal server error' do
264
- before do
265
- allow(Castle::API).to receive(:send_request).and_raise(Castle::InternalServerError)
266
- end
238
+ before { allow(Castle::API).to receive(:send_request).and_raise(Castle::InternalServerError) }
267
239
 
268
240
  describe 'throw strategy' do
269
241
  before { allow(Castle.config).to receive(:failover_strategy).and_return(:throw) }
@@ -273,24 +245,18 @@ describe Castle::Client do
273
245
 
274
246
  describe 'not throw on eg deny strategy' do
275
247
  it { assert_not_requested :post, 'https://:secret@api.castle.io/v1/authenticate' }
276
- it { expect(request_response[:policy][:action]).to be_eql('allow') }
277
- it { expect(request_response[:action]).to be_eql('allow') }
278
- it { expect(request_response[:user_id]).to be_eql('1234') }
248
+ it { expect(request_response[:policy][:action]).to eql('allow') }
249
+ it { expect(request_response[:action]).to eql('allow') }
250
+ it { expect(request_response[:user_id]).to eql('1234') }
279
251
  it { expect(request_response[:failover]).to be true }
280
- it { expect(request_response[:failover_reason]).to be_eql('Castle::InternalServerError') }
252
+ it { expect(request_response[:failover_reason]).to eql('Castle::InternalServerError') }
281
253
  end
282
254
  end
283
255
  end
284
256
 
285
257
  describe 'track' do
286
258
  let(:request_body) do
287
- {
288
- event: '$login.succeeded',
289
- context: context,
290
- user_id: '1234',
291
- timestamp: time_auto,
292
- sent_at: time_auto
293
- }
259
+ { event: '$login.succeeded', context: context, user_id: '1234', timestamp: time_auto, sent_at: time_auto }
294
260
  end
295
261
 
296
262
  before { client.track(options) }
@@ -308,13 +274,7 @@ describe Castle::Client do
308
274
  let(:client) { client_with_no_timestamp }
309
275
  let(:options) { { event: '$login.succeeded', user_id: '1234', timestamp: time_user } }
310
276
  let(:request_body) do
311
- {
312
- event: '$login.succeeded',
313
- user_id: '1234',
314
- context: context,
315
- timestamp: time_user,
316
- sent_at: time_auto
317
- }
277
+ { event: '$login.succeeded', user_id: '1234', context: context, timestamp: time_user, sent_at: time_auto }
318
278
  end
319
279
 
320
280
  it do
@@ -327,13 +287,7 @@ describe Castle::Client do
327
287
  context 'with client initialized with timestamp' do
328
288
  let(:client) { client_with_user_timestamp }
329
289
  let(:request_body) do
330
- {
331
- event: '$login.succeeded',
332
- context: context,
333
- user_id: '1234',
334
- timestamp: time_user,
335
- sent_at: time_auto
336
- }
290
+ { event: '$login.succeeded', context: context, user_id: '1234', timestamp: time_user, sent_at: time_auto }
337
291
  end
338
292
 
339
293
  it do
@@ -3,7 +3,7 @@
3
3
  describe Castle::Command do
4
4
  subject(:command) { described_class.new('go', { id: '1' }, :post) }
5
5
 
6
- it { expect(command.path).to be_eql('go') }
7
- it { expect(command.data).to be_eql(id: '1') }
8
- it { expect(command.method).to be_eql(:post) }
6
+ it { expect(command.path).to eql('go') }
7
+ it { expect(command.data).to eql(id: '1') }
8
+ it { expect(command.method).to be(:post) }
9
9
  end
@@ -16,8 +16,8 @@ describe Castle::Commands::ApproveDevice do
16
16
  end
17
17
 
18
18
  context 'with device_token' do
19
- it { expect(command.method).to be_eql(:put) }
20
- it { expect(command.path).to be_eql("devices/#{device_token}/approve") }
19
+ it { expect(command.method).to be(:put) }
20
+ it { expect(command.path).to eql("devices/#{device_token}/approve") }
21
21
  it { expect(command.data).to be_nil }
22
22
  end
23
23
  end
@@ -4,9 +4,7 @@ describe Castle::Commands::Authenticate do
4
4
  subject(:instance) { described_class }
5
5
 
6
6
  let(:context) { { test: { test1: '1' } } }
7
- let(:default_payload) do
8
- { event: '$login.authenticate', user_id: '1234', sent_at: time_auto, context: context }
9
- end
7
+ let(:default_payload) { { event: '$login.authenticate', user_id: '1234', sent_at: time_auto, context: context } }
10
8
 
11
9
  let(:time_now) { Time.now }
12
10
  let(:time_auto) { time_now.utc.iso8601(3) }
@@ -22,45 +20,45 @@ describe Castle::Commands::Authenticate do
22
20
  let(:payload) { default_payload.merge(properties: { test: '1' }) }
23
21
  let(:command_data) { default_payload.merge(properties: { test: '1' }, context: context) }
24
22
 
25
- it { expect(command.method).to be_eql(:post) }
26
- it { expect(command.path).to be_eql('authenticate') }
27
- it { expect(command.data).to be_eql(command_data) }
23
+ it { expect(command.method).to be(:post) }
24
+ it { expect(command.path).to eql('authenticate') }
25
+ it { expect(command.data).to eql(command_data) }
28
26
  end
29
27
 
30
28
  context 'with user_traits' do
31
29
  let(:payload) { default_payload.merge(user_traits: { test: '1' }) }
32
30
  let(:command_data) { default_payload.merge(user_traits: { test: '1' }, context: context) }
33
31
 
34
- it { expect(command.method).to be_eql(:post) }
35
- it { expect(command.path).to be_eql('authenticate') }
36
- it { expect(command.data).to be_eql(command_data) }
32
+ it { expect(command.method).to be(:post) }
33
+ it { expect(command.path).to eql('authenticate') }
34
+ it { expect(command.data).to eql(command_data) }
37
35
  end
38
36
 
39
37
  context 'when active true' do
40
38
  let(:payload) { default_payload.merge(context: context.merge(active: true)) }
41
39
  let(:command_data) { default_payload.merge(context: context.merge(active: true)) }
42
40
 
43
- it { expect(command.method).to be_eql(:post) }
44
- it { expect(command.path).to be_eql('authenticate') }
45
- it { expect(command.data).to be_eql(command_data) }
41
+ it { expect(command.method).to be(:post) }
42
+ it { expect(command.path).to eql('authenticate') }
43
+ it { expect(command.data).to eql(command_data) }
46
44
  end
47
45
 
48
46
  context 'when active false' do
49
47
  let(:payload) { default_payload.merge(context: context.merge(active: false)) }
50
48
  let(:command_data) { default_payload.merge(context: context.merge(active: false)) }
51
49
 
52
- it { expect(command.method).to be_eql(:post) }
53
- it { expect(command.path).to be_eql('authenticate') }
54
- it { expect(command.data).to be_eql(command_data) }
50
+ it { expect(command.method).to be(:post) }
51
+ it { expect(command.path).to eql('authenticate') }
52
+ it { expect(command.data).to eql(command_data) }
55
53
  end
56
54
 
57
55
  context 'when active string' do
58
56
  let(:payload) { default_payload.merge(context: context.merge(active: 'string')) }
59
57
  let(:command_data) { default_payload.merge(context: context) }
60
58
 
61
- it { expect(command.method).to be_eql(:post) }
62
- it { expect(command.path).to be_eql('authenticate') }
63
- it { expect(command.data).to be_eql(command_data) }
59
+ it { expect(command.method).to be(:post) }
60
+ it { expect(command.path).to eql('authenticate') }
61
+ it { expect(command.data).to eql(command_data) }
64
62
  end
65
63
  end
66
64
 
@@ -70,12 +68,7 @@ describe Castle::Commands::Authenticate do
70
68
  context 'with event not present' do
71
69
  let(:payload) { {} }
72
70
 
73
- it do
74
- expect { validate! }.to raise_error(
75
- Castle::InvalidParametersError,
76
- 'event is missing or empty'
77
- )
78
- end
71
+ it { expect { validate! }.to raise_error(Castle::InvalidParametersError, 'event is missing or empty') }
79
72
  end
80
73
 
81
74
  context 'with user_id not present' do
@@ -19,40 +19,38 @@ describe Castle::Commands::EndImpersonation do
19
19
 
20
20
  context 'with impersonator' do
21
21
  let(:payload) { default_payload.merge(properties: { impersonator: impersonator }) }
22
- let(:command_data) do
23
- default_payload.merge(properties: { impersonator: impersonator }, context: context)
24
- end
22
+ let(:command_data) { default_payload.merge(properties: { impersonator: impersonator }, context: context) }
25
23
 
26
- it { expect(command.method).to be_eql(:delete) }
27
- it { expect(command.path).to be_eql('impersonate') }
28
- it { expect(command.data).to be_eql(command_data) }
24
+ it { expect(command.method).to be(:delete) }
25
+ it { expect(command.path).to eql('impersonate') }
26
+ it { expect(command.data).to eql(command_data) }
29
27
  end
30
28
 
31
29
  context 'when active true' do
32
30
  let(:payload) { default_payload.merge(context: context.merge(active: true)) }
33
31
  let(:command_data) { default_payload.merge(context: context.merge(active: true)) }
34
32
 
35
- it { expect(command.method).to be_eql(:delete) }
36
- it { expect(command.path).to be_eql('impersonate') }
37
- it { expect(command.data).to be_eql(command_data) }
33
+ it { expect(command.method).to be(:delete) }
34
+ it { expect(command.path).to eql('impersonate') }
35
+ it { expect(command.data).to eql(command_data) }
38
36
  end
39
37
 
40
38
  context 'when active false' do
41
39
  let(:payload) { default_payload.merge(context: context.merge(active: false)) }
42
40
  let(:command_data) { default_payload.merge(context: context.merge(active: false)) }
43
41
 
44
- it { expect(command.method).to be_eql(:delete) }
45
- it { expect(command.path).to be_eql('impersonate') }
46
- it { expect(command.data).to be_eql(command_data) }
42
+ it { expect(command.method).to be(:delete) }
43
+ it { expect(command.path).to eql('impersonate') }
44
+ it { expect(command.data).to eql(command_data) }
47
45
  end
48
46
 
49
47
  context 'when active string' do
50
48
  let(:payload) { default_payload.merge(context: context.merge(active: 'string')) }
51
49
  let(:command_data) { default_payload.merge(context: context) }
52
50
 
53
- it { expect(command.method).to be_eql(:delete) }
54
- it { expect(command.path).to be_eql('impersonate') }
55
- it { expect(command.data).to be_eql(command_data) }
51
+ it { expect(command.method).to be(:delete) }
52
+ it { expect(command.path).to eql('impersonate') }
53
+ it { expect(command.data).to eql(command_data) }
56
54
  end
57
55
  end
58
56
 
@@ -62,12 +60,7 @@ describe Castle::Commands::EndImpersonation do
62
60
  context 'when user_id not present' do
63
61
  let(:payload) { {} }
64
62
 
65
- it do
66
- expect { validate! }.to raise_error(
67
- Castle::InvalidParametersError,
68
- 'user_id is missing or empty'
69
- )
70
- end
63
+ it { expect { validate! }.to raise_error(Castle::InvalidParametersError, 'user_id is missing or empty') }
71
64
  end
72
65
 
73
66
  context 'when user_id present' do
@@ -28,45 +28,45 @@ describe Castle::Commands::Filter do
28
28
  let(:payload) { default_payload.merge(properties: { test: '1' }) }
29
29
  let(:command_data) { default_payload.merge(properties: { test: '1' }, context: context) }
30
30
 
31
- it { expect(command.method).to be_eql(:post) }
32
- it { expect(command.path).to be_eql('filter') }
33
- it { expect(command.data).to be_eql(command_data) }
31
+ it { expect(command.method).to be(:post) }
32
+ it { expect(command.path).to eql('filter') }
33
+ it { expect(command.data).to eql(command_data) }
34
34
  end
35
35
 
36
36
  context 'with user_traits' do
37
37
  let(:payload) { default_payload.merge(user_traits: { test: '1' }) }
38
38
  let(:command_data) { default_payload.merge(user_traits: { test: '1' }, context: context) }
39
39
 
40
- it { expect(command.method).to be_eql(:post) }
41
- it { expect(command.path).to be_eql('filter') }
42
- it { expect(command.data).to be_eql(command_data) }
40
+ it { expect(command.method).to be(:post) }
41
+ it { expect(command.path).to eql('filter') }
42
+ it { expect(command.data).to eql(command_data) }
43
43
  end
44
44
 
45
45
  context 'when active true' do
46
46
  let(:payload) { default_payload.merge(context: context.merge(active: true)) }
47
47
  let(:command_data) { default_payload.merge(context: context.merge(active: true)) }
48
48
 
49
- it { expect(command.method).to be_eql(:post) }
50
- it { expect(command.path).to be_eql('filter') }
51
- it { expect(command.data).to be_eql(command_data) }
49
+ it { expect(command.method).to be(:post) }
50
+ it { expect(command.path).to eql('filter') }
51
+ it { expect(command.data).to eql(command_data) }
52
52
  end
53
53
 
54
54
  context 'when active false' do
55
55
  let(:payload) { default_payload.merge(context: context.merge(active: false)) }
56
56
  let(:command_data) { default_payload.merge(context: context.merge(active: false)) }
57
57
 
58
- it { expect(command.method).to be_eql(:post) }
59
- it { expect(command.path).to be_eql('filter') }
60
- it { expect(command.data).to be_eql(command_data) }
58
+ it { expect(command.method).to be(:post) }
59
+ it { expect(command.path).to eql('filter') }
60
+ it { expect(command.data).to eql(command_data) }
61
61
  end
62
62
 
63
63
  context 'when active string' do
64
64
  let(:payload) { default_payload.merge(context: context.merge(active: 'string')) }
65
65
  let(:command_data) { default_payload.merge(context: context) }
66
66
 
67
- it { expect(command.method).to be_eql(:post) }
68
- it { expect(command.path).to be_eql('filter') }
69
- it { expect(command.data).to be_eql(command_data) }
67
+ it { expect(command.method).to be(:post) }
68
+ it { expect(command.path).to eql('filter') }
69
+ it { expect(command.data).to eql(command_data) }
70
70
  end
71
71
  end
72
72
  end
@@ -16,8 +16,8 @@ describe Castle::Commands::GetDevice do
16
16
  end
17
17
 
18
18
  context 'with device_token' do
19
- it { expect(command.method).to be_eql(:get) }
20
- it { expect(command.path).to be_eql("devices/#{device_token}") }
19
+ it { expect(command.method).to be(:get) }
20
+ it { expect(command.path).to eql("devices/#{device_token}") }
21
21
  it { expect(command.data).to be_nil }
22
22
  end
23
23
  end
@@ -16,8 +16,8 @@ describe Castle::Commands::GetDevicesForUser do
16
16
  end
17
17
 
18
18
  context 'with user_id' do
19
- it { expect(command.method).to be_eql(:get) }
20
- it { expect(command.path).to be_eql("users/#{user_id}/devices") }
19
+ it { expect(command.method).to be(:get) }
20
+ it { expect(command.path).to eql("users/#{user_id}/devices") }
21
21
  it { expect(command.data).to be_nil }
22
22
  end
23
23
  end
@@ -29,45 +29,45 @@ describe Castle::Commands::Log do
29
29
  let(:payload) { default_payload.merge(properties: { test: '1' }) }
30
30
  let(:command_data) { default_payload.merge(properties: { test: '1' }, context: context) }
31
31
 
32
- it { expect(command.method).to be_eql(:post) }
33
- it { expect(command.path).to be_eql('log') }
34
- it { expect(command.data).to be_eql(command_data) }
32
+ it { expect(command.method).to be(:post) }
33
+ it { expect(command.path).to eql('log') }
34
+ it { expect(command.data).to eql(command_data) }
35
35
  end
36
36
 
37
37
  context 'with user_traits' do
38
38
  let(:payload) { default_payload.merge(user_traits: { test: '1' }) }
39
39
  let(:command_data) { default_payload.merge(user_traits: { test: '1' }, context: context) }
40
40
 
41
- it { expect(command.method).to be_eql(:post) }
42
- it { expect(command.path).to be_eql('log') }
43
- it { expect(command.data).to be_eql(command_data) }
41
+ it { expect(command.method).to be(:post) }
42
+ it { expect(command.path).to eql('log') }
43
+ it { expect(command.data).to eql(command_data) }
44
44
  end
45
45
 
46
46
  context 'when active true' do
47
47
  let(:payload) { default_payload.merge(context: context.merge(active: true)) }
48
48
  let(:command_data) { default_payload.merge(context: context.merge(active: true)) }
49
49
 
50
- it { expect(command.method).to be_eql(:post) }
51
- it { expect(command.path).to be_eql('log') }
52
- it { expect(command.data).to be_eql(command_data) }
50
+ it { expect(command.method).to be(:post) }
51
+ it { expect(command.path).to eql('log') }
52
+ it { expect(command.data).to eql(command_data) }
53
53
  end
54
54
 
55
55
  context 'when active false' do
56
56
  let(:payload) { default_payload.merge(context: context.merge(active: false)) }
57
57
  let(:command_data) { default_payload.merge(context: context.merge(active: false)) }
58
58
 
59
- it { expect(command.method).to be_eql(:post) }
60
- it { expect(command.path).to be_eql('log') }
61
- it { expect(command.data).to be_eql(command_data) }
59
+ it { expect(command.method).to be(:post) }
60
+ it { expect(command.path).to eql('log') }
61
+ it { expect(command.data).to eql(command_data) }
62
62
  end
63
63
 
64
64
  context 'when active string' do
65
65
  let(:payload) { default_payload.merge(context: context.merge(active: 'string')) }
66
66
  let(:command_data) { default_payload.merge(context: context) }
67
67
 
68
- it { expect(command.method).to be_eql(:post) }
69
- it { expect(command.path).to be_eql('log') }
70
- it { expect(command.data).to be_eql(command_data) }
68
+ it { expect(command.method).to be(:post) }
69
+ it { expect(command.path).to eql('log') }
70
+ it { expect(command.data).to eql(command_data) }
71
71
  end
72
72
  end
73
73
  end
@@ -16,8 +16,8 @@ describe Castle::Commands::ReportDevice do
16
16
  end
17
17
 
18
18
  context 'with device_token' do
19
- it { expect(command.method).to be_eql(:put) }
20
- it { expect(command.path).to be_eql("devices/#{device_token}/report") }
19
+ it { expect(command.method).to be(:put) }
20
+ it { expect(command.path).to eql("devices/#{device_token}/report") }
21
21
  it { expect(command.data).to be_nil }
22
22
  end
23
23
  end