paddle_pay 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +207 -0
- data/lib/paddle_pay.rb +40 -0
- data/lib/paddle_pay/configuration.rb +17 -0
- data/lib/paddle_pay/connection.rb +69 -0
- data/lib/paddle_pay/errors/paddle_pay_error.rb +54 -0
- data/lib/paddle_pay/models/alert/webhook.rb +14 -0
- data/lib/paddle_pay/models/product/coupon.rb +36 -0
- data/lib/paddle_pay/models/product/license.rb +14 -0
- data/lib/paddle_pay/models/product/pay_link.rb +14 -0
- data/lib/paddle_pay/models/product/payment.rb +15 -0
- data/lib/paddle_pay/models/product/product.rb +12 -0
- data/lib/paddle_pay/models/subscription/charge.rb +14 -0
- data/lib/paddle_pay/models/subscription/modifier.rb +24 -0
- data/lib/paddle_pay/models/subscription/payment.rb +25 -0
- data/lib/paddle_pay/models/subscription/plan.rb +19 -0
- data/lib/paddle_pay/models/subscription/user.rb +31 -0
- data/lib/paddle_pay/models/transaction/checkout.rb +13 -0
- data/lib/paddle_pay/models/transaction/order.rb +13 -0
- data/lib/paddle_pay/models/transaction/product.rb +13 -0
- data/lib/paddle_pay/models/transaction/subscription.rb +13 -0
- data/lib/paddle_pay/models/transaction/user.rb +13 -0
- data/lib/paddle_pay/util.rb +36 -0
- data/lib/paddle_pay/version.rb +5 -0
- data/test/spec/paddle_pay/configuration_spec.rb +24 -0
- data/test/spec/paddle_pay/connection_spec.rb +115 -0
- data/test/spec/paddle_pay/models/alert/webhook_spec.rb +41 -0
- data/test/spec/paddle_pay/models/product/coupon_spec.rb +98 -0
- data/test/spec/paddle_pay/models/product/license_spec.rb +33 -0
- data/test/spec/paddle_pay/models/product/pay_link_spec.rb +33 -0
- data/test/spec/paddle_pay/models/product/payment_spec.rb +31 -0
- data/test/spec/paddle_pay/models/product/product_spec.rb +42 -0
- data/test/spec/paddle_pay/models/subscription/charge_spec.rb +31 -0
- data/test/spec/paddle_pay/models/subscription/modifier_spec.rb +70 -0
- data/test/spec/paddle_pay/models/subscription/payment_spec.rb +68 -0
- data/test/spec/paddle_pay/models/subscription/plan_spec.rb +57 -0
- data/test/spec/paddle_pay/models/subscription/user_spec.rb +87 -0
- data/test/spec/paddle_pay/models/transaction/checkout_spec.rb +41 -0
- data/test/spec/paddle_pay/models/transaction/order_spec.rb +41 -0
- data/test/spec/paddle_pay/models/transaction/product_spec.rb +41 -0
- data/test/spec/paddle_pay/models/transaction/subscription_spec.rb +41 -0
- data/test/spec/paddle_pay/models/transaction/user_spec.rb +41 -0
- data/test/spec/paddle_pay/util_spec.rb +41 -0
- data/test/spec/paddle_pay/version_spec.rb +9 -0
- data/test/test_helper.rb +18 -0
- data/test/vcr_cassettes/paddle_pay/alert/webhook/test_0001_should_list_all_webhooks.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/alert/webhook/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/alert/webhook/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_list_all_coupons.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_raise_an_error_if_the_coupon_deletion_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_raise_an_error_if_the_coupon_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_return_updated_0_if_the_coupon_group_update_is_invalid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_return_updated_0_if_the_coupon_update_is_invalid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_return_coupon_codes_if_the_coupon_is_valid.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_return_success_if_the_coupon_deletion_is_valid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_return_updated_0_if_the_coupon_group_update_is_valid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_return_updated_0_if_the_coupon_update_is_valid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/product/coupon/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/license/test_0001_should_raise_an_error_if_license_generation_request_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/license/test_0002_should_return_a_license_code_if_license_generation_request_is_valid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/pay_link/test_0001_should_raise_an_error_if_pay_link_generation_request_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/pay_link/test_0002_should_return_an_url_if_pay_link_generation_request_is_valid.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/product/payment/test_0001_should_raise_an_error_if_the_payment_refund_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/payment/test_0002_should_return_success_if_the_payment_refund_is_valid.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/product/test_0001_should_list_all_products.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/product/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/product/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/charge/test_0001_should_raise_an_error_if_the_charge_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/charge/test_0002_should_return_invoice_id_if_the_charge_is_valid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0001_should_list_all_modifiers.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0001_should_raise_an_error_if_the_modifier_deletion_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0001_should_raise_an_error_if_the_modifier_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0002_should_return_a_modifier_id_if_the_modifier_is_valid.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0002_should_return_a_product_id_if_the_modifier_deletion_is_valid.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0001_should_list_all_payments.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0001_should_raise_an_error_if_the_payment_refund_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0001_should_raise_an_error_if_the_payment_reschedule_is_invalid.yml +313 -0
- data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0002_should_return_success_if_the_payment_refund_is_valid.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0002_should_return_success_if_the_payment_reschedule_is_valid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0001_should_list_all_plans.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0001_should_raise_an_error_if_the_plan_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0002_should_be_successful_if_the_plan_is_valid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0002_should_return_a_product_id_if_the_plan_is_valid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0001_should_list_all_users.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0001_should_raise_an_error_if_the_cancelation_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0001_should_raise_an_error_if_the_subscription_update_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0001_should_raise_an_error_if_the_subscription_update_preview_is_invalid.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0002_should_return_a_subscription_id_if_the_subscription_update_is_valid.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0002_should_return_a_subscription_id_if_the_subscription_update_preview_is_valid.yml +60 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0002_should_return_success_if_the_cancelation_is_valid.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/subscription/user/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/checkout/test_0001_should_list_all_checkouts.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/checkout/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/checkout/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/order/test_0001_should_list_all_orders.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/order/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/order/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/product/test_0001_should_list_all_products.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/transaction/product/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/product/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/subscription/test_0001_should_list_all_subscriptions.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/subscription/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/subscription/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/user/test_0001_should_list_all_users.yml +62 -0
- data/test/vcr_cassettes/paddle_pay/transaction/user/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
- data/test/vcr_cassettes/paddle_pay/transaction/user/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
- metadata +358 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe PaddlePay::Subscription::User do
|
6
|
+
before do
|
7
|
+
PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
|
9
|
+
@user = PaddlePay::Subscription::User
|
10
|
+
path = PaddlePay::Util.convert_class_to_path(@user.name) + "/#{name}"
|
11
|
+
puts path
|
12
|
+
VCR.insert_cassette(path)
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
VCR.eject_cassette
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'when users are requested' do
|
20
|
+
it 'should list all users' do
|
21
|
+
list = @user.list
|
22
|
+
assert_instance_of Array, list
|
23
|
+
refute_nil list.first[:user_id] if list.count > 0
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should raise an error if no vendor id is present' do
|
27
|
+
PaddlePay.config.vendor_id = nil
|
28
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
29
|
+
@user.list
|
30
|
+
end
|
31
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should raise an error if no vendor auth code is present' do
|
35
|
+
PaddlePay.config.vendor_auth_code = nil
|
36
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
37
|
+
@user.list
|
38
|
+
end
|
39
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'when an update preview is requested' do
|
44
|
+
it 'should raise an error if the subscription update preview is invalid' do
|
45
|
+
subscription = {}
|
46
|
+
assert_raises PaddlePay::PaddlePayError do
|
47
|
+
@user.preview_update(3479984, subscription)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should return a subscription id if the subscription update preview is valid' do
|
52
|
+
subscription = { recurring_price: '10.00', currency: 'USD', quantity: 1 }
|
53
|
+
response = @user.preview_update(3479984, subscription)
|
54
|
+
assert_instance_of Hash, response
|
55
|
+
refute_nil response[:subscription_id]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe 'when an update is requested' do
|
60
|
+
it 'should raise an error if the subscription update is invalid' do
|
61
|
+
subscription = {}
|
62
|
+
assert_raises PaddlePay::PaddlePayError do
|
63
|
+
@user.update(3479984, subscription)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should return a subscription id if the subscription update is valid' do
|
68
|
+
subscription = { recurring_price: '10.00', currency: 'USD', quantity: 1 }
|
69
|
+
response = @user.update(3479984, subscription)
|
70
|
+
assert_instance_of Hash, response
|
71
|
+
refute_nil response[:subscription_id]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'when a cancelation is requested' do
|
76
|
+
it 'should raise an error if the cancelation is invalid' do
|
77
|
+
assert_raises PaddlePay::PaddlePayError do
|
78
|
+
@user.cancel(1000000, {})
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should return success if the cancelation is valid' do
|
83
|
+
response = @user.cancel(3479984)
|
84
|
+
assert_nil response # no response when request is successful
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe PaddlePay::Transaction::Checkout do
|
6
|
+
before do
|
7
|
+
PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
|
9
|
+
@checkout = PaddlePay::Transaction::Checkout
|
10
|
+
path = PaddlePay::Util.convert_class_to_path(@checkout.name) + "/#{name}"
|
11
|
+
VCR.insert_cassette(path)
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
VCR.eject_cassette
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'when checkouts are requested' do
|
19
|
+
it 'should list all checkouts' do
|
20
|
+
list = @checkout.list('57064784-chrec5910826421-58f0e94797')
|
21
|
+
assert_instance_of Array, list
|
22
|
+
refute_nil list.first[:checkout_id] if list.count > 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise an error if no vendor id is present' do
|
26
|
+
PaddlePay.config.vendor_id = nil
|
27
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
28
|
+
@checkout.list('57064784-chrec5910826421-58f0e94797')
|
29
|
+
end
|
30
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should raise an error if no vendor auth code is present' do
|
34
|
+
PaddlePay.config.vendor_auth_code = nil
|
35
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
36
|
+
@checkout.list('57064784-chrec5910826421-58f0e94797')
|
37
|
+
end
|
38
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe PaddlePay::Transaction::Order do
|
6
|
+
before do
|
7
|
+
PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
|
9
|
+
@order = PaddlePay::Transaction::Order
|
10
|
+
path = PaddlePay::Util.convert_class_to_path(@order.name) + "/#{name}"
|
11
|
+
VCR.insert_cassette(path)
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
VCR.eject_cassette
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'when orders are requested' do
|
19
|
+
it 'should list all orders' do
|
20
|
+
list = @order.list('14854225-10710435')
|
21
|
+
assert_instance_of Array, list
|
22
|
+
refute_nil list.first[:order_id] if list.count > 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise an error if no vendor id is present' do
|
26
|
+
PaddlePay.config.vendor_id = nil
|
27
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
28
|
+
@order.list('14854225-10710435')
|
29
|
+
end
|
30
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should raise an error if no vendor auth code is present' do
|
34
|
+
PaddlePay.config.vendor_auth_code = nil
|
35
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
36
|
+
@order.list('14854225-10710435')
|
37
|
+
end
|
38
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe PaddlePay::Transaction::Product do
|
6
|
+
before do
|
7
|
+
PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
|
9
|
+
@product = PaddlePay::Transaction::Product
|
10
|
+
path = PaddlePay::Util.convert_class_to_path(@product.name) + "/#{name}"
|
11
|
+
VCR.insert_cassette(path)
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
VCR.eject_cassette
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'when products are requested' do
|
19
|
+
it 'should list all products' do
|
20
|
+
list = @product.list(594_469)
|
21
|
+
assert_instance_of Array, list
|
22
|
+
refute_nil list.first[:product_id] if list.count > 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise an error if no vendor id is present' do
|
26
|
+
PaddlePay.config.vendor_id = nil
|
27
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
28
|
+
@product.list(594_469)
|
29
|
+
end
|
30
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should raise an error if no vendor auth code is present' do
|
34
|
+
PaddlePay.config.vendor_auth_code = nil
|
35
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
36
|
+
@product.list(594_469)
|
37
|
+
end
|
38
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe PaddlePay::Transaction::Subscription do
|
6
|
+
before do
|
7
|
+
PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
|
9
|
+
@subscription = PaddlePay::Transaction::Subscription
|
10
|
+
path = PaddlePay::Util.convert_class_to_path(@subscription.name) + "/#{name}"
|
11
|
+
VCR.insert_cassette(path)
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
VCR.eject_cassette
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'when subscriptions are requested' do
|
19
|
+
it 'should list all subscriptions' do
|
20
|
+
list = @subscription.list(3_484_448)
|
21
|
+
assert_instance_of Array, list
|
22
|
+
refute_nil list.first[:subscription] if list.count > 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise an error if no vendor id is present' do
|
26
|
+
PaddlePay.config.vendor_id = nil
|
27
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
28
|
+
@subscription.list(3_484_448)
|
29
|
+
end
|
30
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should raise an error if no vendor auth code is present' do
|
34
|
+
PaddlePay.config.vendor_auth_code = nil
|
35
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
36
|
+
@subscription.list(3_484_448)
|
37
|
+
end
|
38
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe PaddlePay::Transaction::User do
|
6
|
+
before do
|
7
|
+
PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
|
8
|
+
PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
|
9
|
+
@user = PaddlePay::Transaction::User
|
10
|
+
path = PaddlePay::Util.convert_class_to_path(@user.name) + "/#{name}"
|
11
|
+
VCR.insert_cassette(path)
|
12
|
+
end
|
13
|
+
|
14
|
+
after do
|
15
|
+
VCR.eject_cassette
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'when users are requested' do
|
19
|
+
it 'should list all users' do
|
20
|
+
list = @user.list(17_368_056)
|
21
|
+
assert_instance_of Array, list
|
22
|
+
refute_nil list.first[:user] if list.count > 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise an error if no vendor id is present' do
|
26
|
+
PaddlePay.config.vendor_id = nil
|
27
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
28
|
+
@user.list(17_368_056)
|
29
|
+
end
|
30
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should raise an error if no vendor auth code is present' do
|
34
|
+
PaddlePay.config.vendor_auth_code = nil
|
35
|
+
exception = assert_raises PaddlePay::PaddlePayError do
|
36
|
+
@user.list(17_368_056)
|
37
|
+
end
|
38
|
+
assert_equal exception.code, 107 # You don't have permission to access this resource
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
describe PaddlePay::Util do
|
6
|
+
describe 'when convert hash keys' do
|
7
|
+
it 'should not convert strings' do
|
8
|
+
assert_equal PaddlePay::Util.convert_hash_keys('string'), 'string'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should convert hash keys to snake case' do
|
12
|
+
assert_equal PaddlePay::Util.convert_hash_keys({ "testKey": 'test' }), { test_key: 'test' }
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should convert multiple hash keys to snake case' do
|
16
|
+
assert_equal PaddlePay::Util.convert_hash_keys({ "testKey": 'test', "secondKey": 'test' }), { test_key: 'test', second_key: 'test' }
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should convert hash keys in arrays to snake case' do
|
20
|
+
assert_equal PaddlePay::Util.convert_hash_keys([{ "testKey": 'test' }]), [{ test_key: 'test' }]
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should convert abbreviations to lowercase keys' do
|
24
|
+
assert_equal PaddlePay::Util.convert_hash_keys({ "USD": 'test' }), { usd: 'test' }
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should convert multidimensional hashes' do
|
28
|
+
assert_equal PaddlePay::Util.convert_hash_keys({ "testKey": { "multiKey": 'test' } }), { test_key: { multi_key: 'test' } }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe 'when convert simple class names' do
|
33
|
+
it 'should convert class names to snake case' do
|
34
|
+
assert_equal PaddlePay::Util.convert_class_to_path('PaddlePay'), 'paddle_pay'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should convert modules to path' do
|
38
|
+
assert_equal PaddlePay::Util.convert_class_to_path('PaddlePay::Util'), 'paddle_pay/util'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dotenv/load'
|
4
|
+
require 'minitest/autorun'
|
5
|
+
require 'minitest/spec'
|
6
|
+
require 'minitest/reporters'
|
7
|
+
require 'webmock/minitest'
|
8
|
+
require 'vcr'
|
9
|
+
require 'paddle_pay'
|
10
|
+
|
11
|
+
Minitest::Reporters.use!
|
12
|
+
|
13
|
+
VCR.configure do |config|
|
14
|
+
config.cassette_library_dir = 'test/vcr_cassettes'
|
15
|
+
config.hook_into :webmock
|
16
|
+
config.filter_sensitive_data('<VENDOR_ID>') { ENV['PADDLE_VENDOR_ID'] }
|
17
|
+
config.filter_sensitive_data('<VENDOR_AUTH_CODE>') { ENV['PADDLE_VENDOR_AUTH_CODE'] }
|
18
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://vendors.paddle.com/api/2.0/alert/webhooks
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: vendor_auth_code=<VENDOR_AUTH_CODE>&vendor_id=<VENDOR_ID>
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v1.0.1
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept-Encoding:
|
15
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
16
|
+
Accept:
|
17
|
+
- "*/*"
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Date:
|
24
|
+
- Sat, 23 May 2020 11:00:40 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json
|
27
|
+
Transfer-Encoding:
|
28
|
+
- chunked
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
Set-Cookie:
|
32
|
+
- __cfduid=ddceecf8417b1b4dba6068f986fcad7071590231640; expires=Mon, 22-Jun-20
|
33
|
+
11:00:40 GMT; path=/; domain=.paddle.com; HttpOnly; SameSite=Lax
|
34
|
+
- paddle_session_vendor=eyJpdiI6IjZLNzJnNFl4eDhuWlYwb2JnWXZuWWRhOVpTeTArMHpyUzkyNjJUM1JZaFk9IiwidmFsdWUiOiJmTEU3bk9tTndNZ3dYNVB3XC9IVGIyZFhZdmxkZTBcL0NmeXRGUk14dnBcL0lpaXpFUE9reTJ0WXRHRW1OSnNETWlwVnJrbnFFalRwc083WHkwQmp3dHdWdz09IiwibWFjIjoiNTFlOTBjMjNjZmI1NWY3ODIyZjcwN2Y2MTgwYWYwNDg5NGYwOTc1ZjM1YjExYTk5MGI5MWI3NTU0MjFkMzA0OSJ9;
|
35
|
+
expires=Sat, 23-May-2020 13:00:40 GMT; Max-Age=7200; path=/; domain=vendors.paddle.com;
|
36
|
+
secure; HttpOnly;SameSite=none;Secure
|
37
|
+
X-Powered-By:
|
38
|
+
- PHP/7.2.31
|
39
|
+
Cache-Control:
|
40
|
+
- no-cache
|
41
|
+
X-Frame-Options:
|
42
|
+
- sameorigin
|
43
|
+
P3p:
|
44
|
+
- CP="CAO CUR ADMa DEVa TAIa OUR DELa STP ONL NAV STA PUR"
|
45
|
+
Cf-Cache-Status:
|
46
|
+
- DYNAMIC
|
47
|
+
Expect-Ct:
|
48
|
+
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
|
49
|
+
Server:
|
50
|
+
- cloudflare
|
51
|
+
Cf-Ray:
|
52
|
+
- 597e4649ba630c25-AMS
|
53
|
+
Cf-Request-Id:
|
54
|
+
- 02e2ca421200000c25a81eb200000001
|
55
|
+
body:
|
56
|
+
encoding: ASCII-8BIT
|
57
|
+
string: '{"success":true,"response":{"current_page":1,"total_pages":1,"alerts_per_page":10,"total_alerts":0,"query_head":"2020-05-23
|
58
|
+
11:00:40","data":[]}}'
|
59
|
+
http_version: null
|
60
|
+
recorded_at: Sat, 23 May 2020 11:00:40 GMT
|
61
|
+
recorded_with: VCR 5.1.0
|
@@ -0,0 +1,61 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://vendors.paddle.com/api/2.0/alert/webhooks
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: vendor_auth_code=<VENDOR_AUTH_CODE>&vendor_id
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v1.0.1
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept-Encoding:
|
15
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
16
|
+
Accept:
|
17
|
+
- "*/*"
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Date:
|
24
|
+
- Sat, 23 May 2020 11:00:40 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json
|
27
|
+
Transfer-Encoding:
|
28
|
+
- chunked
|
29
|
+
Connection:
|
30
|
+
- keep-alive
|
31
|
+
Set-Cookie:
|
32
|
+
- __cfduid=d9b910d0a0e1aea11d66f4b263df6fd6e1590231640; expires=Mon, 22-Jun-20
|
33
|
+
11:00:40 GMT; path=/; domain=.paddle.com; HttpOnly; SameSite=Lax
|
34
|
+
- paddle_session_vendor=eyJpdiI6InVIRHc0bFppdTlUOG1IWEphZ2JCY29FR1U1U3BkNHBUUUNkU2ZKYmozMzQ9IiwidmFsdWUiOiJ6UEdmS0NieWFqT3VrZnF1V1pkT3lMQU9UT2t4bG1zTlhzNjBINjRmc2lhYmpDYUZrdUtnTlVvSWp4UjY4SHc5RmN1NFZHR0FJVnZcL0ZXVGFtWlF4SEE9PSIsIm1hYyI6IjUzOGI1ZWMzY2QyMWZiZTMzYTQyYmVjMWNjYjUyZDcxOWE4OTQ4MWU4NDQ2MTc2ZTVjNmJhZTlmOTdkNjgxYjIifQ%3D%3D;
|
35
|
+
expires=Sat, 23-May-2020 13:00:40 GMT; Max-Age=7200; path=/; domain=vendors.paddle.com;
|
36
|
+
secure; HttpOnly;SameSite=none;Secure
|
37
|
+
X-Powered-By:
|
38
|
+
- PHP/7.2.31
|
39
|
+
Cache-Control:
|
40
|
+
- no-cache
|
41
|
+
X-Frame-Options:
|
42
|
+
- sameorigin
|
43
|
+
P3p:
|
44
|
+
- CP="CAO CUR ADMa DEVa TAIa OUR DELa STP ONL NAV STA PUR"
|
45
|
+
Cf-Cache-Status:
|
46
|
+
- DYNAMIC
|
47
|
+
Expect-Ct:
|
48
|
+
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
|
49
|
+
Server:
|
50
|
+
- cloudflare
|
51
|
+
Cf-Ray:
|
52
|
+
- 597e46474888fa60-AMS
|
53
|
+
Cf-Request-Id:
|
54
|
+
- 02e2ca408d0000fa607eaa2200000001
|
55
|
+
body:
|
56
|
+
encoding: ASCII-8BIT
|
57
|
+
string: '{"success":false,"error":{"code":107,"message":"You don''t have permission
|
58
|
+
to access this resource"}}'
|
59
|
+
http_version: null
|
60
|
+
recorded_at: Sat, 23 May 2020 11:00:40 GMT
|
61
|
+
recorded_with: VCR 5.1.0
|