sage_pay 0.2.12 → 0.2.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.13
4
+
5
+ * If the country for an address is the US, then the US state is required.
6
+ Otherwise, it should not be supplied since it only make sense in the context
7
+ of US states.
8
+
9
+ * Use Bundler to track development dependencies.
10
+
11
+ * Record that ActiveSupport is actually a dependency.
12
+
13
+ ## 0.2.12
14
+
15
+ * Somehow didn't make it into the ChangeLog. Some bug fix or other I'd
16
+ imagine. :)
17
+
3
18
  ## 0.2.11
4
19
 
5
20
  * Cancel support for cancelling existing authorised transactions.
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ # Source gems from the default public repository
2
+ source :rubygems
3
+
4
+ gem 'activesupport', '>= 2.3.8'
5
+ gem 'validatable', '>= 1.6.7'
6
+ gem 'uuid', '>= 2.3.1'
7
+
8
+ group :development do
9
+ gem 'rake'
10
+ gem 'rspec'
11
+ end
@@ -0,0 +1,39 @@
1
+ ---
2
+ dependencies:
3
+ rake:
4
+ group:
5
+ - :development
6
+ version: ">= 0"
7
+ uuid:
8
+ group:
9
+ - :default
10
+ version: ">= 2.3.1"
11
+ rspec:
12
+ group:
13
+ - :development
14
+ version: ">= 0"
15
+ activesupport:
16
+ group:
17
+ - :default
18
+ version: ">= 2.3.8"
19
+ validatable:
20
+ group:
21
+ - :default
22
+ version: ">= 1.6.7"
23
+ specs:
24
+ - rake:
25
+ version: 0.8.7
26
+ - activesupport:
27
+ version: 2.3.8
28
+ - macaddr:
29
+ version: 1.0.0
30
+ - rspec:
31
+ version: 1.3.0
32
+ - uuid:
33
+ version: 2.3.1
34
+ - validatable:
35
+ version: 1.6.7
36
+ hash: 64c077bdede3436c2ce404a8f1824f50cf7a1f7c
37
+ sources:
38
+ - Rubygems:
39
+ uri: http://gemcutter.org
@@ -7,7 +7,7 @@ require 'md5'
7
7
  require 'uuid'
8
8
 
9
9
  module SagePay
10
- VERSION = '0.2.12'
10
+ VERSION = '0.2.13'
11
11
  end
12
12
 
13
13
  require 'validatable-ext'
@@ -35,11 +35,20 @@ module SagePay
35
35
  validates_inclusion_of :state, :in => us_states, :allow_blank => true, :message => "is not a US state"
36
36
  validates_inclusion_of :country, :in => iso_3166_country_codes, :allow_blank => true, :message => "is not an ISO3166-1 country code"
37
37
 
38
+ # The state's presence is required if the country is the US, and
39
+ # verboten otherwise.
40
+ validates_true_for :state, :key => :state_required_in_us, :logic => lambda { in_us? ? state.present? : true }, :message => "is required if the country is US"
41
+ validates_true_for :state, :key => :verboten_outside_us, :logic => lambda { in_us? ? true : !state.present? }, :message => "is present but the country is not US"
42
+
38
43
  def initialize(attributes = {})
39
44
  attributes.each do |k, v|
40
45
  send("#{k}=", v)
41
46
  end
42
47
  end
48
+
49
+ def in_us?
50
+ country == "US"
51
+ end
43
52
  end
44
53
  end
45
54
  end
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'sage_pay'
10
- s.version = '0.2.12'
11
- s.date = '2010-04-28'
10
+ s.version = '0.2.13'
11
+ s.date = '2010-08-15'
12
12
  s.rubyforge_project = 'sage_pay'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -37,8 +37,9 @@ gateway for accepting credit card payments through your web app.
37
37
 
38
38
  ## List your runtime dependencies here. Runtime dependencies are those
39
39
  ## that are needed for an end user to actually USE your code.
40
- s.add_dependency('validatable', [">= 1.6.7"])
41
- s.add_dependency('uuid', [">= 2.3.0"])
40
+ s.add_dependency('activesupport', [">= 2.3.8"])
41
+ s.add_dependency('validatable', [">= 1.6.7"])
42
+ s.add_dependency('uuid', [">= 2.3.0"])
42
43
 
43
44
  ## List your development dependencies here. Development dependencies are
44
45
  ## those that are only needed during development
@@ -50,6 +51,8 @@ gateway for accepting credit card payments through your web app.
50
51
  # = MANIFEST =
51
52
  s.files = %w[
52
53
  CHANGELOG.md
54
+ Gemfile
55
+ Gemfile.lock
53
56
  LICENSE
54
57
  README.md
55
58
  Rakefile
@@ -59,6 +59,51 @@ if run_integration_specs?
59
59
  end
60
60
  end
61
61
 
62
+ describe ".payment with a US address" do
63
+ before(:each) do
64
+ @payment = SagePay::Server.payment(
65
+ :description => "Demo payment",
66
+ :amount => 12.34,
67
+ :currency => "GBP",
68
+ :billing_address => address_factory(:country => "US", :state => "WY")
69
+ )
70
+ end
71
+
72
+ it "should successfully register the payment with SagePay" do
73
+ @payment.run!.should_not be_nil
74
+ end
75
+
76
+ it "should be a valid registered payment" do
77
+ registration = @payment.run!
78
+ registration.should be_ok
79
+ end
80
+
81
+ it "should have a next URL" do
82
+ registration = @payment.run!
83
+ registration.next_url.should_not be_nil
84
+ end
85
+
86
+ it "should allow us to follow the next URL and the response should be successful" do
87
+ registration = @payment.run!
88
+ uri = URI.parse(registration.next_url)
89
+ request = Net::HTTP::Get.new(uri.request_uri)
90
+ http = Net::HTTP.new(uri.host, uri.port)
91
+ http.use_ssl = true if uri.scheme == "https"
92
+ http.start { |http|
93
+ http.request(request)
94
+ }
95
+ end
96
+
97
+ it "should allow us to retrieve signature verification details" do
98
+ @payment.run!
99
+ sig_details = @payment.signature_verification_details
100
+
101
+ sig_details.should_not be_nil
102
+ sig_details.security_key.should_not be_nil
103
+ sig_details.vendor.should_not be_nil
104
+ end
105
+ end
106
+
62
107
  describe ".deferred" do
63
108
  before(:each) do
64
109
  @payment = SagePay::Server.deferred(
@@ -100,10 +100,22 @@ describe SagePay::Server::Address do
100
100
  ]
101
101
  end
102
102
 
103
+ it "should require a US state to be present if the country is the US" do
104
+ address = address_factory(:country => "US", :state => "")
105
+ address.should_not be_valid
106
+ address.errors.on(:state).should == "is required if the country is US"
107
+ end
108
+
109
+ it "should require the US state to be absent if the country is not in the US" do
110
+ address = address_factory(:country => "GB", :state => "WY")
111
+ address.should_not be_valid
112
+ address.errors.on(:state).should == "is present but the country is not US"
113
+ end
114
+
103
115
  it "should validate the state against a list of US states" do
104
- address = address_factory(:state => "WY")
116
+ address = address_factory(:country => "US", :state => "WY")
105
117
  address.should be_valid
106
- address = address_factory(:state => "AA")
118
+ address = address_factory(:country => "US", :state => "AA")
107
119
  address.should_not be_valid
108
120
  address.errors.on(:state).should == "is not a US state"
109
121
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe SagePay do
4
- it "should be version 0.2.12" do
5
- SagePay::VERSION.should == '0.2.12'
4
+ it "should be version 0.2.13" do
5
+ SagePay::VERSION.should == '0.2.13'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sage_pay
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 13
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 2
8
- - 12
9
- version: 0.2.12
9
+ - 13
10
+ version: 0.2.13
10
11
  platform: ruby
11
12
  authors:
12
13
  - Graeme Mathieson
@@ -14,49 +15,71 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-04-28 00:00:00 +01:00
18
+ date: 2010-08-15 00:00:00 +01:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- name: validatable
22
+ name: activesupport
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 19
30
+ segments:
31
+ - 2
32
+ - 3
33
+ - 8
34
+ version: 2.3.8
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: validatable
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 1
27
46
  segments:
28
47
  - 1
29
48
  - 6
30
49
  - 7
31
50
  version: 1.6.7
32
51
  type: :runtime
33
- version_requirements: *id001
52
+ version_requirements: *id002
34
53
  - !ruby/object:Gem::Dependency
35
54
  name: uuid
36
55
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
38
58
  requirements:
39
59
  - - ">="
40
60
  - !ruby/object:Gem::Version
61
+ hash: 3
41
62
  segments:
42
63
  - 2
43
64
  - 3
44
65
  - 0
45
66
  version: 2.3.0
46
67
  type: :runtime
47
- version_requirements: *id002
68
+ version_requirements: *id003
48
69
  - !ruby/object:Gem::Dependency
49
70
  name: rspec
50
71
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
52
74
  requirements:
53
75
  - - ">="
54
76
  - !ruby/object:Gem::Version
77
+ hash: 3
55
78
  segments:
56
79
  - 0
57
80
  version: "0"
58
81
  type: :development
59
- version_requirements: *id003
82
+ version_requirements: *id004
60
83
  description: |
61
84
  This is a Ruby library for integrating with SagePay. SagePay is a payment
62
85
  gateway for accepting credit card payments through your web app.
@@ -71,6 +94,8 @@ extra_rdoc_files:
71
94
  - LICENSE
72
95
  files:
73
96
  - CHANGELOG.md
97
+ - Gemfile
98
+ - Gemfile.lock
74
99
  - LICENSE
75
100
  - README.md
76
101
  - Rakefile
@@ -123,23 +148,27 @@ rdoc_options:
123
148
  require_paths:
124
149
  - lib
125
150
  required_ruby_version: !ruby/object:Gem::Requirement
151
+ none: false
126
152
  requirements:
127
153
  - - ">="
128
154
  - !ruby/object:Gem::Version
155
+ hash: 3
129
156
  segments:
130
157
  - 0
131
158
  version: "0"
132
159
  required_rubygems_version: !ruby/object:Gem::Requirement
160
+ none: false
133
161
  requirements:
134
162
  - - ">="
135
163
  - !ruby/object:Gem::Version
164
+ hash: 3
136
165
  segments:
137
166
  - 0
138
167
  version: "0"
139
168
  requirements: []
140
169
 
141
170
  rubyforge_project: sage_pay
142
- rubygems_version: 1.3.6
171
+ rubygems_version: 1.3.7
143
172
  signing_key:
144
173
  specification_version: 2
145
174
  summary: Ruby implementation of the SagePay payment gateway protocol.