mirror of
https://github.com/neocities/neocities.git
synced 2025-04-25 01:32:36 +02:00
100 lines
2.9 KiB
Ruby
100 lines
2.9 KiB
Ruby
require_relative './environment.rb'
|
|
require 'rack/test'
|
|
|
|
describe 'tipping' do
|
|
include Rack::Test::Methods
|
|
|
|
def app
|
|
Sinatra::Application
|
|
end
|
|
|
|
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_be_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
|