activemerchant 1.4.1 → 1.4.2

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.
Files changed (46) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG +28 -0
  3. data/Rakefile +2 -4
  4. data/lib/active_merchant/billing/credit_card.rb +2 -0
  5. data/lib/active_merchant/billing/gateways/authorize_net.rb +13 -0
  6. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +1 -1
  7. data/lib/active_merchant/billing/gateways/bogus.rb +13 -1
  8. data/lib/active_merchant/billing/gateways/braintree.rb +13 -5
  9. data/lib/active_merchant/billing/gateways/card_stream.rb +1 -5
  10. data/lib/active_merchant/billing/gateways/moneris.rb +1 -1
  11. data/lib/active_merchant/billing/gateways/pay_junction.rb +9 -3
  12. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +2 -8
  13. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -1
  14. data/lib/active_merchant/billing/gateways/psl_card.rb +7 -3
  15. data/lib/active_merchant/billing/gateways/quickpay.rb +84 -54
  16. data/lib/active_merchant/billing/gateways/sage.rb +1 -0
  17. data/lib/active_merchant/billing/gateways/trust_commerce.rb +5 -1
  18. data/lib/active_merchant/billing/gateways/wirecard.rb +20 -19
  19. data/lib/active_merchant/billing/integrations.rb +1 -0
  20. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  21. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  22. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  23. data/lib/active_merchant/lib/country.rb +21 -3
  24. data/lib/active_merchant/lib/posts_data.rb +54 -34
  25. data/lib/active_merchant/lib/requires_parameters.rb +1 -1
  26. data/test/fixtures.yml +19 -3
  27. data/test/remote/gateways/remote_braintree_test.rb +11 -4
  28. data/test/remote/gateways/remote_card_stream_test.rb +20 -20
  29. data/test/remote/gateways/remote_psl_card_test.rb +23 -4
  30. data/test/remote/gateways/remote_quickpay_test.rb +17 -9
  31. data/test/remote/gateways/remote_wirecard_test.rb +3 -2
  32. data/test/test_helper.rb +3 -2
  33. data/test/unit/credit_card_test.rb +7 -0
  34. data/test/unit/gateways/authorize_net_cim_test.rb +2 -5
  35. data/test/unit/gateways/authorize_net_test.rb +16 -6
  36. data/test/unit/gateways/bogus_test.rb +4 -0
  37. data/test/unit/gateways/moneris_test.rb +1 -1
  38. data/test/unit/gateways/payflow_test.rb +6 -2
  39. data/test/unit/gateways/quickpay_test.rb +8 -8
  40. data/test/unit/gateways/trust_commerce_test.rb +12 -0
  41. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  42. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  43. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  44. metadata +10 -5
  45. metadata.gz.sig +0 -0
  46. data/lib/tasks/cia.rb +0 -90
@@ -13,7 +13,7 @@ class QuickpayTest < Test::Unit::TestCase
13
13
  end
14
14
 
15
15
  def test_successful_purchase
16
- @gateway.expects(:ssl_post).times(2).returns(successful_authorization_response, successful_capture_response)
16
+ @gateway.expects(:ssl_post).returns(successful_authorization_response, successful_capture_response)
17
17
 
18
18
  assert response = @gateway.purchase(@amount, @credit_card, @options)
19
19
  assert_success response
@@ -45,8 +45,8 @@ class QuickpayTest < Test::Unit::TestCase
45
45
  response = @gateway.purchase(@amount, @credit_card, @options)
46
46
  assert_failure response
47
47
  assert_equal '008', response.params['qpstat']
48
- assert_equal 'Missing/error in cardnumberMissing/error in expirationdateMissing/error in card verification dataMissing/error in amountMissing/error in ordernumMissing/error in currency', response.params['qpstatmsg']
49
- assert_equal 'Missing/error in cardnumber, Missing/error in expirationdate, Missing/error in card verification data, Missing/error in amount, Missing/error in ordernum, and Missing/error in currency', response.message
48
+ assert_equal 'Missing/error in cardnumber, Missing/error in expirationdate, Missing/error in card verification data, Missing/error in amount, Missing/error in ordernum, Missing/error in currency', response.params['qpstatmsg']
49
+ assert_equal 'Missing/error in cardnumber, Missing/error in expirationdate, Missing/error in card verification data, Missing/error in amount, Missing/error in ordernum, Missing/error in currency', response.message
50
50
  end
51
51
 
52
52
  def test_merchant_error
@@ -91,22 +91,22 @@ class QuickpayTest < Test::Unit::TestCase
91
91
  private
92
92
 
93
93
  def error_response
94
- "<?xml version='1.0' encoding='ISO-8859-1'?><values qpstat='008' qpstatmsg='Missing/error in cardnumberMissing/error in expirationdateMissing/error in card verification dataMissing/error in amountMissing/error in ordernumMissing/error in currency'/>"
94
+ "<?xml version='1.0' encoding='ISO-8859-1'?><response><qpstat>008</qpstat><qpstatmsg>Missing/error in cardnumber, Missing/error in expirationdate, Missing/error in card verification data, Missing/error in amount, Missing/error in ordernum, Missing/error in currency</qpstatmsg></response>"
95
95
  end
96
96
 
97
97
  def merchant_error
98
- "<?xml version='1.0' encoding='ISO-8859-1'?><values qpstat='008' qpstatmsg='Missing/error in merchant'/>"
98
+ "<?xml version='1.0' encoding='ISO-8859-1'?><response><qpstat>008</qpstat><qpstatmsg>Missing/error in merchant</qpstatmsg></response>"
99
99
  end
100
100
 
101
101
  def successful_authorization_response
102
- "<?xml version='1.0' encoding='ISO-8859-1'?><values qpstat='000' transaction='2865261' time='070425223705' ordernum='104680' merchantemail='cody@example.com' pbsstat='000' cardtype='Visa' amount='100' qpstatmsg='OK' merchant='Shopify' msgtype='1110' currency='USD'/>"
102
+ "<?xml version='1.0' encoding='ISO-8859-1'?><response><qpstat>000</qpstat><transaction>2865261</transaction><time>070425223705</time><ordernum>104680</ordernum><merchantemail>cody@example.com</merchantemail><pbsstat>000</pbsstat><cardtype>Visa</cardtype><amount>100</amount><qpstatmsg>OK</qpstatmsg><merchant>Shopify</merchant><msgtype>1110</msgtype><currency>USD</currency></response>"
103
103
  end
104
104
 
105
105
  def successful_capture_response
106
- '<?xml version="1.0" encoding="ISO-8859-1"?><values msgtype="1230" amount="100" time="080107061755" pbsstat="000" qpstat="000" qpstatmsg="OK" currency="DKK" ordernum="4820346075804536193" transaction="2865261" merchant="Shopify" merchantemail="pixels@jadedpixel.com" />'
106
+ '<?xml version="1.0" encoding="ISO-8859-1"?><response><msgtype>1230</msgtype><amount>100</amount><time>080107061755</time><pbsstat>000</pbsstat><qpstat>000</qpstat><qpstatmsg>OK</qpstatmsg><currency>DKK</currency><ordernum>4820346075804536193</ordernum><transaction>2865261</transaction><merchant>Shopify</merchant><merchantemail>pixels@jadedpixel.com</merchantemail></response>'
107
107
  end
108
108
 
109
109
  def failed_authorization_response
110
- '<?xml version="1.0" encoding="ISO-8859-1"?><values qpstat="008" qpstatmsg="Missing/error in card verification data" />'
110
+ '<?xml version="1.0" encoding="ISO-8859-1"?><response><qpstat>008</qpstat><qpstatmsg>Missing/error in card verification data</qpstatmsg></response>'
111
111
  end
112
112
  end
@@ -58,6 +58,18 @@ class TrustCommerceTest < Test::Unit::TestCase
58
58
  assert_equal [:visa, :master, :discover, :american_express, :diners_club, :jcb], TrustCommerceGateway.supported_cardtypes
59
59
  end
60
60
 
61
+ def test_test_flag_should_be_set_when_using_test_login_in_production
62
+ Base.gateway_mode = :production
63
+ @gateway.expects(:ssl_post).returns(successful_purchase_response)
64
+ assert response = @gateway.purchase(@amount, @credit_card)
65
+ assert_success response
66
+ assert response.test?
67
+ ensure
68
+ Base.gateway_mode = :test
69
+ end
70
+
71
+ private
72
+
61
73
  def successful_purchase_response
62
74
  <<-RESPONSE
63
75
  transid=025-0007423614
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + '/../../../test_helper'
2
+
3
+ class QuickpayHelperTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @helper = Quickpay::Helper.new('order-500','24352435', :amount => 500, :currency => 'USD')
8
+ @helper.md5secret "mysecretmd5string"
9
+ @helper.return_url 'http://example.com/ok'
10
+ @helper.cancel_return_url 'http://example.com/cancel'
11
+ @helper.notify_url 'http://example.com/notify'
12
+ end
13
+
14
+ def test_basic_helper_fields
15
+ assert_field 'merchant', '24352435'
16
+ assert_field 'amount', '500'
17
+ assert_field 'ordernumber', 'order500'
18
+ end
19
+
20
+ def test_generate_md5string
21
+ assert_equal '3authorize24352435daorder500500USDhttp://example.com/okhttp://example.com/cancelhttp://example.com/notify00mysecretmd5string',
22
+ @helper.generate_md5string
23
+ end
24
+
25
+ def test_generate_md5check
26
+ assert_equal '31a0a94ce953208d05f3f3d255fff31f', @helper.generate_md5check
27
+ end
28
+
29
+ def test_unknown_mapping
30
+ assert_nothing_raised do
31
+ @helper.company_address :address => '500 Dwemthy Fox Road'
32
+ end
33
+ end
34
+
35
+ def test_setting_invalid_address_field
36
+ fields = @helper.fields.dup
37
+ @helper.billing_address :street => 'My Street'
38
+ assert_equal fields, @helper.fields
39
+ end
40
+ end
@@ -0,0 +1,69 @@
1
+ require File.dirname(__FILE__) + '/../../../test_helper'
2
+
3
+ class QuickpayNotificationTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def setup
7
+ @quickpay = Quickpay::Notification.new(http_raw_data, :md5secret => "mysecretmd5string")
8
+ end
9
+
10
+ def test_accessors
11
+ assert @quickpay.complete?
12
+ assert_equal "000", @quickpay.status
13
+ assert_equal "88", @quickpay.transaction_id
14
+ assert_equal "order-4232", @quickpay.item_id
15
+ assert_equal "89.50", @quickpay.gross
16
+ assert_equal "DKK", @quickpay.currency
17
+ assert_equal Time.parse("2008-11-05 21:57:37"), @quickpay.received_at
18
+ assert @quickpay.test?
19
+ end
20
+
21
+ def test_compositions
22
+ assert_equal Money.new(8950, 'DKK'), @quickpay.amount
23
+ end
24
+
25
+ def test_acknowledgement
26
+ assert @quickpay.acknowledge
27
+ end
28
+
29
+ def test_failed_acknnowledgement
30
+ @quickpay = Quickpay::Notification.new(http_raw_data, :md5secret => "badmd5string")
31
+ assert !@quickpay.acknowledge
32
+ end
33
+
34
+ def test_acknowledgement_with_cardnumber
35
+ @quickpay = Quickpay::Notification.new(http_raw_data_with_cardnumber, :md5secret => "mysecretmd5string")
36
+ assert @quickpay.acknowledge
37
+ end
38
+
39
+ def test_quickpay_attributes
40
+ assert_equal "Authorized", @quickpay.state
41
+ assert_equal "authorize", @quickpay.msgtype
42
+ end
43
+
44
+ def test_generate_md5string
45
+ assert_equal "authorizeorder-42328950DKK081105215737Authorized000Ok000OK89898989info@pinds.com88visa-dkYesmysecretmd5string",
46
+ @quickpay.generate_md5string
47
+ end
48
+
49
+ def test_generate_md5check
50
+ assert_equal "e70bd0e528dc335ac74d5f1c348fe2f4", @quickpay.generate_md5check
51
+ end
52
+
53
+ def test_respond_to_acknowledge
54
+ assert @quickpay.respond_to?(:acknowledge)
55
+ end
56
+
57
+ private
58
+ def http_raw_data
59
+ "msgtype=authorize&ordernumber=order-4232&amount=8950&currency=DKK&time=081105215737&state=Authorized&" +
60
+ "chstat=000&chstatmsg=Ok&qpstat=000&qpstatmsg=OK&merchant=89898989&merchantemail=info@pinds.com&transaction=88&" +
61
+ "cardtype=visa-dk&testmode=Yes&md5check=e70bd0e528dc335ac74d5f1c348fe2f4"
62
+ end
63
+
64
+ def http_raw_data_with_cardnumber
65
+ "msgtype=authorize&ordernumber=order-4232&amount=8950&currency=DKK&time=081105215737&state=Authorized&" +
66
+ "chstat=000&chstatmsg=Ok&qpstat=000&qpstatmsg=OK&merchant=89898989&merchantemail=info@pinds.com&transaction=88&" +
67
+ "cardtype=visa-dk&testmode=Yes&cardnumber=XXXXXXXXXXXX4092&md5check=bded8685e10790a9351a9d51285cec9d"
68
+ end
69
+ end
@@ -0,0 +1,9 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class QuickpayModuleTest < Test::Unit::TestCase
4
+ include ActiveMerchant::Billing::Integrations
5
+
6
+ def test_notification_method
7
+ assert_instance_of Quickpay::Notification, Quickpay.notification('name=cody')
8
+ end
9
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activemerchant
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Luetke
@@ -30,7 +30,7 @@ cert_chain:
30
30
  hPaSTyVU0yCSnw==
31
31
  -----END CERTIFICATE-----
32
32
 
33
- date: 2008-12-09 00:00:00 -05:00
33
+ date: 2009-04-24 00:00:00 -04:00
34
34
  default_executable:
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
@@ -41,7 +41,7 @@ dependencies:
41
41
  requirements:
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: 1.4.1
44
+ version: 2.3.2
45
45
  version:
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: builder
@@ -169,6 +169,10 @@ files:
169
169
  - lib/active_merchant/billing/integrations/paypal/notification.rb
170
170
  - lib/active_merchant/billing/integrations/paypal/return.rb
171
171
  - lib/active_merchant/billing/integrations/paypal.rb
172
+ - lib/active_merchant/billing/integrations/quickpay
173
+ - lib/active_merchant/billing/integrations/quickpay/helper.rb
174
+ - lib/active_merchant/billing/integrations/quickpay/notification.rb
175
+ - lib/active_merchant/billing/integrations/quickpay.rb
172
176
  - lib/active_merchant/billing/integrations/return.rb
173
177
  - lib/active_merchant/billing/integrations/two_checkout
174
178
  - lib/active_merchant/billing/integrations/two_checkout/helper.rb
@@ -190,8 +194,6 @@ files:
190
194
  - lib/certs/cacert.pem
191
195
  - lib/support
192
196
  - lib/support/gateway_support.rb
193
- - lib/tasks
194
- - lib/tasks/cia.rb
195
197
  - test/extra
196
198
  - test/extra/binding_of_caller.rb
197
199
  - test/extra/breakpoint.rb
@@ -319,6 +321,7 @@ files:
319
321
  - test/unit/integrations/helpers/hi_trust_helper_test.rb
320
322
  - test/unit/integrations/helpers/nochex_helper_test.rb
321
323
  - test/unit/integrations/helpers/paypal_helper_test.rb
324
+ - test/unit/integrations/helpers/quickpay_helper_test.rb
322
325
  - test/unit/integrations/helpers/two_checkout_helper_test.rb
323
326
  - test/unit/integrations/hi_trust_module_test.rb
324
327
  - test/unit/integrations/nochex_module_test.rb
@@ -329,8 +332,10 @@ files:
329
332
  - test/unit/integrations/notifications/nochex_notification_test.rb
330
333
  - test/unit/integrations/notifications/notification_test.rb
331
334
  - test/unit/integrations/notifications/paypal_notification_test.rb
335
+ - test/unit/integrations/notifications/quickpay_notification_test.rb
332
336
  - test/unit/integrations/notifications/two_checkout_notification_test.rb
333
337
  - test/unit/integrations/paypal_module_test.rb
338
+ - test/unit/integrations/quickpay_module_test.rb
334
339
  - test/unit/integrations/returns
335
340
  - test/unit/integrations/returns/chronopay_return_test.rb
336
341
  - test/unit/integrations/returns/gestpay_return_test.rb
metadata.gz.sig CHANGED
Binary file
data/lib/tasks/cia.rb DELETED
@@ -1,90 +0,0 @@
1
- # Figure out the root path of this app. The default method will assume that
2
- # its the same as the location of the running Rakefile
3
- ROOT = File.expand_path(FileUtils.pwd) + '/'
4
-
5
- # Standard settings, you can override each of them using the environment
6
- # e.g. rake cia EMAIL_TO=your@email.com
7
- #
8
- RAKE_TASK = ENV['RAKE_TASK'] || ''
9
- EMAIL_TO = ENV['EMAIL_TO'] || 'tobi@leetsoft.com'
10
- EMAIL_FROM = ENV['EMAIL_FROM'] || 'CIA <cia@jadedpixel.com>'
11
-
12
- # Get last segment of application's path and treat it as name.
13
- NAME = ENV['NAME'] || ROOT.scan(/(\w+)\/$/).flatten.first.capitalize
14
-
15
-
16
- class Build
17
- attr_reader :status, :output, :success
18
-
19
- def self.run
20
- Build.new.run
21
- end
22
-
23
- def run
24
- update if @status.nil?
25
- make if @success.nil?
26
- end
27
-
28
- def revision
29
- info['Revision'].to_i
30
- end
31
-
32
- def url
33
- info['URL']
34
- end
35
-
36
- def commit_message
37
- `svn log #{ROOT} -rHEAD`
38
- end
39
-
40
- def author
41
- info['Last Changed Author']
42
- end
43
-
44
- def tests_ok?
45
- run if @success.nil?
46
- @success == true
47
- end
48
-
49
- def has_changes?
50
- update if @status.nil?
51
- @status =~ /[A-Z]\s+[\w\/]+/
52
- end
53
-
54
- private
55
-
56
- def update
57
- @status = `svn update #{ROOT}`
58
- end
59
-
60
- def info
61
- @info ||= YAML.load(`svn info #{ROOT}`)
62
- end
63
-
64
- def make
65
- @output, @success = `cd #{ROOT} && rake #{RAKE_TASK}`, ($?.exitstatus == 0)
66
- end
67
- end
68
-
69
- task :cia do
70
- build = Build.new
71
-
72
- if build.has_changes? and not build.tests_ok?
73
-
74
- require 'actionmailer'
75
-
76
- ActionMailer::Base.delivery_method = :sendmail
77
-
78
- class Notifier < ActionMailer::Base
79
- def failure(build, sent_at = Time.now)
80
- @subject = "[#{NAME}] Build Failure (##{build.revision})"
81
- @recipients, @from, @sent_on = EMAIL_TO, EMAIL_FROM, sent_at
82
- @body = ["#{build.author} broke the build!", build.commit_message, build.output].join("\n\n")
83
- end
84
- end
85
-
86
- Notifier.deliver_failure(build)
87
-
88
- end
89
- end
90
-