paypal-express 0.2.0 → 0.2.1

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -1,43 +1,31 @@
1
1
  module Paypal
2
2
  module Express
3
3
  class Response < NVP::Response
4
- attr_accessor :on_mobile, :pay_on_paypal
4
+ attr_accessor :pay_on_paypal
5
5
 
6
6
  def initialize(response, options = {})
7
7
  super response
8
- @on_mobile = options[:on_mobile]
9
8
  @pay_on_paypal = options[:pay_on_paypal]
10
9
  end
11
10
 
12
11
  def redirect_uri
13
12
  endpoint = URI.parse Paypal.endpoint
14
- endpoint.query = query(:redirect).to_query
13
+ endpoint.query = query(:with_cmd).to_query
15
14
  endpoint.to_s
16
15
  end
17
16
 
18
17
  def popup_uri
19
18
  endpoint = URI.parse Paypal.popup_endpoint
20
- endpoint.query = query(:popup).to_query
19
+ endpoint.query = query.to_query
21
20
  endpoint.to_s
22
21
  end
23
22
 
24
23
  private
25
24
 
26
- def query(mode)
25
+ def query(with_cmd = false)
27
26
  _query_ = {:token => self.token}
28
- case mode
29
- when :redirect
30
- if self.on_mobile
31
- _query_.merge!(:cmd => '_express-checkout-mobile')
32
- else
33
- _query_.merge!(:cmd => '_express-checkout')
34
- end
35
- when :popup
36
- # No popup specific params for now
37
- end
38
- if self.pay_on_paypal
39
- _query_.merge!(:useraction => 'commit')
40
- end
27
+ _query_.merge!(:cmd => '_express-checkout') if with_cmd
28
+ _query_.merge!(:useraction => 'commit') if pay_on_paypal
41
29
  _query_
42
30
  end
43
31
  end
@@ -1,73 +1,65 @@
1
1
  require 'spec_helper.rb'
2
2
 
3
3
  describe Paypal::Exception::APIError do
4
- describe '.new' do
5
- let :error do
6
- Paypal::Exception::APIError.new response
7
- end
8
-
9
- context 'when Hash is given' do
10
- let :response do
11
- {
12
- :VERSION=>"66.0",
13
- :TIMESTAMP=>"2011-03-03T06:33:51Z",
14
- :CORRELATIONID=>"758ebdc546b9c",
15
- :L_SEVERITYCODE0=>"Error",
16
- :L_ERRORCODE0=>"10411",
17
- :L_LONGMESSAGE0=>"This Express Checkout session has expired. Token value is no longer valid.",
18
- :BUILD=>"1741654",
19
- :ACK=>"Failure",
20
- :L_SHORTMESSAGE0=>"This Express Checkout session has expired."
21
- }
22
- end
4
+ let(:error) { Paypal::Exception::APIError.new(params) }
23
5
 
24
- it 'should have Paypal::Exception::APIError::Response as response' do
25
- Paypal::Exception::APIError::Response.attribute_mapping.each do |key, value|
26
- error.response.send(value).should == response[key]
27
- end
28
- end
29
-
30
- it 'should have Paypal::Exception::APIError::Response::Detail as response.detail' do
31
- detail = error.response.details.first
32
- Paypal::Exception::APIError::Response::Detail.attribute_mapping.each do |key, value|
33
- detail.send(value).should == response[:"L_#{key}0"]
34
- end
35
- end
6
+ context 'when Hash is given' do
7
+ let :params do
8
+ {
9
+ :VERSION=>"66.0",
10
+ :TIMESTAMP=>"2011-03-03T06:33:51Z",
11
+ :CORRELATIONID=>"758ebdc546b9c",
12
+ :L_SEVERITYCODE0=>"Error",
13
+ :L_ERRORCODE0=>"10411",
14
+ :L_LONGMESSAGE0=>"This Express Checkout session has expired. Token value is no longer valid.",
15
+ :BUILD=>"1741654",
16
+ :ACK=>"Failure",
17
+ :L_SHORTMESSAGE0=>"This Express Checkout session has expired."
18
+ }
19
+ end
36
20
 
37
- it 'should have raw response as response.raw' do
38
- error.response.raw.should == response
21
+ describe '#subject' do
22
+ subject { error.response }
23
+ its(:raw) { should == params }
24
+ Paypal::Exception::APIError::Response.attribute_mapping.each do |key, attribute|
25
+ its(attribute) { should == params[key] }
39
26
  end
40
27
 
41
- context 'when unknown params given' do
42
- let :response do
43
- {
44
- :UNKNOWN => 'Unknown',
45
- :L_UNKNOWN0 => 'Unknown Detail'
46
- }
47
- end
48
-
49
- it 'should warn it and keep it only in response.raw' do
50
- Paypal.logger.should_receive(:warn).with(
51
- "Ignored Parameter (Paypal::Exception::APIError::Response): UNKNOWN=Unknown"
52
- )
53
- Paypal.logger.should_receive(:warn).with(
54
- "Ignored Parameter (Paypal::Exception::APIError::Response::Detail): UNKNOWN=Unknown Detail"
55
- )
56
- error
28
+ describe '#details' do
29
+ subject { error.response.details.first }
30
+ Paypal::Exception::APIError::Response::Detail.attribute_mapping.each do |key, attribute|
31
+ its(attribute) { should == params[:"L_#{key}0"] }
57
32
  end
58
33
  end
59
34
  end
35
+ end
60
36
 
61
- context 'otherwise' do
62
- let :response do
63
- 'Failure'
64
- end
37
+ context 'when unknown params given' do
38
+ let :params do
39
+ {
40
+ :UNKNOWN => 'Unknown',
41
+ :L_UNKNOWN0 => 'Unknown Detail'
42
+ }
43
+ end
65
44
 
66
- it 'should store response in raw format' do
67
- error = Paypal::Exception::APIError.new response
68
- error.response.should == response
69
- end
45
+ it 'should warn' do
46
+ Paypal.logger.should_receive(:warn).with(
47
+ "Ignored Parameter (Paypal::Exception::APIError::Response): UNKNOWN=Unknown"
48
+ )
49
+ Paypal.logger.should_receive(:warn).with(
50
+ "Ignored Parameter (Paypal::Exception::APIError::Response::Detail): UNKNOWN=Unknown Detail"
51
+ )
52
+ error
53
+ end
54
+ describe '#response' do
55
+ subject { error.response }
56
+ its(:raw) { should == params }
70
57
  end
71
58
  end
72
-
59
+
60
+ context 'otherwise' do
61
+ subject { error }
62
+ let(:params) { 'Failure' }
63
+ its(:response) { should == params }
64
+ end
73
65
  end
@@ -1,10 +1,8 @@
1
1
  require 'spec_helper.rb'
2
2
 
3
3
  describe Paypal::Exception::HttpError do
4
- it 'should have code, message and body' do
5
- error = Paypal::Exception::HttpError.new(400, 'BadRequest', 'You are bad man!')
6
- error.code.should == 400
7
- error.message.should == 'BadRequest'
8
- error.body.should == 'You are bad man!'
9
- end
4
+ subject { Paypal::Exception::HttpError.new(400, 'BadRequest', 'You are bad man!') }
5
+ its(:code) { should == 400 }
6
+ its(:message) { should == 'BadRequest' }
7
+ its(:body) { should == 'You are bad man!' }
10
8
  end
@@ -58,7 +58,7 @@ describe Paypal::Express::Request do
58
58
  insufficient_attributes = attributes.reject do |key, value|
59
59
  key == missing_key
60
60
  end
61
- lambda do
61
+ expect do
62
62
  Paypal::Express::Request.new insufficient_attributes
63
63
  end.should raise_error AttrRequired::AttrMissing
64
64
  end
@@ -67,7 +67,7 @@ describe Paypal::Express::Request do
67
67
 
68
68
  context 'when all required parameters are given' do
69
69
  it 'should succeed' do
70
- lambda do
70
+ expect do
71
71
  Paypal::Express::Request.new attributes
72
72
  end.should_not raise_error AttrRequired::AttrMissing
73
73
  end
@@ -82,7 +82,7 @@ describe Paypal::Express::Request do
82
82
  end
83
83
 
84
84
  it 'should support no_shipping option' do
85
- lambda do
85
+ expect do
86
86
  instance.setup instant_payment_request, :no_shipping => true
87
87
  end.should request_to 'https://api-3t.paypal.com/nvp', :post
88
88
  instance._method_.should == :SetExpressCheckout
@@ -98,7 +98,7 @@ describe Paypal::Express::Request do
98
98
 
99
99
  context 'when instance payment request given' do
100
100
  it 'should call SetExpressCheckout' do
101
- lambda do
101
+ expect do
102
102
  instance.setup instant_payment_request
103
103
  end.should request_to 'https://api-3t.paypal.com/nvp', :post
104
104
  instance._method_.should == :SetExpressCheckout
@@ -113,7 +113,7 @@ describe Paypal::Express::Request do
113
113
 
114
114
  context 'when recurring payment request given' do
115
115
  it 'should call SetExpressCheckout' do
116
- lambda do
116
+ expect do
117
117
  instance.setup recurring_payment_request
118
118
  end.should request_to 'https://api-3t.paypal.com/nvp', :post
119
119
  instance._method_.should == :SetExpressCheckout
@@ -136,7 +136,7 @@ describe Paypal::Express::Request do
136
136
  end
137
137
 
138
138
  it 'should call GetExpressCheckoutDetails' do
139
- lambda do
139
+ expect do
140
140
  instance.details 'token'
141
141
  end.should request_to 'https://api-3t.paypal.com/nvp', :post
142
142
  instance._method_.should == :GetExpressCheckoutDetails
@@ -154,7 +154,7 @@ describe Paypal::Express::Request do
154
154
  end
155
155
 
156
156
  it 'should call DoExpressCheckoutPayment' do
157
- lambda do
157
+ expect do
158
158
  instance.checkout! 'token', 'payer_id', instant_payment_request
159
159
  end.should request_to 'https://api-3t.paypal.com/nvp', :post
160
160
  instance._method_.should == :DoExpressCheckoutPayment
@@ -175,7 +175,7 @@ describe Paypal::Express::Request do
175
175
  end
176
176
 
177
177
  it 'should call CreateRecurringPaymentsProfile' do
178
- lambda do
178
+ expect do
179
179
  instance.subscribe! 'token', recurring_profile
180
180
  end.should request_to 'https://api-3t.paypal.com/nvp', :post
181
181
  instance._method_.should == :CreateRecurringPaymentsProfile
@@ -205,7 +205,7 @@ describe Paypal::Express::Request do
205
205
  end
206
206
 
207
207
  it 'should call GetRecurringPaymentsProfileDetails' do
208
- lambda do
208
+ expect do
209
209
  instance.subscription 'profile_id'
210
210
  end.should request_to 'https://api-3t.paypal.com/nvp', :post
211
211
  instance._method_.should == :GetRecurringPaymentsProfileDetails
@@ -223,7 +223,7 @@ describe Paypal::Express::Request do
223
223
  end
224
224
 
225
225
  it 'should call ManageRecurringPaymentsProfileStatus' do
226
- lambda do
226
+ expect do
227
227
  instance.renew! 'profile_id', :Cancel
228
228
  end.should request_to 'https://api-3t.paypal.com/nvp', :post
229
229
  instance._method_.should == :ManageRecurringPaymentsProfileStatus
@@ -1,6 +1,8 @@
1
1
  require 'spec_helper.rb'
2
2
 
3
3
  describe Paypal::Express::Response do
4
+ before { fake_response 'SetExpressCheckout/success' }
5
+
4
6
  let :request do
5
7
  Paypal::Express::Request.new(
6
8
  :username => 'nov',
@@ -10,63 +12,57 @@ describe Paypal::Express::Response do
10
12
  :cancel_url => 'http://example.com/cancel'
11
13
  )
12
14
  end
13
-
14
15
  let :payment_request do
15
16
  Paypal::Payment::Request.new(
16
17
  :billing_type => :RecurringPayments,
17
18
  :billing_agreement_description => 'Recurring Payment Request'
18
19
  )
19
20
  end
21
+ let(:response) { request.setup payment_request }
20
22
 
21
- let :instance do
22
- request.setup payment_request
23
+ describe '#redirect_uri' do
24
+ subject { response.redirect_uri }
25
+ it { should include 'https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=' }
23
26
  end
24
27
 
25
- describe '#initialize' do
26
- before do
27
- fake_response 'SetExpressCheckout/success'
28
- end
28
+ describe '#popup_uri' do
29
+ subject { response.popup_uri }
30
+ it { should include 'https://www.paypal.com/incontext?token=' }
31
+ end
29
32
 
30
- it 'should support on_mobile option' do
31
- response = request.setup payment_request, :on_mobile => true
32
- response.on_mobile.should be_true
33
- response.send(:query, :redirect)[:cmd].should == '_express-checkout-mobile'
34
- end
33
+ context 'when pay_on_paypal option is given' do
34
+ let(:response) { request.setup payment_request, :pay_on_paypal => true }
35
35
 
36
- it 'should support pay_on_paypal option' do
37
- response = request.setup payment_request, :pay_on_paypal => true
38
- response.pay_on_paypal.should be_true
39
- response.send(:query, :popup)[:useraction].should == 'commit'
40
- response.send(:query, :redirect)[:useraction].should == 'commit'
41
- end
42
- end
36
+ subject { response }
37
+ its(:pay_on_paypal) { should be_true }
38
+ its(:query) { should include(:useraction => 'commit') }
43
39
 
44
- describe '#redirect_uri' do
45
- it 'should return express-checkout redirect endpoint with token' do
46
- fake_response 'SetExpressCheckout/success'
47
- instance.redirect_uri.should == 'https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-5YJ90598G69065317'
40
+ describe '#redirect_uri' do
41
+ subject { response.redirect_uri }
42
+ it { should include 'useraction=commit' }
48
43
  end
49
44
 
50
- it 'should support sandbox mode' do
51
- sandbox_mode do
52
- fake_response 'SetExpressCheckout/success'
53
- instance.redirect_uri.should == 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-5YJ90598G69065317'
54
- end
45
+ describe '#popup_uri' do
46
+ subject { response.popup_uri }
47
+ it { should include 'useraction=commit' }
55
48
  end
56
49
  end
57
50
 
58
- describe '#popup_uri' do
59
- it 'should return express-checkout popup endpoint with token' do
51
+ context 'when sandbox mode' do
52
+ before do
53
+ Paypal.sandbox!
60
54
  fake_response 'SetExpressCheckout/success'
61
- instance.popup_uri.should == 'https://www.paypal.com/incontext?token=EC-5YJ90598G69065317'
62
55
  end
56
+ after { Paypal.sandbox = false }
63
57
 
64
- it 'should support sandbox mode' do
65
- sandbox_mode do
66
- fake_response 'SetExpressCheckout/success'
67
- instance.popup_uri.should == 'https://www.sandbox.paypal.com/incontext?token=EC-5YJ90598G69065317'
68
- end
58
+ describe '#redirect_uri' do
59
+ subject { response.redirect_uri }
60
+ it { should include 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=' }
69
61
  end
70
- end
71
62
 
63
+ describe '#popup_uri' do
64
+ subject { response.popup_uri }
65
+ it { should include 'https://www.sandbox.paypal.com/incontext?token=' }
66
+ end
67
+ end
72
68
  end
@@ -3,24 +3,16 @@ require 'spec_helper'
3
3
  describe Paypal::IPN do
4
4
  describe '.verify!' do
5
5
  context 'when valid' do
6
- before do
7
- fake_response 'IPN/valid', :IPN
8
- end
9
-
10
- it 'should return true' do
11
- Paypal::IPN.verify!("raw-post-body").should be_true
12
- end
6
+ before { fake_response 'IPN/valid', :IPN }
7
+ subject { Paypal::IPN.verify!('raw-post-body') }
8
+ it { should be_true }
13
9
  end
14
10
 
15
11
  context 'when invalid' do
16
- before do
17
- fake_response 'IPN/invalid', :IPN
18
- end
19
-
20
- it 'should raise Paypal::Exception::APIError' do
21
- lambda do
22
- Paypal::IPN.verify!("raw-post-body")
23
- end.should raise_error(Paypal::Exception::APIError)
12
+ before { fake_response 'IPN/invalid', :IPN }
13
+ subject {}
14
+ it do
15
+ expect { Paypal::IPN.verify!('raw-post-body') }.should raise_error(Paypal::Exception::APIError)
24
16
  end
25
17
  end
26
18
  end
@@ -20,7 +20,7 @@ describe Paypal::NVP::Request do
20
20
  insufficient_attributes = attributes.reject do |key, value|
21
21
  key == missing_key
22
22
  end
23
- lambda do
23
+ expect do
24
24
  Paypal::NVP::Request.new insufficient_attributes
25
25
  end.should raise_error AttrRequired::AttrMissing
26
26
  end
@@ -29,7 +29,7 @@ describe Paypal::NVP::Request do
29
29
 
30
30
  context 'when all required parameters are given' do
31
31
  it 'should succeed' do
32
- lambda do
32
+ expect do
33
33
  Paypal::NVP::Request.new attributes
34
34
  end.should_not raise_error AttrRequired::AttrMissing
35
35
  end
@@ -51,7 +51,7 @@ describe Paypal::NVP::Request do
51
51
 
52
52
  describe '#request' do
53
53
  it 'should POST to NPV endpoint' do
54
- lambda do
54
+ expect do
55
55
  instance.request :RPCMethod
56
56
  end.should request_to Paypal::NVP::Request::ENDPOINT[:production], :post
57
57
  end
@@ -62,7 +62,7 @@ describe Paypal::NVP::Request do
62
62
  end
63
63
 
64
64
  it 'should raise Paypal::Exception::APIError' do
65
- lambda do
65
+ expect do
66
66
  instance.request :SetExpressCheckout
67
67
  end.should raise_error(Paypal::Exception::APIError)
68
68
  end
@@ -79,7 +79,7 @@ describe Paypal::NVP::Request do
79
79
  end
80
80
 
81
81
  it 'should raise Paypal::Exception::APIError' do
82
- lambda do
82
+ expect do
83
83
  instance.request :SetExpressCheckout
84
84
  end.should raise_error(Paypal::Exception::HttpError)
85
85
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paypal-express
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - nov matake
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-03 00:00:00 +09:00
18
+ date: 2011-03-04 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -247,7 +247,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
247
  requirements: []
248
248
 
249
249
  rubyforge_project:
250
- rubygems_version: 1.5.2
250
+ rubygems_version: 1.5.3
251
251
  signing_key:
252
252
  specification_version: 3
253
253
  summary: PayPal Express Checkout API Client Supporting Both Instant and Recurring Payment