castle-rb 7.2.0 → 8.1.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 (140) 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/list_items/archive.rb +23 -0
  6. data/lib/castle/api/list_items/count.rb +22 -0
  7. data/lib/castle/api/list_items/create.rb +22 -0
  8. data/lib/castle/api/list_items/get.rb +22 -0
  9. data/lib/castle/api/list_items/query.rb +22 -0
  10. data/lib/castle/api/list_items/unarchive.rb +22 -0
  11. data/lib/castle/api/list_items/update.rb +22 -0
  12. data/lib/castle/api/lists/create.rb +23 -0
  13. data/lib/castle/api/lists/delete.rb +22 -0
  14. data/lib/castle/api/lists/get.rb +22 -0
  15. data/lib/castle/api/lists/get_all.rb +22 -0
  16. data/lib/castle/api/lists/query.rb +22 -0
  17. data/lib/castle/api/lists/update.rb +22 -0
  18. data/lib/castle/api/log.rb +2 -10
  19. data/lib/castle/api/risk.rb +2 -10
  20. data/lib/castle/api/start_impersonation.rb +1 -3
  21. data/lib/castle/api/track.rb +1 -3
  22. data/lib/castle/client.rb +4 -5
  23. data/lib/castle/client_actions/list_items.rb +44 -0
  24. data/lib/castle/client_actions/lists.rb +39 -0
  25. data/lib/castle/commands/list_items/archive.rb +24 -0
  26. data/lib/castle/commands/list_items/count.rb +23 -0
  27. data/lib/castle/commands/list_items/create.rb +22 -0
  28. data/lib/castle/commands/list_items/get.rb +23 -0
  29. data/lib/castle/commands/list_items/query.rb +24 -0
  30. data/lib/castle/commands/list_items/unarchive.rb +23 -0
  31. data/lib/castle/commands/list_items/update.rb +22 -0
  32. data/lib/castle/commands/lists/create.rb +21 -0
  33. data/lib/castle/commands/lists/delete.rb +20 -0
  34. data/lib/castle/commands/lists/get.rb +20 -0
  35. data/lib/castle/commands/lists/get_all.rb +17 -0
  36. data/lib/castle/commands/lists/query.rb +21 -0
  37. data/lib/castle/commands/lists/update.rb +22 -0
  38. data/lib/castle/commands/log.rb +1 -5
  39. data/lib/castle/commands/risk.rb +1 -5
  40. data/lib/castle/configuration.rb +2 -5
  41. data/lib/castle/core/process_response.rb +4 -3
  42. data/lib/castle/core/send_request.rb +1 -3
  43. data/lib/castle/errors.rb +4 -0
  44. data/lib/castle/headers/extract.rb +1 -3
  45. data/lib/castle/headers/filter.rb +2 -3
  46. data/lib/castle/payload/prepare.rb +1 -2
  47. data/lib/castle/session.rb +1 -1
  48. data/lib/castle/version.rb +1 -1
  49. data/lib/castle.rb +29 -3
  50. data/spec/integration/rails/rails_spec.rb +9 -3
  51. data/spec/integration/rails/support/application.rb +2 -2
  52. data/spec/integration/rails/support/home_controller.rb +4 -30
  53. data/spec/lib/castle/api/approve_device_spec.rb +3 -7
  54. data/spec/lib/castle/api/authenticate_spec.rb +23 -26
  55. data/spec/lib/castle/api/end_impersonation_spec.rb +9 -15
  56. data/spec/lib/castle/api/filter_spec.rb +1 -1
  57. data/spec/lib/castle/api/get_device_spec.rb +2 -4
  58. data/spec/lib/castle/api/get_devices_for_user_spec.rb +2 -4
  59. data/spec/lib/castle/api/list_items/archive_spec.rb +18 -0
  60. data/spec/lib/castle/api/list_items/count_spec.rb +21 -0
  61. data/spec/lib/castle/api/list_items/create_spec.rb +22 -0
  62. data/spec/lib/castle/api/list_items/get_spec.rb +18 -0
  63. data/spec/lib/castle/api/list_items/query_spec.rb +21 -0
  64. data/spec/lib/castle/api/list_items/unarchive_spec.rb +18 -0
  65. data/spec/lib/castle/api/list_items/update_spec.rb +22 -0
  66. data/spec/lib/castle/api/lists/create_spec.rb +21 -0
  67. data/spec/lib/castle/api/lists/delete_spec.rb +17 -0
  68. data/spec/lib/castle/api/lists/get_all_spec.rb +17 -0
  69. data/spec/lib/castle/api/lists/get_spec.rb +17 -0
  70. data/spec/lib/castle/api/lists/query_spec.rb +21 -0
  71. data/spec/lib/castle/api/lists/update_spec.rb +21 -0
  72. data/spec/lib/castle/api/log_spec.rb +1 -1
  73. data/spec/lib/castle/api/report_device_spec.rb +3 -7
  74. data/spec/lib/castle/api/risk_spec.rb +1 -1
  75. data/spec/lib/castle/api/start_impersonation_spec.rb +9 -15
  76. data/spec/lib/castle/api/track_spec.rb +10 -17
  77. data/spec/lib/castle/api_spec.rb +1 -1
  78. data/spec/lib/castle/client_id/extract_spec.rb +3 -10
  79. data/spec/lib/castle/client_spec.rb +38 -79
  80. data/spec/lib/castle/command_spec.rb +4 -4
  81. data/spec/lib/castle/commands/approve_device_spec.rb +3 -3
  82. data/spec/lib/castle/commands/authenticate_spec.rb +18 -25
  83. data/spec/lib/castle/commands/end_impersonation_spec.rb +15 -22
  84. data/spec/lib/castle/commands/filter_spec.rb +16 -16
  85. data/spec/lib/castle/commands/get_device_spec.rb +3 -3
  86. data/spec/lib/castle/commands/get_devices_for_user_spec.rb +3 -3
  87. data/spec/lib/castle/commands/list_items/archive_spec.rb +21 -0
  88. data/spec/lib/castle/commands/list_items/count_spec.rb +21 -0
  89. data/spec/lib/castle/commands/list_items/create_spec.rb +22 -0
  90. data/spec/lib/castle/commands/list_items/get_spec.rb +21 -0
  91. data/spec/lib/castle/commands/list_items/query_spec.rb +27 -0
  92. data/spec/lib/castle/commands/list_items/unarchive_spec.rb +21 -0
  93. data/spec/lib/castle/commands/list_items/update_spec.rb +21 -0
  94. data/spec/lib/castle/commands/lists/create_spec.rb +33 -0
  95. data/spec/lib/castle/commands/lists/delete_spec.rb +21 -0
  96. data/spec/lib/castle/commands/lists/get_all_spec.rb +11 -0
  97. data/spec/lib/castle/commands/lists/get_spec.rb +21 -0
  98. data/spec/lib/castle/commands/lists/query_spec.rb +27 -0
  99. data/spec/lib/castle/commands/lists/update_spec.rb +29 -0
  100. data/spec/lib/castle/commands/log_spec.rb +16 -16
  101. data/spec/lib/castle/commands/report_device_spec.rb +3 -3
  102. data/spec/lib/castle/commands/risk_spec.rb +16 -16
  103. data/spec/lib/castle/commands/start_impersonation_spec.rb +15 -22
  104. data/spec/lib/castle/commands/track_spec.rb +20 -25
  105. data/spec/lib/castle/configuration_spec.rb +2 -2
  106. data/spec/lib/castle/context/get_default_spec.rb +10 -9
  107. data/spec/lib/castle/context/merge_spec.rb +1 -1
  108. data/spec/lib/castle/context/prepare_spec.rb +4 -5
  109. data/spec/lib/castle/context/sanitize_spec.rb +1 -1
  110. data/spec/lib/castle/core/get_connection_spec.rb +1 -1
  111. data/spec/lib/castle/core/process_response_spec.rb +4 -7
  112. data/spec/lib/castle/core/process_webhook_spec.rb +13 -7
  113. data/spec/lib/castle/core/send_request_spec.rb +8 -12
  114. data/spec/lib/castle/failover/strategy_spec.rb +6 -6
  115. data/spec/lib/castle/headers/extract_spec.rb +2 -2
  116. data/spec/lib/castle/headers/filter_spec.rb +7 -4
  117. data/spec/lib/castle/headers/format_spec.rb +6 -6
  118. data/spec/lib/castle/ips/extract_spec.rb +3 -7
  119. data/spec/lib/castle/logger_spec.rb +3 -2
  120. data/spec/lib/castle/payload/prepare_spec.rb +5 -8
  121. data/spec/lib/castle/secure_mode_spec.rb +2 -4
  122. data/spec/lib/castle/session_spec.rb +2 -6
  123. data/spec/lib/castle/singleton_configuration_spec.rb +2 -2
  124. data/spec/lib/castle/utils/clean_invalid_chars_spec.rb +1 -1
  125. data/spec/lib/castle/utils/clone_spec.rb +2 -2
  126. data/spec/lib/castle/utils/deep_symbolize_keys_spec.rb +1 -1
  127. data/spec/lib/castle/utils/get_timestamp_spec.rb +1 -1
  128. data/spec/lib/castle/utils/merge_spec.rb +3 -5
  129. data/spec/lib/castle/validators/not_supported_spec.rb +2 -7
  130. data/spec/lib/castle/validators/present_spec.rb +3 -10
  131. data/spec/lib/castle/verdict_spec.rb +4 -4
  132. data/spec/lib/castle/version_spec.rb +1 -1
  133. data/spec/lib/castle/webhooks/verify_spec.rb +13 -7
  134. data/spec/lib/castle_spec.rb +6 -8
  135. data/spec/spec_helper.rb +2 -0
  136. data/spec/support/shared_examples/action_request.rb +16 -34
  137. data/spec/support/shared_examples/configuration.rb +14 -16
  138. data/spec/support/shared_examples/list_items.rb +52 -0
  139. data/spec/support/shared_examples/lists.rb +45 -0
  140. metadata +132 -48
@@ -4,14 +4,7 @@ RSpec.shared_examples_for 'action request' do |action|
4
4
  subject(:request_response) { client.send(action.to_sym, options) }
5
5
 
6
6
  let(:options) do
7
- {
8
- request_token: request_token,
9
- event: event,
10
- status: status,
11
- user: user,
12
- context: context,
13
- properties: properties
14
- }
7
+ { request_token: request_token, event: event, status: status, user: user, context: context, properties: properties }
15
8
  end
16
9
  let(:request_token) { '7e51335b-f4bc-4bc7-875d-b713fb61eb23-bf021a3022a1a302' }
17
10
  let(:event) { '$login' }
@@ -104,19 +97,15 @@ RSpec.shared_examples_for 'action request' do |action|
104
97
  end
105
98
 
106
99
  it { assert_not_requested :post, "https://api.castle.io/v1/#{action}" }
107
- it { expect(request_response[:policy][:action]).to be_eql(Castle::Verdict::ALLOW) }
108
- it { expect(request_response[:action]).to be_eql(Castle::Verdict::ALLOW) }
109
- it { expect(request_response[:user_id]).to be_eql('1234') }
100
+ it { expect(request_response[:policy][:action]).to eql(Castle::Verdict::ALLOW) }
101
+ it { expect(request_response[:action]).to eql(Castle::Verdict::ALLOW) }
102
+ it { expect(request_response[:user_id]).to eql('1234') }
110
103
  it { expect(request_response[:failover]).to be true }
111
- it { expect(request_response[:failover_reason]).to be_eql('Castle is set to do not track.') }
104
+ it { expect(request_response[:failover_reason]).to eql('Castle is set to do not track.') }
112
105
  end
113
106
 
114
107
  context 'when request with fail' do
115
- before do
116
- allow(Castle::API).to receive(:send_request).and_raise(
117
- Castle::RequestError.new(Timeout::Error)
118
- )
119
- end
108
+ before { allow(Castle::API).to receive(:send_request).and_raise(Castle::RequestError.new(Timeout::Error)) }
120
109
 
121
110
  context 'with request error and throw strategy' do
122
111
  before { allow(Castle.config).to receive(:failover_strategy).and_return(:throw) }
@@ -126,11 +115,11 @@ RSpec.shared_examples_for 'action request' do |action|
126
115
 
127
116
  context 'with request error and not throw on eg deny strategy' do
128
117
  it { assert_not_requested :post, "https:/:secret@api.castle.io/v1/#{action}" }
129
- it { expect(request_response[:policy][:action]).to be_eql('allow') }
130
- it { expect(request_response[:action]).to be_eql('allow') }
131
- it { expect(request_response[:user_id]).to be_eql('1234') }
118
+ it { expect(request_response[:policy][:action]).to eql('allow') }
119
+ it { expect(request_response[:action]).to eql('allow') }
120
+ it { expect(request_response[:user_id]).to eql('1234') }
132
121
  it { expect(request_response[:failover]).to be true }
133
- it { expect(request_response[:failover_reason]).to be_eql('Castle::RequestError') }
122
+ it { expect(request_response[:failover_reason]).to eql('Castle::RequestError') }
134
123
  end
135
124
  end
136
125
 
@@ -145,11 +134,11 @@ RSpec.shared_examples_for 'action request' do |action|
145
134
 
146
135
  describe 'not throw on eg deny strategy' do
147
136
  it { assert_not_requested :post, "https:/:secret@api.castle.io/v1/#{action}" }
148
- it { expect(request_response[:policy][:action]).to be_eql('allow') }
149
- it { expect(request_response[:action]).to be_eql('allow') }
150
- it { expect(request_response[:user_id]).to be_eql('1234') }
137
+ it { expect(request_response[:policy][:action]).to eql('allow') }
138
+ it { expect(request_response[:action]).to eql('allow') }
139
+ it { expect(request_response[:user_id]).to eql('1234') }
151
140
  it { expect(request_response[:failover]).to be true }
152
- it { expect(request_response[:failover_reason]).to be_eql('Castle::InternalServerError') }
141
+ it { expect(request_response[:failover_reason]).to eql('Castle::InternalServerError') }
153
142
  end
154
143
  end
155
144
 
@@ -158,9 +147,7 @@ RSpec.shared_examples_for 'action request' do |action|
158
147
  let(:response_body) { { type: 'bad_request', message: 'wrong params' }.to_json }
159
148
  let(:response_code) { 422 }
160
149
 
161
- it do
162
- expect { request_response }.to raise_error(Castle::InvalidParametersError, 'wrong params')
163
- end
150
+ it { expect { request_response }.to raise_error(Castle::InvalidParametersError, 'wrong params') }
164
151
  end
165
152
 
166
153
  describe 'throw InvalidParametersError for legacy endpoints' do
@@ -174,12 +161,7 @@ RSpec.shared_examples_for 'action request' do |action|
174
161
  let(:response_body) { { type: 'invalid_request_token', message: 'invalid token' }.to_json }
175
162
  let(:response_code) { 422 }
176
163
 
177
- it do
178
- expect { request_response }.to raise_error(
179
- Castle::InvalidRequestTokenError,
180
- 'invalid token'
181
- )
182
- end
164
+ it { expect { request_response }.to raise_error(Castle::InvalidRequestTokenError, 'invalid token') }
183
165
  end
184
166
  end
185
167
  end
@@ -3,69 +3,67 @@
3
3
  shared_examples 'configuration_host' do
4
4
  describe 'host' do
5
5
  context 'with default' do
6
- it { expect(config.base_url.host).to be_eql('api.castle.io') }
6
+ it { expect(config.base_url.host).to eql('api.castle.io') }
7
7
  end
8
8
 
9
9
  context 'with setter' do
10
10
  before { config.base_url = 'http://api.castle.dev/v2' }
11
11
 
12
- it { expect(config.base_url.host).to be_eql('api.castle.dev') }
12
+ it { expect(config.base_url.host).to eql('api.castle.dev') }
13
13
  end
14
14
  end
15
15
  end
16
16
 
17
17
  shared_examples 'configuration_request_timeout' do
18
18
  describe 'request_timeout' do
19
- it { expect(config.request_timeout).to be_eql(1000) }
19
+ it { expect(config.request_timeout).to be(1000) }
20
20
 
21
21
  context 'with setter' do
22
22
  let(:value) { 50.0 }
23
23
 
24
24
  before { config.request_timeout = value }
25
25
 
26
- it { expect(config.request_timeout).to be_eql(value) }
26
+ it { expect(config.request_timeout).to eql(value) }
27
27
  end
28
28
  end
29
29
  end
30
30
 
31
31
  shared_examples 'configuration_allowlisted' do
32
32
  describe 'allowlisted' do
33
- it { expect(config.allowlisted.size).to be_eql(0) }
33
+ it { expect(config.allowlisted.size).to be(0) }
34
34
 
35
35
  context 'with setter' do
36
36
  before { config.allowlisted = ['header'] }
37
37
 
38
- it { expect(config.allowlisted).to be_eql(['Header']) }
38
+ it { expect(config.allowlisted).to eql(['Header']) }
39
39
  end
40
40
  end
41
41
  end
42
42
 
43
43
  shared_examples 'configuration_denylisted' do
44
44
  describe 'denylisted' do
45
- it { expect(config.denylisted.size).to be_eql(0) }
45
+ it { expect(config.denylisted.size).to be(0) }
46
46
 
47
47
  context 'with setter' do
48
48
  before { config.denylisted = ['header'] }
49
49
 
50
- it { expect(config.denylisted).to be_eql(['Header']) }
50
+ it { expect(config.denylisted).to eql(['Header']) }
51
51
  end
52
52
  end
53
53
  end
54
54
 
55
55
  shared_examples 'configuration_failover_strategy' do
56
56
  describe 'failover_strategy' do
57
- it { expect(config.failover_strategy).to be_eql(Castle::Failover::Strategy::ALLOW) }
57
+ it { expect(config.failover_strategy).to eql(Castle::Failover::Strategy::ALLOW) }
58
58
 
59
59
  context 'with setter' do
60
60
  before { config.failover_strategy = Castle::Failover::Strategy::DENY }
61
61
 
62
- it { expect(config.failover_strategy).to be_eql(Castle::Failover::Strategy::DENY) }
62
+ it { expect(config.failover_strategy).to eql(Castle::Failover::Strategy::DENY) }
63
63
  end
64
64
 
65
65
  context 'when broken' do
66
- it do
67
- expect { config.failover_strategy = :unicorn }.to raise_error(Castle::ConfigurationError)
68
- end
66
+ it { expect { config.failover_strategy = :unicorn }.to raise_error(Castle::ConfigurationError) }
69
67
  end
70
68
  end
71
69
  end
@@ -81,12 +79,12 @@ shared_examples 'configuration_api_secret' do
81
79
  config.reset
82
80
  end
83
81
 
84
- it { expect(config.api_secret).to be_eql(secret_key_env) }
82
+ it { expect(config.api_secret).to eql(secret_key_env) }
85
83
 
86
84
  context 'when key is overwritten' do
87
85
  before { config.api_secret = secret_key }
88
86
 
89
- it { expect(config.api_secret).to be_eql(secret_key) }
87
+ it { expect(config.api_secret).to eql(secret_key) }
90
88
  end
91
89
  end
92
90
 
@@ -95,7 +93,7 @@ shared_examples 'configuration_api_secret' do
95
93
 
96
94
  before { config.api_secret = value }
97
95
 
98
- it { expect(config.api_secret).to be_eql(value) }
96
+ it { expect(config.api_secret).to eql(value) }
99
97
  end
100
98
  end
101
99
  end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'it has list item actions' do
4
+ describe 'archive_list_item' do
5
+ it do
6
+ client.archive_list_item(list_id: '1234', list_item_id: '5678')
7
+ assert_requested :delete, 'https://api.castle.io/v1/lists/1234/items/5678/archive', times: 1
8
+ end
9
+ end
10
+
11
+ describe 'count_list_items' do
12
+ it do
13
+ client.count_list_items(list_id: '1234', filters: [{ field: 'email', op: 'eq', value: 'test' }])
14
+ assert_requested :post, 'https://api.castle.io/v1/lists/1234/items/count', times: 1
15
+ end
16
+ end
17
+
18
+ describe 'create_list_item' do
19
+ it do
20
+ client.create_list_item(list_id: '1234', author: { type: 'other', identifier: '1234' }, primary_value: 'email')
21
+ assert_requested :post, 'https://api.castle.io/v1/lists/1234/items', times: 1
22
+ end
23
+ end
24
+
25
+ describe 'get_list_item' do
26
+ it do
27
+ client.get_list_item(list_id: '1234', list_item_id: '5678')
28
+ assert_requested :get, 'https://api.castle.io/v1/lists/1234/items/5678', times: 1
29
+ end
30
+ end
31
+
32
+ describe 'query_list_items' do
33
+ it do
34
+ client.query_list_items(list_id: '1234', filters: [{ field: 'email', op: 'eq', value: 'test' }])
35
+ assert_requested :post, 'https://api.castle.io/v1/lists/1234/items/query', times: 1
36
+ end
37
+ end
38
+
39
+ describe 'unarchive_list_item' do
40
+ it do
41
+ client.unarchive_list_item(list_id: '1234', list_item_id: '5678')
42
+ assert_requested :put, 'https://api.castle.io/v1/lists/1234/items/5678/unarchive', times: 1
43
+ end
44
+ end
45
+
46
+ describe 'update_list_item' do
47
+ it do
48
+ client.update_list_item(list_id: '1234', list_item_id: '5678', comment: 'updating comment')
49
+ assert_requested :put, 'https://api.castle.io/v1/lists/1234/items/5678', times: 1
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'it has list actions' do
4
+ describe 'create_list' do
5
+ it do
6
+ client.create_list(name: 'list name', color: '$green', primary_field: 'user.email')
7
+ assert_requested :post, 'https://api.castle.io/v1/lists', times: 1
8
+ end
9
+ end
10
+
11
+ describe 'delete_list' do
12
+ it do
13
+ client.delete_list(list_id: 'list_id')
14
+ assert_requested :delete, 'https://api.castle.io/v1/lists/list_id', times: 1
15
+ end
16
+ end
17
+
18
+ describe 'get_all_lists' do
19
+ it do
20
+ client.get_all_lists
21
+ assert_requested :get, 'https://api.castle.io/v1/lists', times: 1
22
+ end
23
+ end
24
+
25
+ describe 'get_list' do
26
+ it do
27
+ client.get_list(list_id: 'list_id')
28
+ assert_requested :get, 'https://api.castle.io/v1/lists/list_id', times: 1
29
+ end
30
+ end
31
+
32
+ describe 'query_lists' do
33
+ it do
34
+ client.query_lists(filters: [{ field: 'user.email', op: 'eq', value: 'test' }])
35
+ assert_requested :post, 'https://api.castle.io/v1/lists/query', times: 1
36
+ end
37
+ end
38
+
39
+ describe 'update_list' do
40
+ it do
41
+ client.update_list(list_id: 'list_id', name: 'list name', color: '$green', primary_field: 'user.email')
42
+ assert_requested :put, 'https://api.castle.io/v1/lists/list_id', times: 1
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: castle-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.0
4
+ version: 8.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johan Brissmyr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-14 00:00:00.000000000 Z
11
+ date: 2024-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appraisal
@@ -40,12 +40,27 @@ files:
40
40
  - lib/castle/api/filter.rb
41
41
  - lib/castle/api/get_device.rb
42
42
  - lib/castle/api/get_devices_for_user.rb
43
+ - lib/castle/api/list_items/archive.rb
44
+ - lib/castle/api/list_items/count.rb
45
+ - lib/castle/api/list_items/create.rb
46
+ - lib/castle/api/list_items/get.rb
47
+ - lib/castle/api/list_items/query.rb
48
+ - lib/castle/api/list_items/unarchive.rb
49
+ - lib/castle/api/list_items/update.rb
50
+ - lib/castle/api/lists/create.rb
51
+ - lib/castle/api/lists/delete.rb
52
+ - lib/castle/api/lists/get.rb
53
+ - lib/castle/api/lists/get_all.rb
54
+ - lib/castle/api/lists/query.rb
55
+ - lib/castle/api/lists/update.rb
43
56
  - lib/castle/api/log.rb
44
57
  - lib/castle/api/report_device.rb
45
58
  - lib/castle/api/risk.rb
46
59
  - lib/castle/api/start_impersonation.rb
47
60
  - lib/castle/api/track.rb
48
61
  - lib/castle/client.rb
62
+ - lib/castle/client_actions/list_items.rb
63
+ - lib/castle/client_actions/lists.rb
49
64
  - lib/castle/client_id/extract.rb
50
65
  - lib/castle/command.rb
51
66
  - lib/castle/commands/approve_device.rb
@@ -54,6 +69,19 @@ files:
54
69
  - lib/castle/commands/filter.rb
55
70
  - lib/castle/commands/get_device.rb
56
71
  - lib/castle/commands/get_devices_for_user.rb
72
+ - lib/castle/commands/list_items/archive.rb
73
+ - lib/castle/commands/list_items/count.rb
74
+ - lib/castle/commands/list_items/create.rb
75
+ - lib/castle/commands/list_items/get.rb
76
+ - lib/castle/commands/list_items/query.rb
77
+ - lib/castle/commands/list_items/unarchive.rb
78
+ - lib/castle/commands/list_items/update.rb
79
+ - lib/castle/commands/lists/create.rb
80
+ - lib/castle/commands/lists/delete.rb
81
+ - lib/castle/commands/lists/get.rb
82
+ - lib/castle/commands/lists/get_all.rb
83
+ - lib/castle/commands/lists/query.rb
84
+ - lib/castle/commands/lists/update.rb
57
85
  - lib/castle/commands/log.rb
58
86
  - lib/castle/commands/report_device.rb
59
87
  - lib/castle/commands/risk.rb
@@ -105,6 +133,19 @@ files:
105
133
  - spec/lib/castle/api/filter_spec.rb
106
134
  - spec/lib/castle/api/get_device_spec.rb
107
135
  - spec/lib/castle/api/get_devices_for_user_spec.rb
136
+ - spec/lib/castle/api/list_items/archive_spec.rb
137
+ - spec/lib/castle/api/list_items/count_spec.rb
138
+ - spec/lib/castle/api/list_items/create_spec.rb
139
+ - spec/lib/castle/api/list_items/get_spec.rb
140
+ - spec/lib/castle/api/list_items/query_spec.rb
141
+ - spec/lib/castle/api/list_items/unarchive_spec.rb
142
+ - spec/lib/castle/api/list_items/update_spec.rb
143
+ - spec/lib/castle/api/lists/create_spec.rb
144
+ - spec/lib/castle/api/lists/delete_spec.rb
145
+ - spec/lib/castle/api/lists/get_all_spec.rb
146
+ - spec/lib/castle/api/lists/get_spec.rb
147
+ - spec/lib/castle/api/lists/query_spec.rb
148
+ - spec/lib/castle/api/lists/update_spec.rb
108
149
  - spec/lib/castle/api/log_spec.rb
109
150
  - spec/lib/castle/api/report_device_spec.rb
110
151
  - spec/lib/castle/api/risk_spec.rb
@@ -120,6 +161,19 @@ files:
120
161
  - spec/lib/castle/commands/filter_spec.rb
121
162
  - spec/lib/castle/commands/get_device_spec.rb
122
163
  - spec/lib/castle/commands/get_devices_for_user_spec.rb
164
+ - spec/lib/castle/commands/list_items/archive_spec.rb
165
+ - spec/lib/castle/commands/list_items/count_spec.rb
166
+ - spec/lib/castle/commands/list_items/create_spec.rb
167
+ - spec/lib/castle/commands/list_items/get_spec.rb
168
+ - spec/lib/castle/commands/list_items/query_spec.rb
169
+ - spec/lib/castle/commands/list_items/unarchive_spec.rb
170
+ - spec/lib/castle/commands/list_items/update_spec.rb
171
+ - spec/lib/castle/commands/lists/create_spec.rb
172
+ - spec/lib/castle/commands/lists/delete_spec.rb
173
+ - spec/lib/castle/commands/lists/get_all_spec.rb
174
+ - spec/lib/castle/commands/lists/get_spec.rb
175
+ - spec/lib/castle/commands/lists/query_spec.rb
176
+ - spec/lib/castle/commands/lists/update_spec.rb
123
177
  - spec/lib/castle/commands/log_spec.rb
124
178
  - spec/lib/castle/commands/report_device_spec.rb
125
179
  - spec/lib/castle/commands/risk_spec.rb
@@ -158,6 +212,8 @@ files:
158
212
  - spec/spec_helper.rb
159
213
  - spec/support/shared_examples/action_request.rb
160
214
  - spec/support/shared_examples/configuration.rb
215
+ - spec/support/shared_examples/list_items.rb
216
+ - spec/support/shared_examples/lists.rb
161
217
  homepage: https://castle.io
162
218
  licenses:
163
219
  - MIT
@@ -170,78 +226,106 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
226
  requirements:
171
227
  - - ">="
172
228
  - !ruby/object:Gem::Version
173
- version: '2.4'
229
+ version: '2.7'
174
230
  required_rubygems_version: !ruby/object:Gem::Requirement
175
231
  requirements:
176
232
  - - ">="
177
233
  - !ruby/object:Gem::Version
178
234
  version: '0'
179
235
  requirements: []
180
- rubygems_version: 3.2.27
236
+ rubygems_version: 3.5.21
181
237
  signing_key:
182
238
  specification_version: 4
183
239
  summary: Castle
184
240
  test_files:
185
- - spec/spec_helper.rb
186
- - spec/integration/rails/support/application.rb
241
+ - spec/integration/rails/rails_spec.rb
187
242
  - spec/integration/rails/support/all.rb
243
+ - spec/integration/rails/support/application.rb
188
244
  - spec/integration/rails/support/home_controller.rb
189
- - spec/integration/rails/rails_spec.rb
190
- - spec/support/shared_examples/action_request.rb
191
- - spec/support/shared_examples/configuration.rb
192
- - spec/lib/castle_spec.rb
193
- - spec/lib/castle/session_spec.rb
194
- - spec/lib/castle/verdict_spec.rb
245
+ - spec/lib/castle/api/approve_device_spec.rb
246
+ - spec/lib/castle/api/authenticate_spec.rb
247
+ - spec/lib/castle/api/end_impersonation_spec.rb
248
+ - spec/lib/castle/api/filter_spec.rb
249
+ - spec/lib/castle/api/get_device_spec.rb
250
+ - spec/lib/castle/api/get_devices_for_user_spec.rb
251
+ - spec/lib/castle/api/list_items/archive_spec.rb
252
+ - spec/lib/castle/api/list_items/count_spec.rb
253
+ - spec/lib/castle/api/list_items/create_spec.rb
254
+ - spec/lib/castle/api/list_items/get_spec.rb
255
+ - spec/lib/castle/api/list_items/query_spec.rb
256
+ - spec/lib/castle/api/list_items/unarchive_spec.rb
257
+ - spec/lib/castle/api/list_items/update_spec.rb
258
+ - spec/lib/castle/api/lists/create_spec.rb
259
+ - spec/lib/castle/api/lists/delete_spec.rb
260
+ - spec/lib/castle/api/lists/get_all_spec.rb
261
+ - spec/lib/castle/api/lists/get_spec.rb
262
+ - spec/lib/castle/api/lists/query_spec.rb
263
+ - spec/lib/castle/api/lists/update_spec.rb
264
+ - spec/lib/castle/api/log_spec.rb
265
+ - spec/lib/castle/api/report_device_spec.rb
266
+ - spec/lib/castle/api/risk_spec.rb
267
+ - spec/lib/castle/api/start_impersonation_spec.rb
268
+ - spec/lib/castle/api/track_spec.rb
269
+ - spec/lib/castle/api_spec.rb
270
+ - spec/lib/castle/client_id/extract_spec.rb
195
271
  - spec/lib/castle/client_spec.rb
272
+ - spec/lib/castle/command_spec.rb
273
+ - spec/lib/castle/commands/approve_device_spec.rb
274
+ - spec/lib/castle/commands/authenticate_spec.rb
275
+ - spec/lib/castle/commands/end_impersonation_spec.rb
276
+ - spec/lib/castle/commands/filter_spec.rb
277
+ - spec/lib/castle/commands/get_device_spec.rb
278
+ - spec/lib/castle/commands/get_devices_for_user_spec.rb
279
+ - spec/lib/castle/commands/list_items/archive_spec.rb
280
+ - spec/lib/castle/commands/list_items/count_spec.rb
281
+ - spec/lib/castle/commands/list_items/create_spec.rb
282
+ - spec/lib/castle/commands/list_items/get_spec.rb
283
+ - spec/lib/castle/commands/list_items/query_spec.rb
284
+ - spec/lib/castle/commands/list_items/unarchive_spec.rb
285
+ - spec/lib/castle/commands/list_items/update_spec.rb
286
+ - spec/lib/castle/commands/lists/create_spec.rb
287
+ - spec/lib/castle/commands/lists/delete_spec.rb
288
+ - spec/lib/castle/commands/lists/get_all_spec.rb
289
+ - spec/lib/castle/commands/lists/get_spec.rb
290
+ - spec/lib/castle/commands/lists/query_spec.rb
291
+ - spec/lib/castle/commands/lists/update_spec.rb
292
+ - spec/lib/castle/commands/log_spec.rb
293
+ - spec/lib/castle/commands/report_device_spec.rb
294
+ - spec/lib/castle/commands/risk_spec.rb
295
+ - spec/lib/castle/commands/start_impersonation_spec.rb
296
+ - spec/lib/castle/commands/track_spec.rb
297
+ - spec/lib/castle/configuration_spec.rb
196
298
  - spec/lib/castle/context/get_default_spec.rb
299
+ - spec/lib/castle/context/merge_spec.rb
197
300
  - spec/lib/castle/context/prepare_spec.rb
198
301
  - spec/lib/castle/context/sanitize_spec.rb
199
- - spec/lib/castle/context/merge_spec.rb
200
302
  - spec/lib/castle/core/get_connection_spec.rb
303
+ - spec/lib/castle/core/process_response_spec.rb
201
304
  - spec/lib/castle/core/process_webhook_spec.rb
202
305
  - spec/lib/castle/core/send_request_spec.rb
203
- - spec/lib/castle/core/process_response_spec.rb
306
+ - spec/lib/castle/failover/strategy_spec.rb
307
+ - spec/lib/castle/headers/extract_spec.rb
308
+ - spec/lib/castle/headers/filter_spec.rb
309
+ - spec/lib/castle/headers/format_spec.rb
204
310
  - spec/lib/castle/ips/extract_spec.rb
205
- - spec/lib/castle/api_spec.rb
206
311
  - spec/lib/castle/logger_spec.rb
207
- - spec/lib/castle/client_id/extract_spec.rb
208
- - spec/lib/castle/configuration_spec.rb
209
- - spec/lib/castle/version_spec.rb
210
312
  - spec/lib/castle/payload/prepare_spec.rb
313
+ - spec/lib/castle/secure_mode_spec.rb
314
+ - spec/lib/castle/session_spec.rb
315
+ - spec/lib/castle/singleton_configuration_spec.rb
211
316
  - spec/lib/castle/utils/clean_invalid_chars_spec.rb
317
+ - spec/lib/castle/utils/clone_spec.rb
212
318
  - spec/lib/castle/utils/deep_symbolize_keys_spec.rb
213
319
  - spec/lib/castle/utils/get_timestamp_spec.rb
214
- - spec/lib/castle/utils/clone_spec.rb
215
320
  - spec/lib/castle/utils/merge_spec.rb
216
- - spec/lib/castle/command_spec.rb
217
- - spec/lib/castle/headers/format_spec.rb
218
- - spec/lib/castle/headers/extract_spec.rb
219
- - spec/lib/castle/headers/filter_spec.rb
220
- - spec/lib/castle/api/report_device_spec.rb
221
- - spec/lib/castle/api/authenticate_spec.rb
222
- - spec/lib/castle/api/track_spec.rb
223
- - spec/lib/castle/api/get_device_spec.rb
224
- - spec/lib/castle/api/risk_spec.rb
225
- - spec/lib/castle/api/start_impersonation_spec.rb
226
- - spec/lib/castle/api/log_spec.rb
227
- - spec/lib/castle/api/approve_device_spec.rb
228
- - spec/lib/castle/api/get_devices_for_user_spec.rb
229
- - spec/lib/castle/api/end_impersonation_spec.rb
230
- - spec/lib/castle/api/filter_spec.rb
231
- - spec/lib/castle/commands/report_device_spec.rb
232
- - spec/lib/castle/commands/authenticate_spec.rb
233
- - spec/lib/castle/commands/track_spec.rb
234
- - spec/lib/castle/commands/get_device_spec.rb
235
- - spec/lib/castle/commands/risk_spec.rb
236
- - spec/lib/castle/commands/start_impersonation_spec.rb
237
- - spec/lib/castle/commands/log_spec.rb
238
- - spec/lib/castle/commands/approve_device_spec.rb
239
- - spec/lib/castle/commands/get_devices_for_user_spec.rb
240
- - spec/lib/castle/commands/end_impersonation_spec.rb
241
- - spec/lib/castle/commands/filter_spec.rb
242
321
  - spec/lib/castle/validators/not_supported_spec.rb
243
322
  - spec/lib/castle/validators/present_spec.rb
323
+ - spec/lib/castle/verdict_spec.rb
324
+ - spec/lib/castle/version_spec.rb
244
325
  - spec/lib/castle/webhooks/verify_spec.rb
245
- - spec/lib/castle/failover/strategy_spec.rb
246
- - spec/lib/castle/secure_mode_spec.rb
247
- - spec/lib/castle/singleton_configuration_spec.rb
326
+ - spec/lib/castle_spec.rb
327
+ - spec/spec_helper.rb
328
+ - spec/support/shared_examples/action_request.rb
329
+ - spec/support/shared_examples/configuration.rb
330
+ - spec/support/shared_examples/list_items.rb
331
+ - spec/support/shared_examples/lists.rb