restforce 4.2.2 → 5.1.1
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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +9 -9
- data/.github/ISSUE_TEMPLATE/unhandled-salesforce-error.md +17 -0
- data/.github/dependabot.yml +19 -0
- data/.rubocop.yml +5 -4
- data/CHANGELOG.md +68 -0
- data/CONTRIBUTING.md +21 -1
- data/Dockerfile +31 -0
- data/Gemfile +10 -7
- data/README.md +46 -21
- data/UPGRADING.md +38 -0
- data/docker-compose.yml +7 -0
- data/lib/restforce/collection.rb +7 -2
- data/lib/restforce/concerns/api.rb +2 -2
- data/lib/restforce/concerns/base.rb +2 -2
- data/lib/restforce/concerns/caching.rb +7 -0
- data/lib/restforce/concerns/picklists.rb +2 -2
- data/lib/restforce/concerns/streaming.rb +1 -3
- data/lib/restforce/config.rb +4 -1
- data/lib/restforce/error_code.rb +638 -0
- data/lib/restforce/file_part.rb +24 -0
- data/lib/restforce/mash.rb +7 -2
- data/lib/restforce/middleware/caching.rb +1 -1
- data/lib/restforce/middleware/logger.rb +8 -7
- data/lib/restforce/middleware/raise_error.rb +3 -4
- data/lib/restforce/middleware.rb +2 -0
- data/lib/restforce/version.rb +1 -1
- data/lib/restforce.rb +4 -7
- data/restforce.gemspec +9 -19
- data/spec/integration/abstract_client_spec.rb +41 -32
- data/spec/integration/data/client_spec.rb +6 -2
- data/spec/spec_helper.rb +24 -1
- data/spec/support/client_integration.rb +7 -7
- data/spec/support/concerns.rb +1 -1
- data/spec/support/fixture_helpers.rb +1 -3
- data/spec/support/middleware.rb +1 -2
- data/spec/unit/collection_spec.rb +20 -2
- data/spec/unit/concerns/api_spec.rb +11 -11
- data/spec/unit/concerns/authentication_spec.rb +6 -6
- data/spec/unit/concerns/caching_spec.rb +26 -0
- data/spec/unit/concerns/connection_spec.rb +2 -2
- data/spec/unit/concerns/streaming_spec.rb +3 -3
- data/spec/unit/config_spec.rb +1 -1
- data/spec/unit/error_code_spec.rb +61 -0
- data/spec/unit/middleware/authentication/jwt_bearer_spec.rb +4 -4
- data/spec/unit/middleware/authentication/password_spec.rb +2 -2
- data/spec/unit/middleware/authentication/token_spec.rb +2 -2
- data/spec/unit/middleware/authentication_spec.rb +11 -5
- data/spec/unit/middleware/gzip_spec.rb +2 -2
- data/spec/unit/middleware/raise_error_spec.rb +29 -10
- data/spec/unit/signed_request_spec.rb +1 -1
- metadata +33 -123
- data/lib/restforce/upload_io.rb +0 -9
@@ -28,4 +28,30 @@ describe Restforce::Concerns::Caching do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
32
|
+
describe '.with_caching' do
|
33
|
+
let(:options) { double('Options') }
|
34
|
+
|
35
|
+
before do
|
36
|
+
client.stub options: options
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'runs the block with caching enabled' do
|
40
|
+
options.should_receive(:[]=).with(:use_cache, true)
|
41
|
+
options.should_receive(:[]=).with(:use_cache, false)
|
42
|
+
expect { |b| client.with_caching(&b) }.to yield_control
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when an exception is raised' do
|
46
|
+
it 'ensures the :use_cache is set to false' do
|
47
|
+
options.should_receive(:[]=).with(:use_cache, true)
|
48
|
+
options.should_receive(:[]=).with(:use_cache, false)
|
49
|
+
expect {
|
50
|
+
client.with_caching do
|
51
|
+
raise 'Foo'
|
52
|
+
end
|
53
|
+
}.to raise_error 'Foo'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
31
57
|
end
|
@@ -73,9 +73,9 @@ describe Restforce::Concerns::Connection do
|
|
73
73
|
Restforce.stub(log?: true)
|
74
74
|
end
|
75
75
|
|
76
|
-
it "must always be used
|
76
|
+
it "must always be used as the last handler" do
|
77
77
|
client.middleware.handlers.reverse.index(Restforce::Middleware::Logger).
|
78
|
-
should eq
|
78
|
+
should eq 0
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -13,10 +13,10 @@ describe Restforce::Concerns::Streaming, event_machine: true do
|
|
13
13
|
it 'subscribes to the topics with faye' do
|
14
14
|
faye_double.
|
15
15
|
should_receive(:subscribe).
|
16
|
-
with(channels
|
16
|
+
with(channels)
|
17
17
|
client.stub faye: faye_double
|
18
18
|
|
19
|
-
client.subscription(channels
|
19
|
+
client.subscription(channels)
|
20
20
|
end
|
21
21
|
|
22
22
|
context "replay_handlers" do
|
@@ -110,7 +110,7 @@ describe Restforce::Concerns::Streaming, event_machine: true do
|
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
|
-
describe
|
113
|
+
describe "ReplayExtension" do
|
114
114
|
let(:handlers) { {} }
|
115
115
|
let(:extension) { Restforce::Concerns::Streaming::ReplayExtension.new(handlers) }
|
116
116
|
|
data/spec/unit/config_spec.rb
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Restforce::ErrorCode do
|
6
|
+
describe "mapping of error codes to classes" do
|
7
|
+
subject(:error_exception_classes) { described_class::ERROR_EXCEPTION_CLASSES }
|
8
|
+
|
9
|
+
let(:exception_classes) do
|
10
|
+
described_class.constants.
|
11
|
+
map { |constant_name| described_class.const_get(constant_name) }.
|
12
|
+
select { |constant| constant.is_a?(Class) }
|
13
|
+
end
|
14
|
+
|
15
|
+
it "maps all defined exception classes to an error code" do
|
16
|
+
exception_classes.each do |exception_class|
|
17
|
+
expect(error_exception_classes.values).to include(exception_class)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "maps all error codes to a defined exception class" do
|
22
|
+
error_exception_classes.each_value do |mapped_exception_class|
|
23
|
+
expect(exception_classes).to include(mapped_exception_class)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.get_exception_class' do
|
29
|
+
context 'when a non-existent error code is looked up' do
|
30
|
+
let(:new_error_code) { 'ANOTHER_NEW_ERROR_CODE' }
|
31
|
+
subject { described_class.get_exception_class(new_error_code) }
|
32
|
+
|
33
|
+
it { should be Restforce::ResponseError }
|
34
|
+
|
35
|
+
it 'outputs a warning' do
|
36
|
+
expect(Warning).to receive(:warn)
|
37
|
+
subject
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'when a known error code is looked up' do
|
42
|
+
let(:existing_error_code) { "ALL_OR_NONE_OPERATION_ROLLED_BACK" }
|
43
|
+
let(:existing_error) { described_class::AllOrNoneOperationRolledBack }
|
44
|
+
|
45
|
+
subject do
|
46
|
+
described_class.get_exception_class(existing_error_code)
|
47
|
+
end
|
48
|
+
|
49
|
+
it { should < Restforce::ResponseError }
|
50
|
+
|
51
|
+
it 'returns existing error' do
|
52
|
+
should be(existing_error)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'does not output a warning' do
|
56
|
+
expect(Warning).to_not receive(:warn)
|
57
|
+
subject
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -17,14 +17,14 @@ describe Restforce::Middleware::Authentication::JWTBearer do
|
|
17
17
|
let(:success_request) do
|
18
18
|
stub_login_request(
|
19
19
|
body: "grant_type=grant_type—urn:ietf:params:oauth:grant-type:jwt-bearer&" \
|
20
|
-
|
20
|
+
"assertion=abc1234567890"
|
21
21
|
).to_return(status: 200, body: fixture(:auth_success_response))
|
22
22
|
end
|
23
23
|
|
24
24
|
let(:fail_request) do
|
25
25
|
stub_login_request(
|
26
26
|
body: "grant_type=grant_type—urn:ietf:params:oauth:grant-type:jwt-bearer&" \
|
27
|
-
|
27
|
+
"assertion=abc1234567890"
|
28
28
|
).to_return(status: 400, body: fixture(:refresh_error_response))
|
29
29
|
end
|
30
30
|
end
|
@@ -47,14 +47,14 @@ describe Restforce::Middleware::Authentication::JWTBearer do
|
|
47
47
|
let(:success_request) do
|
48
48
|
stub_login_request(
|
49
49
|
body: "grant_type=grant_type—urn:ietf:params:oauth:grant-type:jwt-bearer&" \
|
50
|
-
|
50
|
+
"assertion=abc1234567890"
|
51
51
|
).to_return(status: 200, body: fixture(:auth_success_response))
|
52
52
|
end
|
53
53
|
|
54
54
|
let(:fail_request) do
|
55
55
|
stub_login_request(
|
56
56
|
body: "grant_type=grant_type—urn:ietf:params:oauth:grant-type:jwt-bearer&" \
|
57
|
-
|
57
|
+
"assertion=abc1234567890"
|
58
58
|
).to_return(status: 400, body: fixture(:refresh_error_response))
|
59
59
|
end
|
60
60
|
end
|
@@ -17,14 +17,14 @@ describe Restforce::Middleware::Authentication::Password do
|
|
17
17
|
let(:success_request) do
|
18
18
|
stub_login_request(
|
19
19
|
body: "grant_type=password&client_id=client_id&client_secret=client_secret" \
|
20
|
-
|
20
|
+
"&username=foo&password=barsecurity_token"
|
21
21
|
).to_return(status: 200, body: fixture(:auth_success_response))
|
22
22
|
end
|
23
23
|
|
24
24
|
let(:fail_request) do
|
25
25
|
stub_login_request(
|
26
26
|
body: "grant_type=password&client_id=client_id&client_secret=client_secret" \
|
27
|
-
|
27
|
+
"&username=foo&password=barsecurity_token"
|
28
28
|
).to_return(status: 400, body: fixture(:auth_error_response))
|
29
29
|
end
|
30
30
|
end
|
@@ -15,14 +15,14 @@ describe Restforce::Middleware::Authentication::Token do
|
|
15
15
|
let(:success_request) do
|
16
16
|
stub_login_request(
|
17
17
|
body: "grant_type=refresh_token&refresh_token=refresh_token&" \
|
18
|
-
|
18
|
+
"client_id=client_id&client_secret=client_secret"
|
19
19
|
).to_return(status: 200, body: fixture(:auth_success_response))
|
20
20
|
end
|
21
21
|
|
22
22
|
let(:fail_request) do
|
23
23
|
stub_login_request(
|
24
24
|
body: "grant_type=refresh_token&refresh_token=refresh_token&" \
|
25
|
-
|
25
|
+
"client_id=client_id&client_secret=client_secret"
|
26
26
|
).to_return(status: 400, body: fixture(:refresh_error_response))
|
27
27
|
end
|
28
28
|
end
|
@@ -8,7 +8,9 @@ describe Restforce::Middleware::Authentication do
|
|
8
8
|
proxy_uri: 'https://not-a-real-site.com',
|
9
9
|
authentication_retries: retries,
|
10
10
|
adapter: :net_http,
|
11
|
+
# rubocop:disable Naming/VariableNumber
|
11
12
|
ssl: { version: :TLSv1_2 } }
|
13
|
+
# rubocop:enable Naming/VariableNumber
|
12
14
|
end
|
13
15
|
|
14
16
|
describe '.authenticate!' do
|
@@ -57,10 +59,10 @@ describe Restforce::Middleware::Authentication do
|
|
57
59
|
end
|
58
60
|
|
59
61
|
its(:handlers) {
|
60
|
-
should include FaradayMiddleware::ParseJson
|
61
|
-
Faraday::Adapter::NetHttp
|
62
|
+
should include FaradayMiddleware::ParseJson
|
62
63
|
}
|
63
64
|
its(:handlers) { should_not include Restforce::Middleware::Logger }
|
65
|
+
its(:adapter) { should eq Faraday::Adapter::NetHttp }
|
64
66
|
end
|
65
67
|
|
66
68
|
context 'with logging enabled' do
|
@@ -70,8 +72,9 @@ describe Restforce::Middleware::Authentication do
|
|
70
72
|
|
71
73
|
its(:handlers) {
|
72
74
|
should include FaradayMiddleware::ParseJson,
|
73
|
-
Restforce::Middleware::Logger
|
75
|
+
Restforce::Middleware::Logger
|
74
76
|
}
|
77
|
+
its(:adapter) { should eq Faraday::Adapter::NetHttp }
|
75
78
|
end
|
76
79
|
|
77
80
|
context 'with specified adapter' do
|
@@ -80,13 +83,16 @@ describe Restforce::Middleware::Authentication do
|
|
80
83
|
end
|
81
84
|
|
82
85
|
its(:handlers) {
|
83
|
-
should include FaradayMiddleware::ParseJson
|
86
|
+
should include FaradayMiddleware::ParseJson
|
84
87
|
}
|
88
|
+
its(:adapter) { should eq Faraday::Adapter::Typhoeus }
|
85
89
|
end
|
86
90
|
end
|
87
91
|
|
88
92
|
it "should have SSL config set" do
|
93
|
+
# rubocop:disable Naming/VariableNumber
|
89
94
|
connection.ssl[:version].should eq(:TLSv1_2)
|
95
|
+
# rubocop:enable Naming/VariableNumber
|
90
96
|
end
|
91
97
|
end
|
92
98
|
|
@@ -94,7 +100,7 @@ describe Restforce::Middleware::Authentication do
|
|
94
100
|
context 'when response.body is present' do
|
95
101
|
let(:response) {
|
96
102
|
Faraday::Response.new(
|
97
|
-
|
103
|
+
response_body: { 'error' => 'error', 'error_description' => 'description' },
|
98
104
|
status: 401
|
99
105
|
)
|
100
106
|
}
|
@@ -58,11 +58,11 @@ describe Restforce::Middleware::Gzip do
|
|
58
58
|
env[:response_headers]['Content-Encoding'] = 'gzip'
|
59
59
|
end
|
60
60
|
|
61
|
-
it { should
|
61
|
+
it { should be true }
|
62
62
|
end
|
63
63
|
|
64
64
|
context 'when not gzipped' do
|
65
|
-
it { should
|
65
|
+
it { should be false }
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -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
|
18
|
-
|
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
|
44
|
-
|
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
|
57
|
-
|
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
|
80
|
-
|
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
|
85
|
-
|
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
|
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
|
+
version: 5.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Eric J. Holmes
|
8
7
|
- Tim Rogers
|
9
|
-
|
8
|
+
- Eric J. Holmes
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-10-13 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: '2.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: '2.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: '
|
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: '
|
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
|
@@ -100,109 +72,44 @@ dependencies:
|
|
100
72
|
- !ruby/object:Gem::Version
|
101
73
|
version: '5.0'
|
102
74
|
- !ruby/object:Gem::Dependency
|
103
|
-
name:
|
75
|
+
name: jwt
|
104
76
|
requirement: !ruby/object:Gem::Requirement
|
105
77
|
requirements:
|
106
78
|
- - ">="
|
107
79
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
109
|
-
type: :
|
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:
|
116
|
-
|
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
|
@@ -221,6 +128,8 @@ files:
|
|
221
128
|
- lib/restforce/config.rb
|
222
129
|
- lib/restforce/data/client.rb
|
223
130
|
- lib/restforce/document.rb
|
131
|
+
- lib/restforce/error_code.rb
|
132
|
+
- lib/restforce/file_part.rb
|
224
133
|
- lib/restforce/mash.rb
|
225
134
|
- lib/restforce/middleware.rb
|
226
135
|
- lib/restforce/middleware/authentication.rb
|
@@ -240,7 +149,6 @@ files:
|
|
240
149
|
- lib/restforce/signed_request.rb
|
241
150
|
- lib/restforce/sobject.rb
|
242
151
|
- lib/restforce/tooling/client.rb
|
243
|
-
- lib/restforce/upload_io.rb
|
244
152
|
- lib/restforce/version.rb
|
245
153
|
- restforce.gemspec
|
246
154
|
- script/bootstrap
|
@@ -306,6 +214,7 @@ files:
|
|
306
214
|
- spec/unit/config_spec.rb
|
307
215
|
- spec/unit/data/client_spec.rb
|
308
216
|
- spec/unit/document_spec.rb
|
217
|
+
- spec/unit/error_code_spec.rb
|
309
218
|
- spec/unit/mash_spec.rb
|
310
219
|
- spec/unit/middleware/authentication/jwt_bearer_spec.rb
|
311
220
|
- spec/unit/middleware/authentication/password_spec.rb
|
@@ -321,13 +230,13 @@ files:
|
|
321
230
|
- spec/unit/signed_request_spec.rb
|
322
231
|
- spec/unit/sobject_spec.rb
|
323
232
|
- spec/unit/tooling/client_spec.rb
|
324
|
-
homepage:
|
233
|
+
homepage: https://restforce.github.io/
|
325
234
|
licenses:
|
326
235
|
- MIT
|
327
236
|
metadata:
|
328
237
|
source_code_uri: https://github.com/restforce/restforce
|
329
238
|
changelog_uri: https://github.com/restforce/restforce/blob/master/CHANGELOG.md
|
330
|
-
post_install_message:
|
239
|
+
post_install_message:
|
331
240
|
rdoc_options: []
|
332
241
|
require_paths:
|
333
242
|
- lib
|
@@ -335,17 +244,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
335
244
|
requirements:
|
336
245
|
- - ">="
|
337
246
|
- !ruby/object:Gem::Version
|
338
|
-
version: '2.
|
247
|
+
version: '2.6'
|
339
248
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
340
249
|
requirements:
|
341
250
|
- - ">="
|
342
251
|
- !ruby/object:Gem::Version
|
343
252
|
version: '0'
|
344
253
|
requirements: []
|
345
|
-
rubygems_version: 3.
|
346
|
-
signing_key:
|
254
|
+
rubygems_version: 3.2.22
|
255
|
+
signing_key:
|
347
256
|
specification_version: 4
|
348
|
-
summary: A lightweight
|
257
|
+
summary: A lightweight Ruby client for the Salesforce REST API
|
349
258
|
test_files:
|
350
259
|
- spec/fixtures/auth_error_response.json
|
351
260
|
- spec/fixtures/auth_success_response.json
|
@@ -406,6 +315,7 @@ test_files:
|
|
406
315
|
- spec/unit/config_spec.rb
|
407
316
|
- spec/unit/data/client_spec.rb
|
408
317
|
- spec/unit/document_spec.rb
|
318
|
+
- spec/unit/error_code_spec.rb
|
409
319
|
- spec/unit/mash_spec.rb
|
410
320
|
- spec/unit/middleware/authentication/jwt_bearer_spec.rb
|
411
321
|
- spec/unit/middleware/authentication/password_spec.rb
|