samurai 0.2.23 → 0.2.24

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: .
11
11
  specs:
12
- samurai (0.2.23)
12
+ samurai (0.2.24)
13
13
  activeresource (>= 2.2.2)
14
14
 
15
15
  GEM
@@ -38,7 +38,7 @@ class Samurai::PaymentMethod < Samurai::Base
38
38
  def process_response_errors
39
39
  if respond_to?(:messages) && self.messages
40
40
  self.messages.each do |message|
41
- self.errors.add message.context.gsub(/\./, ' '), message.key
41
+ self.errors.add message.context, message.description
42
42
  end
43
43
  end
44
44
  end
@@ -70,7 +70,7 @@ class Samurai::Transaction < Samurai::Base
70
70
  if self.processor_response && self.processor_response.messages
71
71
  self.processor_response.messages.each do |message|
72
72
  if message.subclass == 'error'
73
- self.errors.add message.context.gsub(/\./, ' '), message.key
73
+ self.errors.add message.context, message.description
74
74
  end
75
75
  end
76
76
  end
@@ -1,3 +1,3 @@
1
1
  module Samurai
2
- VERSION = "0.2.23".freeze
2
+ VERSION = "0.2.24".freeze
3
3
  end
@@ -2,39 +2,81 @@ require 'spec_helper'
2
2
 
3
3
  describe "processing purchases" do
4
4
 
5
- before :each do
6
- payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
7
- @purchase = Samurai::Processor.purchase(payment_method_token, 1.0, :billing_reference=>rand(1000))
8
- end
9
-
10
- it "should process successfully" do
11
- @purchase.processor_response.success.should be_true
12
- end
5
+ describe 'for a successful transaction' do
6
+ before :each do
7
+ @payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
8
+ @purchase = Samurai::Processor.purchase(@payment_method_token, 1.0, :billing_reference=>rand(1000))
9
+ end
13
10
 
14
- it "should be able to void a recent purchase" do
15
- void = @purchase.void
16
- void.processor_response.success.should be_true
17
- end
11
+ it "should process successfully" do
12
+ @purchase.processor_response.success.should be_true
13
+ end
14
+
15
+ it "should be able to void a recent purchase" do
16
+ void = @purchase.void
17
+ void.processor_response.success.should be_true
18
+ end
19
+
20
+ it "should not be able to credit a recent purchase" do
21
+ credit = @purchase.credit
22
+ credit.processor_response.success.should be_false
23
+ end
24
+
25
+ it "should be able to reverse a recent purchase" do
26
+ reverse = @purchase.reverse
27
+ reverse.processor_response.success.should be_true
28
+ end
29
+
30
+ it "should be able to reverse a settled purchase" do
31
+ pending "currently we cannot force settle a purchase, so can't test this properly"
32
+ reverse = @purchase.reverse
33
+ reverse.processor_response.success.should be_true
34
+ end
18
35
 
19
- it "should not be able to credit a recent purchase" do
20
- credit = @purchase.credit
21
- credit.processor_response.success.should be_false
36
+ it "should be able to credit a settled purchase" do
37
+ pending "currently we cannot force settle a purchase, so can't test this properly"
38
+ credit = @purchase.credit
39
+ credit.processor_response.success.should be_true
40
+ end
22
41
  end
23
42
 
24
- it "should be able to reverse a recent purchase" do
25
- reverse = @purchase.reverse
26
- reverse.processor_response.success.should be_true
43
+ describe 'for a declined transaction' do
44
+ before :each do
45
+ @payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
46
+ @purchase = Samurai::Processor.purchase(@payment_method_token, 1.02)
47
+ end
48
+
49
+ it "should process" do
50
+ @purchase.processor_response.success.should be_false
51
+ [@purchase.errors['processor.transaction']].flatten.first.should == 'The card was declined.'
52
+ end
27
53
  end
28
54
 
29
- it "should be able to reverse a settled purchase" do
30
- pending "currently we cannot force settle a purchase, so can't test this properly"
31
- reverse = @purchase.reverse
32
- reverse.processor_response.success.should be_true
55
+
56
+ describe 'for a invalid card number transaction' do
57
+ before :each do
58
+ @payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
59
+ @purchase = Samurai::Processor.purchase(@payment_method_token, 1.07)
60
+ end
61
+
62
+ it "should process" do
63
+ @purchase.processor_response.success.should be_false
64
+ [@purchase.errors['input.card_number']].flatten.first.should == 'The card number was invalid.'
65
+ end
33
66
  end
34
67
 
35
- it "should be able to credit a settled purchase" do
36
- pending "currently we cannot force settle a purchase, so can't test this properly"
37
- credit = @purchase.credit
38
- credit.processor_response.success.should be_true
68
+ describe 'for a expired card transaction' do
69
+ before :each do
70
+ @payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
71
+ @purchase = Samurai::Processor.purchase(@payment_method_token, 1.08)
72
+ end
73
+
74
+ it "should process" do
75
+ @purchase.processor_response.success.should be_false
76
+ [@purchase.errors['input.expiry_month']].flatten.first.should == 'The expiration date month was invalid, or prior to today.'
77
+ [@purchase.errors['input.expiry_year']].flatten.first.should == 'The expiration date year was invalid, or prior to today.'
78
+ end
39
79
  end
80
+
81
+
40
82
  end
@@ -38,41 +38,43 @@ Samurai.options = {
38
38
  require 'logger'
39
39
  ActiveResource::Base.logger = Logger.new(STDOUT)
40
40
 
41
- module ActiveResource
42
- class Connection
43
- private
44
- # Makes a request to the remote service.
45
- def request(method, path, *arguments)
46
- result = ActiveSupport::Notifications.instrument("request.active_resource") do |payload|
47
- payload[:method] = method
48
- payload[:request_uri] = "#{site.scheme}://#{site.host}:#{site.port}#{path}"
49
- payload[:request_arguments] = arguments
50
- payload[:result] = http.send(method, path, *arguments)
41
+ if [ActiveResource::VERSION::MAJOR, ActiveResource::VERSION::MINOR].compact.join('.').to_f >= 3.0
42
+ module ActiveResource
43
+ class Connection
44
+ private
45
+ # Makes a request to the remote service.
46
+ def request(method, path, *arguments)
47
+ result = ActiveSupport::Notifications.instrument("request.active_resource") do |payload|
48
+ payload[:method] = method
49
+ payload[:request_uri] = "#{site.scheme}://#{site.host}:#{site.port}#{path}"
50
+ payload[:request_arguments] = arguments
51
+ payload[:result] = http.send(method, path, *arguments)
52
+ end
53
+ handle_response(result)
54
+ rescue Timeout::Error => e
55
+ raise TimeoutError.new(e.message)
56
+ rescue OpenSSL::SSL::SSLError => e
57
+ raise SSLError.new(e.message)
51
58
  end
52
- handle_response(result)
53
- rescue Timeout::Error => e
54
- raise TimeoutError.new(e.message)
55
- rescue OpenSSL::SSL::SSLError => e
56
- raise SSLError.new(e.message)
57
- end
59
+ end
58
60
  end
59
- end
60
61
 
61
- module ActiveResource
62
- class VerboseLogSubscriber < ActiveSupport::LogSubscriber
63
- def request(event)
64
- result = event.payload[:result]
65
- info "#{event.payload[:method].to_s.upcase} #{event.payload[:request_uri]}"
66
- event.payload[:request_arguments].each {|s| debug s }
67
- info "--> %d %s %d (%.1fms)" % [result.code, result.message, result.body.to_s.length, event.duration]
68
- debug result.body.to_s
69
- end
62
+ module ActiveResource
63
+ class VerboseLogSubscriber < ActiveSupport::LogSubscriber
64
+ def request(event)
65
+ result = event.payload[:result]
66
+ info "#{event.payload[:method].to_s.upcase} #{event.payload[:request_uri]}"
67
+ event.payload[:request_arguments].each {|s| debug s }
68
+ info "--> %d %s %d (%.1fms)" % [result.code, result.message, result.body.to_s.length, event.duration]
69
+ debug result.body.to_s
70
+ end
70
71
 
71
- def logger
72
- ActiveResource::Base.logger
72
+ def logger
73
+ ActiveResource::Base.logger
74
+ end
73
75
  end
74
76
  end
75
- end
76
77
 
77
- ActiveSupport::Notifications.unsubscribe "request.active_resource"
78
- ActiveResource::VerboseLogSubscriber.attach_to :active_resource
78
+ ActiveSupport::Notifications.unsubscribe "request.active_resource"
79
+ ActiveResource::VerboseLogSubscriber.attach_to :active_resource
80
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samurai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.23
4
+ version: 0.2.24
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2011-11-04 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activeresource
17
- requirement: &70268836094780 !ruby/object:Gem::Requirement
17
+ requirement: &70345403388140 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 2.2.2
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70268836094780
25
+ version_requirements: *70345403388140
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &70268836094280 !ruby/object:Gem::Requirement
28
+ requirement: &70345403387640 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.0.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70268836094280
36
+ version_requirements: *70345403387640
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &70268836093800 !ruby/object:Gem::Requirement
39
+ requirement: &70345403387140 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 2.6.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70268836093800
47
+ version_requirements: *70345403387140
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: fakeweb
50
- requirement: &70268836093420 !ruby/object:Gem::Requirement
50
+ requirement: &70345403386760 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70268836093420
58
+ version_requirements: *70345403386760
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: ruby-debug19
61
- requirement: &70268836092920 !ruby/object:Gem::Requirement
61
+ requirement: &70345403386220 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70268836092920
69
+ version_requirements: *70345403386220
70
70
  description: If you are an online merchant and using samurai.feefighters.com, this
71
71
  gem will make your life easy. Integrate with the samurai.feefighters.com portal
72
72
  and process transaction.