restforce 4.2.1 → 5.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +14 -9
  3. data/.github/ISSUE_TEMPLATE/unhandled-salesforce-error.md +17 -0
  4. data/.github/dependabot.yml +19 -0
  5. data/.rubocop.yml +5 -4
  6. data/CHANGELOG.md +96 -0
  7. data/CONTRIBUTING.md +21 -1
  8. data/Dockerfile +31 -0
  9. data/Gemfile +10 -7
  10. data/README.md +94 -21
  11. data/UPGRADING.md +38 -0
  12. data/docker-compose.yml +7 -0
  13. data/lib/restforce/abstract_client.rb +1 -0
  14. data/lib/restforce/collection.rb +27 -4
  15. data/lib/restforce/concerns/api.rb +2 -2
  16. data/lib/restforce/concerns/base.rb +2 -2
  17. data/lib/restforce/concerns/caching.rb +7 -0
  18. data/lib/restforce/concerns/composite_api.rb +104 -0
  19. data/lib/restforce/concerns/picklists.rb +2 -2
  20. data/lib/restforce/concerns/streaming.rb +1 -3
  21. data/lib/restforce/config.rb +4 -1
  22. data/lib/restforce/error_code.rb +647 -0
  23. data/lib/restforce/file_part.rb +24 -0
  24. data/lib/restforce/mash.rb +8 -3
  25. data/lib/restforce/middleware/caching.rb +1 -1
  26. data/lib/restforce/middleware/logger.rb +8 -7
  27. data/lib/restforce/middleware/raise_error.rb +3 -4
  28. data/lib/restforce/middleware.rb +2 -0
  29. data/lib/restforce/version.rb +1 -1
  30. data/lib/restforce.rb +6 -7
  31. data/restforce.gemspec +11 -20
  32. data/spec/fixtures/sobject/list_view_results_success_response.json +151 -0
  33. data/spec/integration/abstract_client_spec.rb +41 -32
  34. data/spec/integration/data/client_spec.rb +6 -2
  35. data/spec/spec_helper.rb +24 -1
  36. data/spec/support/client_integration.rb +7 -7
  37. data/spec/support/concerns.rb +1 -1
  38. data/spec/support/fixture_helpers.rb +1 -3
  39. data/spec/support/middleware.rb +1 -2
  40. data/spec/unit/collection_spec.rb +38 -2
  41. data/spec/unit/concerns/api_spec.rb +11 -11
  42. data/spec/unit/concerns/authentication_spec.rb +6 -6
  43. data/spec/unit/concerns/caching_spec.rb +26 -0
  44. data/spec/unit/concerns/composite_api_spec.rb +143 -0
  45. data/spec/unit/concerns/connection_spec.rb +2 -2
  46. data/spec/unit/concerns/streaming_spec.rb +4 -4
  47. data/spec/unit/config_spec.rb +1 -1
  48. data/spec/unit/error_code_spec.rb +61 -0
  49. data/spec/unit/mash_spec.rb +5 -0
  50. data/spec/unit/middleware/authentication/jwt_bearer_spec.rb +4 -4
  51. data/spec/unit/middleware/authentication/password_spec.rb +2 -2
  52. data/spec/unit/middleware/authentication/token_spec.rb +2 -2
  53. data/spec/unit/middleware/authentication_spec.rb +11 -5
  54. data/spec/unit/middleware/gzip_spec.rb +2 -2
  55. data/spec/unit/middleware/raise_error_spec.rb +29 -10
  56. data/spec/unit/signed_request_spec.rb +1 -1
  57. metadata +41 -125
  58. data/lib/restforce/upload_io.rb +0 -9
@@ -14,8 +14,10 @@ describe Restforce::Middleware::RaiseError do
14
14
  let(:status) { 404 }
15
15
 
16
16
  it 'raises Restforce::NotFoundError' do
17
- expect { on_complete }.to raise_error Restforce::NotFoundError,
18
- 'INVALID_FIELD: error_message'
17
+ expect { on_complete }.to raise_error do |error|
18
+ expect(error).to be_a Restforce::NotFoundError
19
+ expect(error.message).to start_with("INVALID_FIELD: error_message")
20
+ end
19
21
  end
20
22
 
21
23
  it 'raises an error that inherits from Faraday::ResourceNotFound' do
@@ -40,8 +42,10 @@ describe Restforce::Middleware::RaiseError do
40
42
  let(:status) { 400 }
41
43
 
42
44
  it "raises an error derived from the response's errorCode" do
43
- expect { on_complete }.to raise_error Restforce::ErrorCode::InvalidField,
44
- 'INVALID_FIELD: error_message'
45
+ expect { on_complete }.to raise_error do |error|
46
+ expect(error).to be_a Restforce::ErrorCode::InvalidField
47
+ expect(error.message).to start_with("INVALID_FIELD: error_message")
48
+ end
45
49
  end
46
50
 
47
51
  it 'raises an error that inherits from Faraday::ClientError' do
@@ -53,8 +57,10 @@ describe Restforce::Middleware::RaiseError do
53
57
  let(:status) { 401 }
54
58
 
55
59
  it 'raises Restforce::UnauthorizedError' do
56
- expect { on_complete }.to raise_error Restforce::UnauthorizedError,
57
- 'INVALID_FIELD: error_message'
60
+ expect { on_complete }.to raise_error do |error|
61
+ expect(error).to be_a Restforce::UnauthorizedError
62
+ expect(error.message).to start_with("INVALID_FIELD: error_message")
63
+ end
58
64
  end
59
65
  end
60
66
 
@@ -76,13 +82,26 @@ describe Restforce::Middleware::RaiseError do
76
82
  let(:status) { 400 }
77
83
 
78
84
  it 'raises a generic Restforce::ResponseError' do
79
- expect { on_complete }.to raise_error Restforce::ResponseError,
80
- "(error code missing): #{body}"
85
+ expect { on_complete }.to raise_error do |error|
86
+ expect(error).to be_a Restforce::ResponseError
87
+ expect(error.message).to start_with("(error code missing): An error occured")
88
+ end
81
89
  end
82
90
 
83
91
  it 'raises an error that inherits from Faraday::ClientError' do
84
- expect { on_complete }.to raise_error Faraday::ClientError,
85
- "(error code missing): #{body}"
92
+ expect { on_complete }.to raise_error do |error|
93
+ expect(error).to be_a Faraday::ClientError
94
+ expect(error.message).to start_with("(error code missing): An error occured")
95
+ end
96
+ end
97
+ end
98
+
99
+ context 'when error code is not already defined' do
100
+ let(:body) { { 'errorCode' => 'SOMETHING_UNDEFINED' } }
101
+ let(:status) { 400 }
102
+
103
+ it 'raises a generic Restforce::ResponseError' do
104
+ expect { on_complete }.to raise_error Restforce::ResponseError
86
105
  end
87
106
  end
88
107
  end
@@ -6,7 +6,7 @@ describe Restforce::SignedRequest do
6
6
  let(:client_secret) { 'foo' }
7
7
  let(:digest) do
8
8
  if RUBY_VERSION < '2.1'
9
- OpenSSL::Digest::Digest.new('sha256')
9
+ OpenSSL::Digest.new('Digest', 'sha256')
10
10
  else
11
11
  OpenSSL::Digest.new('sha256')
12
12
  end
metadata CHANGED
@@ -1,36 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restforce
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.1
4
+ version: 5.2.4
5
5
  platform: ruby
6
6
  authors:
7
- - Eric J. Holmes
8
7
  - Tim Rogers
9
- autorequire:
8
+ - Eric J. Holmes
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-12-04 00:00:00.000000000 Z
12
+ date: 2022-03-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
+ - - "<"
19
+ - !ruby/object:Gem::Version
20
+ version: 1.9.0
18
21
  - - ">="
19
22
  - !ruby/object:Gem::Version
20
23
  version: 0.9.0
21
- - - "<="
22
- - !ruby/object:Gem::Version
23
- version: '1.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
+ - - "<"
29
+ - !ruby/object:Gem::Version
30
+ version: 1.9.0
28
31
  - - ">="
29
32
  - !ruby/object:Gem::Version
30
33
  version: 0.9.0
31
- - - "<="
32
- - !ruby/object:Gem::Version
33
- version: '1.0'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: faraday_middleware
36
36
  requirement: !ruby/object:Gem::Requirement
@@ -40,7 +40,7 @@ dependencies:
40
40
  version: 0.8.8
41
41
  - - "<="
42
42
  - !ruby/object:Gem::Version
43
- version: '1.0'
43
+ version: '2.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
@@ -50,35 +50,7 @@ dependencies:
50
50
  version: 0.8.8
51
51
  - - "<="
52
52
  - !ruby/object:Gem::Version
53
- version: '1.0'
54
- - !ruby/object:Gem::Dependency
55
- name: json
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 1.7.5
61
- type: :runtime
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: 1.7.5
68
- - !ruby/object:Gem::Dependency
69
- name: jwt
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 1.5.6
75
- type: :runtime
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 1.5.6
53
+ version: '2.0'
82
54
  - !ruby/object:Gem::Dependency
83
55
  name: hashie
84
56
  requirement: !ruby/object:Gem::Requirement
@@ -88,7 +60,7 @@ dependencies:
88
60
  version: 1.2.0
89
61
  - - "<"
90
62
  - !ruby/object:Gem::Version
91
- version: '5.0'
63
+ version: '6.0'
92
64
  type: :runtime
93
65
  prerelease: false
94
66
  version_requirements: !ruby/object:Gem::Requirement
@@ -98,111 +70,46 @@ dependencies:
98
70
  version: 1.2.0
99
71
  - - "<"
100
72
  - !ruby/object:Gem::Version
101
- version: '5.0'
73
+ version: '6.0'
102
74
  - !ruby/object:Gem::Dependency
103
- name: faye
75
+ name: jwt
104
76
  requirement: !ruby/object:Gem::Requirement
105
77
  requirements:
106
78
  - - ">="
107
79
  - !ruby/object:Gem::Version
108
- version: '0'
109
- type: :development
80
+ version: 1.5.6
81
+ type: :runtime
110
82
  prerelease: false
111
83
  version_requirements: !ruby/object:Gem::Requirement
112
84
  requirements:
113
85
  - - ">="
114
86
  - !ruby/object:Gem::Version
115
- version: '0'
116
- - !ruby/object:Gem::Dependency
117
- name: rspec
118
- requirement: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: 2.14.0
123
- type: :development
124
- prerelease: false
125
- version_requirements: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: 2.14.0
130
- - !ruby/object:Gem::Dependency
131
- name: rspec_junit_formatter
132
- requirement: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: 0.4.1
137
- type: :development
138
- prerelease: false
139
- version_requirements: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: 0.4.1
144
- - !ruby/object:Gem::Dependency
145
- name: rubocop
146
- requirement: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - "~>"
149
- - !ruby/object:Gem::Version
150
- version: 0.77.0
151
- type: :development
152
- prerelease: false
153
- version_requirements: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - "~>"
156
- - !ruby/object:Gem::Version
157
- version: 0.77.0
158
- - !ruby/object:Gem::Dependency
159
- name: simplecov
160
- requirement: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - "~>"
163
- - !ruby/object:Gem::Version
164
- version: 0.17.1
165
- type: :development
166
- prerelease: false
167
- version_requirements: !ruby/object:Gem::Requirement
168
- requirements:
169
- - - "~>"
170
- - !ruby/object:Gem::Version
171
- version: 0.17.1
172
- - !ruby/object:Gem::Dependency
173
- name: webmock
174
- requirement: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - "~>"
177
- - !ruby/object:Gem::Version
178
- version: 3.7.6
179
- type: :development
180
- prerelease: false
181
- version_requirements: !ruby/object:Gem::Requirement
182
- requirements:
183
- - - "~>"
184
- - !ruby/object:Gem::Version
185
- version: 3.7.6
186
- description: A lightweight ruby client for the Salesforce REST API.
87
+ version: 1.5.6
88
+ description: A lightweight Ruby client for the Salesforce REST API
187
89
  email:
90
+ - me@timrogers.co.uk
188
91
  - eric@ejholmes.net
189
- - tim@gocardless.com
190
92
  executables: []
191
93
  extensions: []
192
94
  extra_rdoc_files: []
193
95
  files:
194
96
  - ".circleci/config.yml"
97
+ - ".github/ISSUE_TEMPLATE/unhandled-salesforce-error.md"
98
+ - ".github/dependabot.yml"
195
99
  - ".gitignore"
196
100
  - ".rubocop.yml"
197
101
  - ".rubocop_todo.yml"
198
102
  - CHANGELOG.md
199
103
  - CODE_OF_CONDUCT.md
200
104
  - CONTRIBUTING.md
105
+ - Dockerfile
201
106
  - Gemfile
202
107
  - Guardfile
203
108
  - LICENSE
204
109
  - README.md
205
110
  - Rakefile
111
+ - UPGRADING.md
112
+ - docker-compose.yml
206
113
  - lib/restforce.rb
207
114
  - lib/restforce/abstract_client.rb
208
115
  - lib/restforce/attachment.rb
@@ -214,6 +121,7 @@ files:
214
121
  - lib/restforce/concerns/batch_api.rb
215
122
  - lib/restforce/concerns/caching.rb
216
123
  - lib/restforce/concerns/canvas.rb
124
+ - lib/restforce/concerns/composite_api.rb
217
125
  - lib/restforce/concerns/connection.rb
218
126
  - lib/restforce/concerns/picklists.rb
219
127
  - lib/restforce/concerns/streaming.rb
@@ -221,6 +129,8 @@ files:
221
129
  - lib/restforce/config.rb
222
130
  - lib/restforce/data/client.rb
223
131
  - lib/restforce/document.rb
132
+ - lib/restforce/error_code.rb
133
+ - lib/restforce/file_part.rb
224
134
  - lib/restforce/mash.rb
225
135
  - lib/restforce/middleware.rb
226
136
  - lib/restforce/middleware/authentication.rb
@@ -240,7 +150,6 @@ files:
240
150
  - lib/restforce/signed_request.rb
241
151
  - lib/restforce/sobject.rb
242
152
  - lib/restforce/tooling/client.rb
243
- - lib/restforce/upload_io.rb
244
153
  - lib/restforce/version.rb
245
154
  - restforce.gemspec
246
155
  - script/bootstrap
@@ -261,6 +170,7 @@ files:
261
170
  - spec/fixtures/sobject/get_deleted_success_response.json
262
171
  - spec/fixtures/sobject/get_updated_success_response.json
263
172
  - spec/fixtures/sobject/list_sobjects_success_response.json
173
+ - spec/fixtures/sobject/list_view_results_success_response.json
264
174
  - spec/fixtures/sobject/org_query_response.json
265
175
  - spec/fixtures/sobject/query_aggregate_success_response.json
266
176
  - spec/fixtures/sobject/query_empty_response.json
@@ -301,11 +211,13 @@ files:
301
211
  - spec/unit/concerns/batch_api_spec.rb
302
212
  - spec/unit/concerns/caching_spec.rb
303
213
  - spec/unit/concerns/canvas_spec.rb
214
+ - spec/unit/concerns/composite_api_spec.rb
304
215
  - spec/unit/concerns/connection_spec.rb
305
216
  - spec/unit/concerns/streaming_spec.rb
306
217
  - spec/unit/config_spec.rb
307
218
  - spec/unit/data/client_spec.rb
308
219
  - spec/unit/document_spec.rb
220
+ - spec/unit/error_code_spec.rb
309
221
  - spec/unit/mash_spec.rb
310
222
  - spec/unit/middleware/authentication/jwt_bearer_spec.rb
311
223
  - spec/unit/middleware/authentication/password_spec.rb
@@ -321,13 +233,14 @@ files:
321
233
  - spec/unit/signed_request_spec.rb
322
234
  - spec/unit/sobject_spec.rb
323
235
  - spec/unit/tooling/client_spec.rb
324
- homepage: http://restforce.org/
236
+ homepage: https://restforce.github.io/
325
237
  licenses:
326
238
  - MIT
327
239
  metadata:
328
240
  source_code_uri: https://github.com/restforce/restforce
329
241
  changelog_uri: https://github.com/restforce/restforce/blob/master/CHANGELOG.md
330
- post_install_message:
242
+ rubygems_mfa_required: 'true'
243
+ post_install_message:
331
244
  rdoc_options: []
332
245
  require_paths:
333
246
  - lib
@@ -335,17 +248,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
335
248
  requirements:
336
249
  - - ">="
337
250
  - !ruby/object:Gem::Version
338
- version: '2.4'
251
+ version: '2.6'
339
252
  required_rubygems_version: !ruby/object:Gem::Requirement
340
253
  requirements:
341
254
  - - ">="
342
255
  - !ruby/object:Gem::Version
343
256
  version: '0'
344
257
  requirements: []
345
- rubygems_version: 3.0.3
346
- signing_key:
258
+ rubygems_version: 3.3.3
259
+ signing_key:
347
260
  specification_version: 4
348
- summary: A lightweight ruby client for the Salesforce REST API.
261
+ summary: A lightweight Ruby client for the Salesforce REST API
349
262
  test_files:
350
263
  - spec/fixtures/auth_error_response.json
351
264
  - spec/fixtures/auth_success_response.json
@@ -361,6 +274,7 @@ test_files:
361
274
  - spec/fixtures/sobject/get_deleted_success_response.json
362
275
  - spec/fixtures/sobject/get_updated_success_response.json
363
276
  - spec/fixtures/sobject/list_sobjects_success_response.json
277
+ - spec/fixtures/sobject/list_view_results_success_response.json
364
278
  - spec/fixtures/sobject/org_query_response.json
365
279
  - spec/fixtures/sobject/query_aggregate_success_response.json
366
280
  - spec/fixtures/sobject/query_empty_response.json
@@ -401,11 +315,13 @@ test_files:
401
315
  - spec/unit/concerns/batch_api_spec.rb
402
316
  - spec/unit/concerns/caching_spec.rb
403
317
  - spec/unit/concerns/canvas_spec.rb
318
+ - spec/unit/concerns/composite_api_spec.rb
404
319
  - spec/unit/concerns/connection_spec.rb
405
320
  - spec/unit/concerns/streaming_spec.rb
406
321
  - spec/unit/config_spec.rb
407
322
  - spec/unit/data/client_spec.rb
408
323
  - spec/unit/document_spec.rb
324
+ - spec/unit/error_code_spec.rb
409
325
  - spec/unit/mash_spec.rb
410
326
  - spec/unit/middleware/authentication/jwt_bearer_spec.rb
411
327
  - spec/unit/middleware/authentication/password_spec.rb
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'faraday/upload_io'
4
-
5
- module Restforce
6
- UploadIO = Faraday::UploadIO
7
- end
8
-
9
- require 'restforce/patches/parts' unless Parts::Part.method(:new).arity.abs == 4