braintree 2.81.0 → 2.82.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/braintree/dispute.rb +2 -2
- data/lib/braintree/dispute/evidence.rb +11 -6
- data/lib/braintree/dispute_gateway.rb +19 -5
- data/lib/braintree/version.rb +1 -1
- data/lib/ssl/api_braintreegateway_com.ca.crt +50 -0
- data/spec/integration/braintree/dispute_spec.rb +14 -0
- data/spec/unit/braintree/dispute_spec.rb +26 -0
- metadata +3 -4
- data/spec/httpsd.pid +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de37c6678e279362737c8c278d58ebef4935302a
|
4
|
+
data.tar.gz: 1ceaa6ef70f84c0d76bd200efb95b3221ada0521
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33620a7bc3f8868a68af85b47761d51de73185d4586ee7a250c99cf503230327bfaafcc8edfe4c621c8df6dc6f4f0667831b5fd76fcacae3078e51111b4dc67e
|
7
|
+
data.tar.gz: 68934f2a0e2f6a02cc1dc5a8768dd664f1e0f3522cb7e8ee6ed7855a65f012ac371a72e723b325ec8813dbd7c14041271f801a6acd8455b3c2b391de62b29f17
|
data/lib/braintree/dispute.rb
CHANGED
@@ -79,8 +79,8 @@ module Braintree
|
|
79
79
|
Configuration.gateway.dispute.add_file_evidence(dispute_id, document_upload_id)
|
80
80
|
end
|
81
81
|
|
82
|
-
def self.add_text_evidence(dispute_id,
|
83
|
-
Configuration.gateway.dispute.add_text_evidence(dispute_id,
|
82
|
+
def self.add_text_evidence(dispute_id, content_or_request)
|
83
|
+
Configuration.gateway.dispute.add_text_evidence(dispute_id, content_or_request)
|
84
84
|
end
|
85
85
|
|
86
86
|
def self.finalize(dispute_id)
|
@@ -3,14 +3,19 @@ module Braintree
|
|
3
3
|
class Evidence # :nodoc:
|
4
4
|
include BaseModule
|
5
5
|
|
6
|
-
attr_reader :comment
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
attr_reader :comment,
|
7
|
+
:created_at,
|
8
|
+
:id,
|
9
|
+
:sent_to_processor_at,
|
10
|
+
:url,
|
11
|
+
:tag,
|
12
|
+
:sequence_number
|
11
13
|
|
12
14
|
def initialize(attributes)
|
13
|
-
|
15
|
+
unless attributes.nil?
|
16
|
+
@tag = attributes.delete(:category)
|
17
|
+
set_instance_variables_from_hash attributes
|
18
|
+
end
|
14
19
|
@sent_to_processor_at = Date.parse(sent_to_processor_at) unless sent_to_processor_at.nil?
|
15
20
|
end
|
16
21
|
end
|
@@ -40,13 +40,27 @@ module Braintree
|
|
40
40
|
raise NotFoundError, "dispute with id #{dispute_id} not found"
|
41
41
|
end
|
42
42
|
|
43
|
-
def add_text_evidence(dispute_id,
|
43
|
+
def add_text_evidence(dispute_id, content_or_request)
|
44
44
|
raise ArgumentError, "dispute_id contains invalid characters" unless dispute_id.to_s =~ /\A[\w-]+\z/
|
45
45
|
raise ArgumentError, "dispute_id cannot be blank" if dispute_id.nil? || dispute_id.to_s.strip == ""
|
46
|
-
raise ArgumentError, "
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
raise ArgumentError, "content_or_request cannot be blank" if content_or_request.nil?
|
47
|
+
|
48
|
+
request = content_or_request.is_a?(String) ? { content: content_or_request } : content_or_request
|
49
|
+
|
50
|
+
raise ArgumentError, "content cannot be blank" if request[:content].nil? || request[:content].to_s.strip == ""
|
51
|
+
raise ArgumentError, "request can only contain the keys [:content, :tag, :sequence_number]" if (request.keys - [:content, :tag, :sequence_number]).any?
|
52
|
+
raise ArgumentError, "sequence_number must be an integer" if request[:sequence_number] && request[:sequence_number].to_s.match(/\D/)
|
53
|
+
raise ArgumentError, "tag must be a string" if request[:tag] && !request[:tag].is_a?(String)
|
54
|
+
|
55
|
+
params_for_http_post = {
|
56
|
+
evidence: {
|
57
|
+
comments: request[:content]
|
58
|
+
}.tap do |evidence_params|
|
59
|
+
evidence_params[:category] = request[:tag] if request[:tag]
|
60
|
+
evidence_params[:sequence_number] = request[:sequence_number] if request[:sequence_number]
|
61
|
+
end
|
62
|
+
}
|
63
|
+
response = @config.http.post("#{@config.base_merchant_path}/disputes/#{dispute_id}/evidence", params_for_http_post)
|
50
64
|
|
51
65
|
if response[:evidence]
|
52
66
|
SuccessfulResult.new(:evidence => Dispute::Evidence.new(response[:evidence]))
|
data/lib/braintree/version.rb
CHANGED
@@ -189,3 +189,53 @@ PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
|
|
189
189
|
hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
|
190
190
|
5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
|
191
191
|
-----END CERTIFICATE-----
|
192
|
+
-----BEGIN CERTIFICATE-----
|
193
|
+
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB
|
194
|
+
vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
|
195
|
+
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp
|
196
|
+
U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W
|
197
|
+
ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
|
198
|
+
Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX
|
199
|
+
MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0
|
200
|
+
IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y
|
201
|
+
IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh
|
202
|
+
bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
203
|
+
AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF
|
204
|
+
9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH
|
205
|
+
H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H
|
206
|
+
LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN
|
207
|
+
/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT
|
208
|
+
rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud
|
209
|
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw
|
210
|
+
WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs
|
211
|
+
exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
212
|
+
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4
|
213
|
+
sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+
|
214
|
+
seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz
|
215
|
+
4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+
|
216
|
+
BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR
|
217
|
+
lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3
|
218
|
+
7M2CYfE45k+XmCpajQ==
|
219
|
+
-----END CERTIFICATE-----
|
220
|
+
-----BEGIN CERTIFICATE-----
|
221
|
+
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
|
222
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
223
|
+
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
|
224
|
+
MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
|
225
|
+
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
226
|
+
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
|
227
|
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
|
228
|
+
2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
|
229
|
+
1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
|
230
|
+
q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
|
231
|
+
tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
|
232
|
+
vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
|
233
|
+
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
|
234
|
+
5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
|
235
|
+
1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
|
236
|
+
NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
|
237
|
+
Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
|
238
|
+
8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
|
239
|
+
pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
|
240
|
+
MrY=
|
241
|
+
-----END CERTIFICATE-----
|
@@ -99,6 +99,8 @@ describe Braintree::Dispute do
|
|
99
99
|
result.evidence.id.should =~ /^\w{16,}$/
|
100
100
|
result.evidence.sent_to_processor_at.should == nil
|
101
101
|
result.evidence.url.should == nil
|
102
|
+
result.evidence.tag.should == nil
|
103
|
+
result.evidence.sequence_number.should == nil
|
102
104
|
end
|
103
105
|
|
104
106
|
it "returns a NotFoundError if the dispute doesn't exist" do
|
@@ -124,6 +126,18 @@ describe Braintree::Dispute do
|
|
124
126
|
expected_evidence.should_not == nil
|
125
127
|
expected_evidence.comment.should == "text evidence"
|
126
128
|
end
|
129
|
+
|
130
|
+
it "creates text evidence for the dispute with optional parameters" do
|
131
|
+
result = Braintree::Dispute.add_text_evidence(dispute.id, { content: "123456789", tag: "REFUND_ID", sequence_number: 7 })
|
132
|
+
|
133
|
+
result.success?.should == true
|
134
|
+
result.evidence.comment.should == "123456789"
|
135
|
+
result.evidence.created_at.between?(Time.now - 10, Time.now).should == true
|
136
|
+
result.evidence.id.should =~ /^\w{16,}$/
|
137
|
+
result.evidence.sent_to_processor_at.should == nil
|
138
|
+
result.evidence.tag.should == "REFUND_ID"
|
139
|
+
result.evidence.sequence_number.should == 7
|
140
|
+
end
|
127
141
|
end
|
128
142
|
|
129
143
|
describe "self.finalize" do
|
@@ -170,6 +170,32 @@ describe Braintree::Dispute do
|
|
170
170
|
Braintree::Dispute.add_text_evidence("dispute_id", nil)
|
171
171
|
end.to raise_error(ArgumentError)
|
172
172
|
end
|
173
|
+
|
174
|
+
describe "with optional params" do
|
175
|
+
it "does not raise an exception if the optional parameters are valid" do
|
176
|
+
expect do
|
177
|
+
Braintree::Dispute.add_text_evidence("dispute_id", nil, { tag: "", sequence_number: 3 })
|
178
|
+
end.to raise_error
|
179
|
+
end
|
180
|
+
|
181
|
+
it "raises an exception if the optional params contain invalid keys" do
|
182
|
+
expect do
|
183
|
+
Braintree::Dispute.add_text_evidence("dispute_id", nil, { random_param: "" })
|
184
|
+
end.to raise_error(ArgumentError)
|
185
|
+
end
|
186
|
+
|
187
|
+
it "raises an exception if sequence_number is provided and not an integer" do
|
188
|
+
expect do
|
189
|
+
Braintree::Dispute.add_text_evidence("dispute_id", nil, { sequence_number: "abc" })
|
190
|
+
end.to raise_error(ArgumentError)
|
191
|
+
end
|
192
|
+
|
193
|
+
it "raises an exception if the param tag is not a string" do
|
194
|
+
expect do
|
195
|
+
Braintree::Dispute.add_text_evidence("dispute_id", nil, { tag: 3 })
|
196
|
+
end.to raise_error(ArgumentError)
|
197
|
+
end
|
198
|
+
end
|
173
199
|
end
|
174
200
|
|
175
201
|
describe "self.remove_evidence" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: braintree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.82.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Braintree
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: builder
|
@@ -182,7 +182,6 @@ files:
|
|
182
182
|
- spec/fixtures/files/gif_extension_bt_logo.gif
|
183
183
|
- spec/fixtures/files/malformed_pdf.pdf
|
184
184
|
- spec/hacks/tcp_socket.rb
|
185
|
-
- spec/httpsd.pid
|
186
185
|
- spec/integration/braintree/add_on_spec.rb
|
187
186
|
- spec/integration/braintree/address_spec.rb
|
188
187
|
- spec/integration/braintree/advanced_search_spec.rb
|
@@ -296,7 +295,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
296
295
|
version: '0'
|
297
296
|
requirements: []
|
298
297
|
rubyforge_project: braintree
|
299
|
-
rubygems_version: 2.
|
298
|
+
rubygems_version: 2.6.14
|
300
299
|
signing_key:
|
301
300
|
specification_version: 4
|
302
301
|
summary: Braintree Gateway Ruby Client Library
|
data/spec/httpsd.pid
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
32587
|