From 28a71d275ae6a35ca8d28301aa4da42ee14cba21 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Tue, 7 Feb 2017 22:46:39 -0800 Subject: [PATCH] Tests for paypal tipping webhook --- tests/webhook_tests.rb | 100 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 tests/webhook_tests.rb diff --git a/tests/webhook_tests.rb b/tests/webhook_tests.rb new file mode 100644 index 00000000..c0dccd38 --- /dev/null +++ b/tests/webhook_tests.rb @@ -0,0 +1,100 @@ +require_relative './environment.rb' +require 'rack/test' + +include Rack::Test::Methods + +def app + Sinatra::Application +end + +describe 'tipping' do + before do + EmailWorker.jobs.clear + @site = Fabricate :site + end + + it 'adds a tip' do + @actioning_site = Fabricate :site + custom = Base64.strict_encode64({site_id: @site.id, actioning_site_id: (@actioning_site ? @actioning_site.id : nil)}.to_json) + + paypal_hash = paypal_tip_webhook_hash( + site: @site, + actioning_site: @actioning_site, + custom: custom, + memo: 'I like your site', + payer_email: @actioning_site.email, + receiver_email: @site.email + ) + + post '/webhooks/paypal/tipping_notify', paypal_hash + + @site.tips.length.must_equal 1 + tip = @site.tips.first + tip.site.id.must_equal @site.id + tip.actioning_site.id.must_equal @actioning_site.id + tip.currency.must_equal 'USD' + tip.amount_string.must_equal '$5.00' + tip.fee_string.must_equal '$0.45' + tip.message.must_equal 'I like your site' + tip.paypal_payer_email.must_equal @actioning_site.email + tip.paypal_receiver_email.must_equal @site.email + tip.paypal_txn_id.must_equal 'TXID' + tip.created_at.must_equal Time.parse("2017-02-03 21:39:51 -0800") + + EmailWorker.jobs.length.must_equal 2 + end + + it 'adds a tip even if there is no actioning site id' do + @actioning_site = Fabricate :site + custom = Base64.strict_encode64({site_id: @site.id, actioning_site_id: nil}.to_json) + + payer_email = 'notloggedintipper@dfdsfdsfdsfdsfsdf.com' + + paypal_hash = paypal_tip_webhook_hash( + site: @site, + custom: custom, + memo: 'I like your site', + payer_email: payer_email, + receiver_email: @site.email + ) + + post '/webhooks/paypal/tipping_notify', paypal_hash + + @site.tips.length.must_equal 1 + @site.tips.first.actioning_site_id.must_equal nil + end +end + +def paypal_tip_webhook_hash(opts={}) + { + :transaction_subject=>"customvarlol", + :payment_date=>"21:39:51 Feb 03, 2017 PST", + :txn_type=>"web_accept", + :last_name=>"Drake", + :residence_country=>"US", + :item_name=>"Site Donation for JUICED UP TEST MACHINE!!!", + :payment_gross=>"5.00", + :mc_currency=>"USD", + :business=>"admin@neocities.org", + :payment_type=>"instant", + :protection_eligibility=>"Ineligible", + :verify_sign=>"AQEgFLG-gYJRPNwVRAb4gD.Dx6t9AmFm1mbPa6iYv5jJAKHYWjLwCX9z", + :payer_status=>"verified", + :payer_email=>"kyle@kyledrake.net", + :txn_id=>"TXID", + :quantity=>"0", + :receiver_email=>"admin@neocities.org", + :first_name=>"Kyle", + :payer_id=>"PAYERID", + :receiver_id=>"RECEIVERID", + :item_number=>"", + :payment_status=>"Completed", + :payment_fee=>"0.45", + :mc_fee=>"0.45", + :mc_gross=>"5.00", + :custom=>"", + :charset=>"windows-1252", + :notify_version=>"3.8", + :ipn_track_id=>"IPNTRACKID" + }.merge(opts) +end