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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8046a5171d6ad591681775c5d7042588ef1cf9ba
4
- data.tar.gz: 82c32c31d3e726b76b1f2c98352bcb63b5d8a146
3
+ metadata.gz: de37c6678e279362737c8c278d58ebef4935302a
4
+ data.tar.gz: 1ceaa6ef70f84c0d76bd200efb95b3221ada0521
5
5
  SHA512:
6
- metadata.gz: 5b1dcb594b7b22c7fbe83df0981bc3ef56268a8bfd95e934dcd70c3264bd8f05e35945ee98f00ad91dad415a7e97cfe8164c645871c634ea9caa79f683dda72f
7
- data.tar.gz: 55903ce006bde24e7b3a06e7170a20378555d1c4cab740b9d3162085ddf67a14e3f6ca3ff5b96f9350e07de1cb7e6dff783fd8d6f030235996f7cd4f4429d324
6
+ metadata.gz: 33620a7bc3f8868a68af85b47761d51de73185d4586ee7a250c99cf503230327bfaafcc8edfe4c621c8df6dc6f4f0667831b5fd76fcacae3078e51111b4dc67e
7
+ data.tar.gz: 68934f2a0e2f6a02cc1dc5a8768dd664f1e0f3522cb7e8ee6ed7855a65f012ac371a72e723b325ec8813dbd7c14041271f801a6acd8455b3c2b391de62b29f17
@@ -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, content)
83
- Configuration.gateway.dispute.add_text_evidence(dispute_id, content)
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
- attr_reader :created_at
8
- attr_reader :id
9
- attr_reader :sent_to_processor_at
10
- attr_reader :url
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
- set_instance_variables_from_hash attributes unless attributes.nil?
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, content)
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, "content cannot be blank" if content.nil? || content.to_s.strip == ""
47
-
48
- params = {comments: content}
49
- response = @config.http.post("#{@config.base_merchant_path}/disputes/#{dispute_id}/evidence", params)
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]))
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 2
4
- Minor = 81
4
+ Minor = 82
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
@@ -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.81.0
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-04 00:00:00.000000000 Z
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.4.8
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