braintree 2.81.0 → 2.82.0

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 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