restforce 5.0.6 → 6.2.1

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/.github/dependabot.yml +4 -13
  3. data/.github/funding.yml +1 -0
  4. data/.github/workflows/build.yml +23 -0
  5. data/.github/workflows/faraday.yml +27 -0
  6. data/.rubocop.yml +2 -2
  7. data/CHANGELOG.md +68 -0
  8. data/Gemfile +15 -6
  9. data/README.md +61 -7
  10. data/UPGRADING.md +29 -0
  11. data/lib/restforce/abstract_client.rb +1 -0
  12. data/lib/restforce/collection.rb +20 -2
  13. data/lib/restforce/concerns/api.rb +2 -1
  14. data/lib/restforce/concerns/base.rb +2 -2
  15. data/lib/restforce/concerns/composite_api.rb +104 -0
  16. data/lib/restforce/concerns/connection.rb +1 -1
  17. data/lib/restforce/concerns/picklists.rb +1 -1
  18. data/lib/restforce/config.rb +12 -10
  19. data/lib/restforce/error_code.rb +30 -9
  20. data/lib/restforce/file_part.rb +12 -4
  21. data/lib/restforce/middleware/authentication.rb +1 -0
  22. data/lib/restforce/middleware/caching.rb +140 -15
  23. data/lib/restforce/middleware/gzip.rb +4 -0
  24. data/lib/restforce/middleware/json_request.rb +90 -0
  25. data/lib/restforce/middleware/json_response.rb +85 -0
  26. data/lib/restforce/middleware/logger.rb +6 -2
  27. data/lib/restforce/middleware/raise_error.rb +10 -1
  28. data/lib/restforce/version.rb +1 -1
  29. data/lib/restforce.rb +11 -7
  30. data/restforce.gemspec +8 -16
  31. data/spec/fixtures/sobject/list_view_results_success_response.json +151 -0
  32. data/spec/integration/abstract_client_spec.rb +42 -30
  33. data/spec/integration/data/client_spec.rb +6 -2
  34. data/spec/spec_helper.rb +10 -0
  35. data/spec/support/client_integration.rb +7 -7
  36. data/spec/support/concerns.rb +1 -1
  37. data/spec/support/middleware.rb +1 -2
  38. data/spec/unit/collection_spec.rb +22 -4
  39. data/spec/unit/concerns/api_spec.rb +22 -15
  40. data/spec/unit/concerns/authentication_spec.rb +6 -6
  41. data/spec/unit/concerns/base_spec.rb +1 -1
  42. data/spec/unit/concerns/composite_api_spec.rb +169 -0
  43. data/spec/unit/concerns/connection_spec.rb +1 -1
  44. data/spec/unit/concerns/streaming_spec.rb +4 -4
  45. data/spec/unit/config_spec.rb +2 -2
  46. data/spec/unit/middleware/authentication/jwt_bearer_spec.rb +24 -8
  47. data/spec/unit/middleware/authentication/password_spec.rb +12 -4
  48. data/spec/unit/middleware/authentication/token_spec.rb +12 -4
  49. data/spec/unit/middleware/authentication_spec.rb +8 -8
  50. data/spec/unit/middleware/authorization_spec.rb +5 -1
  51. data/spec/unit/middleware/custom_headers_spec.rb +6 -2
  52. data/spec/unit/middleware/gzip_spec.rb +60 -16
  53. data/spec/unit/middleware/instance_url_spec.rb +2 -2
  54. data/spec/unit/middleware/logger_spec.rb +1 -1
  55. data/spec/unit/middleware/raise_error_spec.rb +20 -10
  56. data/spec/unit/sobject_spec.rb +9 -5
  57. metadata +55 -172
  58. data/.circleci/config.yml +0 -56
@@ -48,7 +48,11 @@ describe Restforce::SObject do
48
48
  subject(:send_method) { lambda { sobject.send(method) } }
49
49
 
50
50
  context 'when an Id was not queried' do
51
- it { should raise_error ArgumentError, /need to query the Id for the record/ }
51
+ it {
52
+ expect do
53
+ subject.call
54
+ end.to raise_error ArgumentError, /need to query the Id for the record/
55
+ }
52
56
  end
53
57
 
54
58
  context 'when an Id is present' do
@@ -57,7 +61,7 @@ describe Restforce::SObject do
57
61
  client.should_receive(receiver)
58
62
  end
59
63
 
60
- it { should_not raise_error }
64
+ it { expect { subject.call }.not_to raise_error }
61
65
  end
62
66
  end
63
67
  end
@@ -69,7 +73,7 @@ describe Restforce::SObject do
69
73
  client.should_receive(:describe).with('Whizbang')
70
74
  end
71
75
 
72
- it { should_not raise_error }
76
+ it { expect { subject.call }.not_to raise_error }
73
77
  end
74
78
 
75
79
  describe '.describe_layouts' do
@@ -80,13 +84,13 @@ describe Restforce::SObject do
80
84
  client.should_receive(:describe_layouts).with('Whizbang', layout_id)
81
85
  end
82
86
 
83
- it { should_not raise_error }
87
+ it { expect { subject.call }.not_to raise_error }
84
88
 
85
89
  context 'when a layout Id is specified' do
86
90
  let(:layout_id) { '012E0000000RHEp' }
87
91
  subject { lambda { sobject.describe_layouts(layout_id) } }
88
92
 
89
- it { should_not raise_error }
93
+ it { expect { subject.call }.not_to raise_error }
90
94
  end
91
95
  end
92
96
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restforce
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.6
4
+ version: 6.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Rogers
@@ -9,166 +9,116 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-06-17 00:00:00.000000000 Z
12
+ date: 2023-01-18 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
- - - "<="
18
+ - - "<"
19
19
  - !ruby/object:Gem::Version
20
- version: '2.0'
20
+ version: 2.8.0
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.9.0
23
+ version: 1.1.0
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - "<="
28
+ - - "<"
29
29
  - !ruby/object:Gem::Version
30
- version: '2.0'
30
+ version: 2.8.0
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.0
33
+ version: 1.1.0
34
34
  - !ruby/object:Gem::Dependency
35
- name: faraday_middleware
35
+ name: faraday-follow_redirects
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 0.8.8
41
38
  - - "<="
42
39
  - !ruby/object:Gem::Version
43
- version: '2.0'
40
+ version: 0.3.0
41
+ - - "<"
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.0
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 0.8.8
51
48
  - - "<="
52
49
  - !ruby/object:Gem::Version
53
- version: '2.0'
54
- - !ruby/object:Gem::Dependency
55
- name: jwt
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 1.5.6
61
- type: :runtime
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
50
+ version: 0.3.0
51
+ - - "<"
66
52
  - !ruby/object:Gem::Version
67
- version: 1.5.6
53
+ version: 1.0.0
68
54
  - !ruby/object:Gem::Dependency
69
- name: hashie
55
+ name: faraday-multipart
70
56
  requirement: !ruby/object:Gem::Requirement
71
57
  requirements:
72
58
  - - ">="
73
59
  - !ruby/object:Gem::Version
74
- version: 1.2.0
60
+ version: 1.0.0
75
61
  - - "<"
76
62
  - !ruby/object:Gem::Version
77
- version: '5.0'
63
+ version: 2.0.0
78
64
  type: :runtime
79
65
  prerelease: false
80
66
  version_requirements: !ruby/object:Gem::Requirement
81
67
  requirements:
82
68
  - - ">="
83
69
  - !ruby/object:Gem::Version
84
- version: 1.2.0
70
+ version: 1.0.0
85
71
  - - "<"
86
72
  - !ruby/object:Gem::Version
87
- version: '5.0'
88
- - !ruby/object:Gem::Dependency
89
- name: faye
90
- requirement: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- type: :development
96
- prerelease: false
97
- version_requirements: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: '0'
73
+ version: 2.0.0
102
74
  - !ruby/object:Gem::Dependency
103
- name: rspec
75
+ name: faraday-net_http
104
76
  requirement: !ruby/object:Gem::Requirement
105
77
  requirements:
106
- - - "~>"
78
+ - - "<"
107
79
  - !ruby/object:Gem::Version
108
- version: 2.14.0
109
- type: :development
80
+ version: 4.0.0
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: 2.14.0
87
+ version: 4.0.0
116
88
  - !ruby/object:Gem::Dependency
117
- name: rspec_junit_formatter
89
+ name: hashie
118
90
  requirement: !ruby/object:Gem::Requirement
119
91
  requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: 0.4.1
123
- type: :development
124
- prerelease: false
125
- version_requirements: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
92
+ - - ">="
128
93
  - !ruby/object:Gem::Version
129
- version: 0.4.1
130
- - !ruby/object:Gem::Dependency
131
- name: rubocop
132
- requirement: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
94
+ version: 1.2.0
95
+ - - "<"
135
96
  - !ruby/object:Gem::Version
136
- version: 1.17.0
137
- type: :development
97
+ version: '6.0'
98
+ type: :runtime
138
99
  prerelease: false
139
100
  version_requirements: !ruby/object:Gem::Requirement
140
101
  requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: 1.17.0
144
- - !ruby/object:Gem::Dependency
145
- name: simplecov
146
- requirement: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - "~>"
102
+ - - ">="
149
103
  - !ruby/object:Gem::Version
150
- version: 0.21.2
151
- type: :development
152
- prerelease: false
153
- version_requirements: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - "~>"
104
+ version: 1.2.0
105
+ - - "<"
156
106
  - !ruby/object:Gem::Version
157
- version: 0.21.2
107
+ version: '6.0'
158
108
  - !ruby/object:Gem::Dependency
159
- name: webmock
109
+ name: jwt
160
110
  requirement: !ruby/object:Gem::Requirement
161
111
  requirements:
162
- - - "~>"
112
+ - - ">="
163
113
  - !ruby/object:Gem::Version
164
- version: 3.13.0
165
- type: :development
114
+ version: 1.5.6
115
+ type: :runtime
166
116
  prerelease: false
167
117
  version_requirements: !ruby/object:Gem::Requirement
168
118
  requirements:
169
- - - "~>"
119
+ - - ">="
170
120
  - !ruby/object:Gem::Version
171
- version: 3.13.0
121
+ version: 1.5.6
172
122
  description: A lightweight Ruby client for the Salesforce REST API
173
123
  email:
174
124
  - me@timrogers.co.uk
@@ -177,9 +127,11 @@ executables: []
177
127
  extensions: []
178
128
  extra_rdoc_files: []
179
129
  files:
180
- - ".circleci/config.yml"
181
130
  - ".github/ISSUE_TEMPLATE/unhandled-salesforce-error.md"
182
131
  - ".github/dependabot.yml"
132
+ - ".github/funding.yml"
133
+ - ".github/workflows/build.yml"
134
+ - ".github/workflows/faraday.yml"
183
135
  - ".gitignore"
184
136
  - ".rubocop.yml"
185
137
  - ".rubocop_todo.yml"
@@ -205,6 +157,7 @@ files:
205
157
  - lib/restforce/concerns/batch_api.rb
206
158
  - lib/restforce/concerns/caching.rb
207
159
  - lib/restforce/concerns/canvas.rb
160
+ - lib/restforce/concerns/composite_api.rb
208
161
  - lib/restforce/concerns/connection.rb
209
162
  - lib/restforce/concerns/picklists.rb
210
163
  - lib/restforce/concerns/streaming.rb
@@ -225,6 +178,8 @@ files:
225
178
  - lib/restforce/middleware/custom_headers.rb
226
179
  - lib/restforce/middleware/gzip.rb
227
180
  - lib/restforce/middleware/instance_url.rb
181
+ - lib/restforce/middleware/json_request.rb
182
+ - lib/restforce/middleware/json_response.rb
228
183
  - lib/restforce/middleware/logger.rb
229
184
  - lib/restforce/middleware/mashify.rb
230
185
  - lib/restforce/middleware/multipart.rb
@@ -253,6 +208,7 @@ files:
253
208
  - spec/fixtures/sobject/get_deleted_success_response.json
254
209
  - spec/fixtures/sobject/get_updated_success_response.json
255
210
  - spec/fixtures/sobject/list_sobjects_success_response.json
211
+ - spec/fixtures/sobject/list_view_results_success_response.json
256
212
  - spec/fixtures/sobject/org_query_response.json
257
213
  - spec/fixtures/sobject/query_aggregate_success_response.json
258
214
  - spec/fixtures/sobject/query_empty_response.json
@@ -293,6 +249,7 @@ files:
293
249
  - spec/unit/concerns/batch_api_spec.rb
294
250
  - spec/unit/concerns/caching_spec.rb
295
251
  - spec/unit/concerns/canvas_spec.rb
252
+ - spec/unit/concerns/composite_api_spec.rb
296
253
  - spec/unit/concerns/connection_spec.rb
297
254
  - spec/unit/concerns/streaming_spec.rb
298
255
  - spec/unit/config_spec.rb
@@ -320,6 +277,7 @@ licenses:
320
277
  metadata:
321
278
  source_code_uri: https://github.com/restforce/restforce
322
279
  changelog_uri: https://github.com/restforce/restforce/blob/master/CHANGELOG.md
280
+ rubygems_mfa_required: 'true'
323
281
  post_install_message:
324
282
  rdoc_options: []
325
283
  require_paths:
@@ -328,90 +286,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
328
286
  requirements:
329
287
  - - ">="
330
288
  - !ruby/object:Gem::Version
331
- version: '2.5'
289
+ version: '2.7'
332
290
  required_rubygems_version: !ruby/object:Gem::Requirement
333
291
  requirements:
334
292
  - - ">="
335
293
  - !ruby/object:Gem::Version
336
294
  version: '0'
337
295
  requirements: []
338
- rubygems_version: 3.2.5
296
+ rubygems_version: 3.4.1
339
297
  signing_key:
340
298
  specification_version: 4
341
299
  summary: A lightweight Ruby client for the Salesforce REST API
342
- test_files:
343
- - spec/fixtures/auth_error_response.json
344
- - spec/fixtures/auth_success_response.json
345
- - spec/fixtures/blob.jpg
346
- - spec/fixtures/expired_session_response.json
347
- - spec/fixtures/reauth_success_response.json
348
- - spec/fixtures/refresh_error_response.json
349
- - spec/fixtures/refresh_success_response.json
350
- - spec/fixtures/services_data_success_response.json
351
- - spec/fixtures/sobject/create_success_response.json
352
- - spec/fixtures/sobject/delete_error_response.json
353
- - spec/fixtures/sobject/describe_sobjects_success_response.json
354
- - spec/fixtures/sobject/get_deleted_success_response.json
355
- - spec/fixtures/sobject/get_updated_success_response.json
356
- - spec/fixtures/sobject/list_sobjects_success_response.json
357
- - spec/fixtures/sobject/org_query_response.json
358
- - spec/fixtures/sobject/query_aggregate_success_response.json
359
- - spec/fixtures/sobject/query_empty_response.json
360
- - spec/fixtures/sobject/query_error_response.json
361
- - spec/fixtures/sobject/query_paginated_first_page_response.json
362
- - spec/fixtures/sobject/query_paginated_last_page_response.json
363
- - spec/fixtures/sobject/query_success_response.json
364
- - spec/fixtures/sobject/recent_success_response.json
365
- - spec/fixtures/sobject/search_error_response.json
366
- - spec/fixtures/sobject/search_success_response.json
367
- - spec/fixtures/sobject/sobject_describe_error_response.json
368
- - spec/fixtures/sobject/sobject_describe_success_response.json
369
- - spec/fixtures/sobject/sobject_find_error_response.json
370
- - spec/fixtures/sobject/sobject_find_success_response.json
371
- - spec/fixtures/sobject/sobject_select_success_response.json
372
- - spec/fixtures/sobject/upsert_created_success_response.json
373
- - spec/fixtures/sobject/upsert_error_response.json
374
- - spec/fixtures/sobject/upsert_multiple_error_response.json
375
- - spec/fixtures/sobject/upsert_updated_success_response.json
376
- - spec/fixtures/sobject/write_error_response.json
377
- - spec/fixtures/test_private.key
378
- - spec/integration/abstract_client_spec.rb
379
- - spec/integration/data/client_spec.rb
380
- - spec/spec_helper.rb
381
- - spec/support/client_integration.rb
382
- - spec/support/concerns.rb
383
- - spec/support/event_machine.rb
384
- - spec/support/fixture_helpers.rb
385
- - spec/support/matchers.rb
386
- - spec/support/middleware.rb
387
- - spec/support/mock_cache.rb
388
- - spec/unit/abstract_client_spec.rb
389
- - spec/unit/attachment_spec.rb
390
- - spec/unit/collection_spec.rb
391
- - spec/unit/concerns/api_spec.rb
392
- - spec/unit/concerns/authentication_spec.rb
393
- - spec/unit/concerns/base_spec.rb
394
- - spec/unit/concerns/batch_api_spec.rb
395
- - spec/unit/concerns/caching_spec.rb
396
- - spec/unit/concerns/canvas_spec.rb
397
- - spec/unit/concerns/connection_spec.rb
398
- - spec/unit/concerns/streaming_spec.rb
399
- - spec/unit/config_spec.rb
400
- - spec/unit/data/client_spec.rb
401
- - spec/unit/document_spec.rb
402
- - spec/unit/error_code_spec.rb
403
- - spec/unit/mash_spec.rb
404
- - spec/unit/middleware/authentication/jwt_bearer_spec.rb
405
- - spec/unit/middleware/authentication/password_spec.rb
406
- - spec/unit/middleware/authentication/token_spec.rb
407
- - spec/unit/middleware/authentication_spec.rb
408
- - spec/unit/middleware/authorization_spec.rb
409
- - spec/unit/middleware/custom_headers_spec.rb
410
- - spec/unit/middleware/gzip_spec.rb
411
- - spec/unit/middleware/instance_url_spec.rb
412
- - spec/unit/middleware/logger_spec.rb
413
- - spec/unit/middleware/mashify_spec.rb
414
- - spec/unit/middleware/raise_error_spec.rb
415
- - spec/unit/signed_request_spec.rb
416
- - spec/unit/sobject_spec.rb
417
- - spec/unit/tooling/client_spec.rb
300
+ test_files: []
data/.circleci/config.yml DELETED
@@ -1,56 +0,0 @@
1
- version: 2
2
-
3
- references:
4
- steps: &steps
5
- - checkout
6
-
7
- - run:
8
- name: Update Bundler
9
- command: gem install bundler
10
-
11
- - run:
12
- name: Install dependencies from .gemspec
13
- command: bundle install --jobs=4 --retry=3 --path vendor/bundle
14
-
15
- - run:
16
- name: Run RSpec tests
17
- command: |
18
- mkdir /tmp/test-results
19
-
20
- bundle exec rspec --format progress \
21
- --format RspecJunitFormatter \
22
- --out /tmp/test-results/rspec.xml \
23
- --format progress \
24
- spec/**/*_spec.rb
25
-
26
- - run:
27
- name: Check code style with Rubocop
28
- command: bundle exec rubocop
29
-
30
- - store_test_results:
31
- path: /tmp/test-results
32
- - store_artifacts:
33
- path: /tmp/test-results
34
- destination: test-results
35
-
36
- jobs:
37
- build-ruby271:
38
- docker:
39
- - image: circleci/ruby:2.7.1
40
- steps: *steps
41
- build-ruby266:
42
- docker:
43
- - image: circleci/ruby:2.6.6
44
- steps: *steps
45
- build-ruby258:
46
- docker:
47
- - image: circleci/ruby:2.5.8
48
- steps: *steps
49
-
50
- workflows:
51
- version: 2
52
- tests:
53
- jobs:
54
- - build-ruby271
55
- - build-ruby266
56
- - build-ruby258