razorpay 2.4.0 → 3.2.4
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.
- checksums.yaml +4 -4
- data/.cursorignore +174 -0
- data/.github/dependabot.yml +8 -0
- data/.github/pull_request_template.md +8 -0
- data/.github/workflows/ci.yml +80 -0
- data/.github/workflows/ruby.yml +38 -0
- data/CHANGELOG.md +85 -1
- data/README.md +48 -137
- data/documents/Invoice.md +539 -0
- data/documents/account.md +449 -0
- data/documents/addon.md +191 -0
- data/documents/card.md +655 -0
- data/documents/customer.md +405 -0
- data/documents/dispute.md +301 -0
- data/documents/documents.md +65 -0
- data/documents/emandate.md +492 -0
- data/documents/fund.md +89 -0
- data/documents/items.md +208 -0
- data/documents/oauth_token.md +142 -0
- data/documents/order.md +352 -0
- data/documents/papernach.md +738 -0
- data/documents/payment.md +1122 -0
- data/documents/paymentLink.md +1063 -0
- data/documents/paymentVerification.md +79 -0
- data/documents/plan.md +184 -0
- data/documents/productConfiguration.md +444 -0
- data/documents/qrcode.md +439 -0
- data/documents/refund.md +325 -0
- data/documents/registerEmandate.md +452 -0
- data/documents/registerNach.md +653 -0
- data/documents/settlement.md +478 -0
- data/documents/stakeholder.md +334 -0
- data/documents/subscriptions.md +752 -0
- data/documents/tokens.md +407 -0
- data/documents/transfers.md +821 -0
- data/documents/upi.md +545 -0
- data/documents/virtualAccount.md +591 -0
- data/documents/webhook.md +224 -0
- data/lib/razorpay/account.rb +39 -0
- data/lib/razorpay/addon.rb +9 -1
- data/lib/razorpay/card.rb +4 -0
- data/lib/razorpay/constants.rb +7 -2
- data/lib/razorpay/customer.rb +31 -0
- data/lib/razorpay/dispute.rb +26 -0
- data/lib/razorpay/document.rb +19 -0
- data/lib/razorpay/fund_account.rb +19 -0
- data/lib/razorpay/iin.rb +15 -0
- data/lib/razorpay/invoice.rb +8 -0
- data/lib/razorpay/item.rb +34 -0
- data/lib/razorpay/oauth_token.rb +109 -0
- data/lib/razorpay/order.rb +19 -1
- data/lib/razorpay/payload_validator.rb +93 -0
- data/lib/razorpay/payment.rb +64 -0
- data/lib/razorpay/payment_link.rb +36 -0
- data/lib/razorpay/payment_method.rb +17 -0
- data/lib/razorpay/product.rb +37 -0
- data/lib/razorpay/qr_code.rb +34 -0
- data/lib/razorpay/refund.rb +4 -0
- data/lib/razorpay/request.rb +50 -26
- data/lib/razorpay/settlement.rb +39 -0
- data/lib/razorpay/stakeholder.rb +39 -0
- data/lib/razorpay/subscription.rb +24 -0
- data/lib/razorpay/subscription_registration.rb +16 -0
- data/lib/razorpay/token.rb +28 -0
- data/lib/razorpay/transfer.rb +39 -0
- data/lib/razorpay/utility.rb +41 -6
- data/lib/razorpay/validation_config.rb +11 -0
- data/lib/razorpay/virtual_account.rb +15 -7
- data/lib/razorpay/webhook.rb +50 -0
- data/lib/razorpay.rb +24 -1
- data/razorpay-ruby.gemspec +2 -1
- data/test/fixtures/addon_collection.json +60 -0
- data/test/fixtures/create_json_payment.json +13 -0
- data/test/fixtures/delete_token.json +3 -0
- data/test/fixtures/dispute_collection.json +67 -0
- data/test/fixtures/dispute_error.json +10 -0
- data/test/fixtures/document_error.json +10 -0
- data/test/fixtures/downtimes_collection.json +21 -0
- data/test/fixtures/empty.json +2 -0
- data/test/fixtures/error_customer.json +10 -0
- data/test/fixtures/error_eligibility.json +10 -0
- data/test/fixtures/error_eligibility_check.json +10 -0
- data/test/fixtures/fake_account.json +78 -0
- data/test/fixtures/fake_addon.json +3 -3
- data/test/fixtures/fake_bank_account.json +9 -0
- data/test/fixtures/fake_card_reference.json +5 -0
- data/test/fixtures/fake_create_upi_payment.json +3 -0
- data/test/fixtures/fake_direct_transfer.json +32 -0
- data/test/fixtures/fake_dispute.json +29 -0
- data/test/fixtures/fake_document.json +9 -0
- data/test/fixtures/fake_downtime.json +14 -0
- data/test/fixtures/fake_eligiblity.json +79 -0
- data/test/fixtures/fake_fulfillment.json +10 -0
- data/test/fixtures/fake_fund_account.json +18 -0
- data/test/fixtures/fake_iin_token.json +23 -0
- data/test/fixtures/fake_instant_settlement.json +19 -0
- data/test/fixtures/fake_item.json +9 -0
- data/test/fixtures/fake_oauth_token.json +8 -0
- data/test/fixtures/fake_order_transfers.json +88 -0
- data/test/fixtures/fake_otp_generate.json +19 -0
- data/test/fixtures/fake_otp_resend.json +7 -0
- data/test/fixtures/fake_otp_submit.json +5 -0
- data/test/fixtures/fake_payment_expanded_details.json +38 -0
- data/test/fixtures/fake_payment_expanded_details_card.json +50 -0
- data/test/fixtures/fake_payment_link.json +40 -0
- data/test/fixtures/fake_pending_update.json +30 -0
- data/test/fixtures/fake_product.json +138 -0
- data/test/fixtures/fake_qrcode.json +20 -0
- data/test/fixtures/fake_qrcode_close.json +22 -0
- data/test/fixtures/fake_recurring.json +5 -0
- data/test/fixtures/fake_refund.json +1 -1
- data/test/fixtures/fake_revoke_token.json +3 -0
- data/test/fixtures/fake_rto.json +15 -0
- data/test/fixtures/fake_settlement.json +11 -0
- data/test/fixtures/fake_settlement_on_demand.json +39 -0
- data/test/fixtures/fake_stakeholder.json +29 -0
- data/test/fixtures/fake_subscription_pause.json +19 -0
- data/test/fixtures/fake_subscription_registration.json +91 -0
- data/test/fixtures/fake_subscription_resume.json +19 -0
- data/test/fixtures/fake_token.json +31 -0
- data/test/fixtures/fake_tokenise_customer.json +40 -0
- data/test/fixtures/fake_transfer.json +18 -0
- data/test/fixtures/fake_transfer_reverse.json +15 -0
- data/test/fixtures/fake_update_payment.json +39 -0
- data/test/fixtures/fake_validate_vpa.json +5 -0
- data/test/fixtures/fake_virtual_account_allowed.json +46 -0
- data/test/fixtures/fake_virtual_account_receiver.json +46 -0
- data/test/fixtures/fake_webhook.json +79 -0
- data/test/fixtures/fake_webhook_by_account_id.json +22 -0
- data/test/fixtures/fetch_tnc.json +11 -0
- data/test/fixtures/fund_collection.json +20 -0
- data/test/fixtures/item_collection.json +24 -0
- data/test/fixtures/order_error.json +10 -0
- data/test/fixtures/payment_collection.json +1 -1
- data/test/fixtures/payment_error.json +10 -0
- data/test/fixtures/payment_link_collection.json +43 -0
- data/test/fixtures/payment_link_response.json +3 -0
- data/test/fixtures/payment_methods_collection.json +149 -0
- data/test/fixtures/qrcode_collection.json +50 -0
- data/test/fixtures/qrcode_payments_collection.json +74 -0
- data/test/fixtures/reversals_collection.json +22 -0
- data/test/fixtures/settlement_collection.json +26 -0
- data/test/fixtures/settlement_instant_collection.json +84 -0
- data/test/fixtures/settlement_report_collection.json +117 -0
- data/test/fixtures/stakeholder_collection.json +35 -0
- data/test/fixtures/success.json +3 -0
- data/test/fixtures/tokens_collection.json +36 -0
- data/test/fixtures/transfer_error.json +10 -0
- data/test/fixtures/transfer_settlements_collection.json +38 -0
- data/test/fixtures/transfers_collection.json +41 -0
- data/test/fixtures/webhook_by_account_collection.json +35 -0
- data/test/fixtures/webhook_collection.json +85 -0
- data/test/razorpay/test_account.rb +134 -0
- data/test/razorpay/test_addon.rb +19 -15
- data/test/razorpay/test_card.rb +6 -0
- data/test/razorpay/test_customer.rb +132 -3
- data/test/razorpay/test_dispute.rb +98 -0
- data/test/razorpay/test_document.rb +27 -0
- data/test/razorpay/test_fund_account.rb +42 -0
- data/test/razorpay/test_iin.rb +23 -0
- data/test/razorpay/test_invoice.rb +15 -2
- data/test/razorpay/test_item.rb +66 -0
- data/test/razorpay/test_oauth_token.rb +105 -0
- data/test/razorpay/test_order.rb +66 -1
- data/test/razorpay/test_payload_validator.rb +61 -0
- data/test/razorpay/test_payment.rb +251 -9
- data/test/razorpay/test_payment_link.rb +83 -0
- data/test/razorpay/test_plan.rb +2 -2
- data/test/razorpay/test_product.rb +67 -0
- data/test/razorpay/test_qr_code.rb +63 -0
- data/test/razorpay/test_razorpay.rb +19 -2
- data/test/razorpay/test_refund.rb +16 -2
- data/test/razorpay/test_settlement.rb +76 -0
- data/test/razorpay/test_stakeholder.rb +87 -0
- data/test/razorpay/test_subscription.rb +72 -9
- data/test/razorpay/test_subscription_registration.rb +58 -0
- data/test/razorpay/test_token.rb +66 -0
- data/test/razorpay/test_transfer.rb +94 -0
- data/test/razorpay/test_utility.rb +72 -4
- data/test/razorpay/test_virtual_account.rb +64 -17
- data/test/razorpay/test_webhook.rb +132 -0
- data/test/test_helper.rb +8 -0
- metadata +265 -10
- data/.travis.yml +0 -22
- data/test/razorpay/test_errors.rb +0 -19
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Razorpay
|
|
4
|
+
# Tests for Razorpay::Document
|
|
5
|
+
class RazorpayDocumentTest < Minitest::Test
|
|
6
|
+
def setup
|
|
7
|
+
@document_id = 'doc_O4KCaSbX4BjA6I'
|
|
8
|
+
# Any request that ends with document/document_id
|
|
9
|
+
stub_get(%r{documents/#{@document_id}$}, 'fake_document')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_document_should_be_defined
|
|
13
|
+
refute_nil Razorpay::Document
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_document_should_be_defined_exception
|
|
17
|
+
para_attr = {}
|
|
18
|
+
stub_get(%r{documents/#{@document_id}$}, 'document_error')
|
|
19
|
+
assert_raises(Razorpay::Error) do
|
|
20
|
+
document = Razorpay::Document.fetch(@document_id)
|
|
21
|
+
if document.error
|
|
22
|
+
raise Razorpay::Error.new, document.error['code']
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Razorpay
|
|
4
|
+
# Tests for Razorpay::FundAccount
|
|
5
|
+
class RazorpayFundAccountTest < Minitest::Test
|
|
6
|
+
def setup
|
|
7
|
+
@customer_id = 'cust_J3oSNi1KgzqVEX'
|
|
8
|
+
@fund_account_id = 'fa_J8B38pGr1Tfv8k'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_fund_account_should_be_defined
|
|
12
|
+
refute_nil Razorpay::FundAccount
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_fund_account_should_be_created
|
|
16
|
+
|
|
17
|
+
param_attr = {
|
|
18
|
+
"customer_id": "cust_Aa000000000001",
|
|
19
|
+
"account_type": "bank_account",
|
|
20
|
+
"bank_account": {
|
|
21
|
+
"name": "Gaurav Kumar",
|
|
22
|
+
"account_number": "11214311215411",
|
|
23
|
+
"ifsc": "HDFC0000053"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
stub_post(/fund_accounts$/, 'fake_fund_account', param_attr.to_json)
|
|
28
|
+
fund_account = Razorpay::FundAccount.create param_attr.to_json
|
|
29
|
+
assert_equal @customer_id, fund_account.customer_id
|
|
30
|
+
assert_equal @fund_account_id, fund_account.id
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_fetch_all_fund_accounts
|
|
34
|
+
|
|
35
|
+
para_attr = {"customer_id": @customer_id}
|
|
36
|
+
stub_get(/fund_accounts/, 'fund_collection', para_attr.to_json)
|
|
37
|
+
fund_accounts = Razorpay::FundAccount.all(para_attr.to_json)
|
|
38
|
+
assert_instance_of Razorpay::Collection, fund_accounts, 'FundAccounts should be an array'
|
|
39
|
+
assert !fund_accounts.items.empty?, 'FundAccounts should be more than one'
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Razorpay
|
|
4
|
+
# Tests for Razorpay::Iin
|
|
5
|
+
class RazorpayIinTest < Minitest::Test
|
|
6
|
+
def setup
|
|
7
|
+
@token_id = '411111'
|
|
8
|
+
|
|
9
|
+
# Any request that ends with token/token_id
|
|
10
|
+
stub_get(%r{iins/#{@token_id}$}, 'fake_iin_token')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_iin_should_be_defined
|
|
14
|
+
refute_nil Razorpay::Iin
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_iin_should_be_fetched
|
|
18
|
+
token = Razorpay::Iin.fetch(@token_id)
|
|
19
|
+
assert_instance_of Razorpay::Iin, token, 'Iin not an instance of Razorpay::Iin class'
|
|
20
|
+
assert_equal @token_id, token.iin, 'token IDs do not match'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -5,7 +5,7 @@ module Razorpay
|
|
|
5
5
|
class RazorpayInvoiceTest < Minitest::Test
|
|
6
6
|
def setup
|
|
7
7
|
@invoice_id = 'inv_6vRZmJYFAG1mNq'
|
|
8
|
-
|
|
8
|
+
@medium = "email"
|
|
9
9
|
# Any request that ends with invoices/invoice_id
|
|
10
10
|
stub_get(%r{invoices/#{@invoice_id}$}, 'fake_invoice')
|
|
11
11
|
end
|
|
@@ -117,7 +117,6 @@ module Razorpay
|
|
|
117
117
|
refute_nil invoice.invoice_number
|
|
118
118
|
end
|
|
119
119
|
|
|
120
|
-
private
|
|
121
120
|
|
|
122
121
|
def assert_invoice_details(invoice)
|
|
123
122
|
assert_equal 'cust_6vRXClWqnLhV14', invoice.customer_id
|
|
@@ -126,5 +125,19 @@ module Razorpay
|
|
|
126
125
|
assert_equal 'Test description', invoice.description
|
|
127
126
|
assert_equal 'invoice', invoice.type
|
|
128
127
|
end
|
|
128
|
+
|
|
129
|
+
def test_delete_specific_invoice
|
|
130
|
+
stub_delete(%r{invoices/#{@invoice_id}$}, 'empty')
|
|
131
|
+
invoice = Razorpay::Invoice.delete(@invoice_id)
|
|
132
|
+
assert_instance_of Razorpay::Entity, invoice, 'invoice not an instance of Razorpay::Invoice class'
|
|
133
|
+
refute_nil invoice
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def test_invoice_notifyBy
|
|
137
|
+
stub_post(%r{invoices/#{@invoice_id}/notify_by/#{@medium}$}, 'success', {})
|
|
138
|
+
invoice = Razorpay::Invoice.notify_by(@invoice_id,@medium)
|
|
139
|
+
assert_instance_of Razorpay::Entity, invoice, 'invoice not an instance of Razorpay::Invoice class'
|
|
140
|
+
assert invoice
|
|
141
|
+
end
|
|
129
142
|
end
|
|
130
143
|
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Razorpay
|
|
4
|
+
# Tests for Razorpay::Item
|
|
5
|
+
class RazorpayItemTest < Minitest::Test
|
|
6
|
+
def setup
|
|
7
|
+
@item_id = 'item_JDcbIdX9xojCje'
|
|
8
|
+
|
|
9
|
+
# Any request that ends with items/item_id
|
|
10
|
+
stub_get(%r{items/#{@item_id}$}, 'fake_item')
|
|
11
|
+
stub_get(/items$/, 'item_collection')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_item_should_be_defined
|
|
15
|
+
refute_nil Razorpay::Item
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_item_should_be_created
|
|
19
|
+
|
|
20
|
+
param_attr = {
|
|
21
|
+
"name": "Book / English August",
|
|
22
|
+
"description": "An indian story, Booker prize winner.",
|
|
23
|
+
"amount": 20000,
|
|
24
|
+
"currency": "INR"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
stub_post(/items$/, 'fake_item', param_attr.to_json)
|
|
28
|
+
items = Razorpay::Item.create(param_attr.to_json)
|
|
29
|
+
assert_equal @item_id, items.id
|
|
30
|
+
assert_equal true, items.active
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_edit_items
|
|
34
|
+
|
|
35
|
+
param_attr = {
|
|
36
|
+
"name": "Book / English August",
|
|
37
|
+
"description": "An indian story, Booker prize winner.",
|
|
38
|
+
"amount": 20000,
|
|
39
|
+
"currency": "INR"
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
stub_patch(%r{items/#{@item_id}$}, 'fake_item', param_attr.to_json)
|
|
43
|
+
item = Razorpay::Item.edit(@item_id, param_attr.to_json)
|
|
44
|
+
assert_instance_of Razorpay::Entity, item
|
|
45
|
+
assert_equal @item_id, item.id, 'Item IDs do not match'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_fetch_all_items
|
|
49
|
+
items = Razorpay::Item.all
|
|
50
|
+
assert_instance_of Razorpay::Collection, items, 'Items should be an array'
|
|
51
|
+
refute_empty items.items, 'Items should be more than one'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_fetch_specific_item
|
|
55
|
+
item = Razorpay::Item.fetch(@item_id)
|
|
56
|
+
assert_instance_of Razorpay::Entity, item
|
|
57
|
+
assert_equal @item_id, item.id, 'Item IDs do not match'
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_delete_item
|
|
61
|
+
stub_delete(%r{items/#{@item_id}$}, 'empty')
|
|
62
|
+
item = Razorpay::Item.delete(@item_id)
|
|
63
|
+
assert_instance_of Razorpay::Entity, item
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Razorpay
|
|
4
|
+
# Tests for Razorpay::OauthToken
|
|
5
|
+
class RazorpayOAuthTokenTest < Minitest::Test
|
|
6
|
+
class OAuthToken < Razorpay::Entity; end
|
|
7
|
+
|
|
8
|
+
def test_get_auth_url
|
|
9
|
+
options = {
|
|
10
|
+
'client_id' => '8DXCMTshWSWECc',
|
|
11
|
+
'redirect_uri' => 'https://example.com/razorpay_callback',
|
|
12
|
+
'state' => 'NOBYtv8r6c75ex6WZ',
|
|
13
|
+
'scopes' => ["read_write"]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
expected_auth_url = "https://auth.razorpay.com/authorize?response_type=code&client_id=8DXCMTshWSWECc&redirect_uri=https%3A%2F%2Fexample.com%2Frazorpay_callback&state=NOBYtv8r6c75ex6WZ&scope%5B%5D=read_write"
|
|
17
|
+
auth_url = Razorpay::OAuthToken.get_auth_url(options)
|
|
18
|
+
assert_equal expected_auth_url, auth_url
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_request_validation_for_get_auth_url
|
|
22
|
+
options = {
|
|
23
|
+
'client_id' => '8DXCMTshWSWECc',
|
|
24
|
+
'redirect_uri' => 'https://example.com/razorpay_callback',
|
|
25
|
+
'scopes' => ["read_write"]
|
|
26
|
+
}
|
|
27
|
+
assert_raises(Razorpay::Error) do
|
|
28
|
+
Razorpay::OAuthToken.get_auth_url(options)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_get_access_token
|
|
33
|
+
options = {
|
|
34
|
+
'client_id' => '8DXCMTshWSWECc',
|
|
35
|
+
'client_secret' => 'AESSECRETKEY',
|
|
36
|
+
'grant_type' => 'client_credentials',
|
|
37
|
+
'redirect_uri' => 'http://example.com/razorpay_callback',
|
|
38
|
+
'mode' => 'test'
|
|
39
|
+
}
|
|
40
|
+
stub_post(/token$/,'fake_oauth_token',options)
|
|
41
|
+
oauth_token = Razorpay::OAuthToken.get_access_token(options)
|
|
42
|
+
assert_instance_of Razorpay::Entity, oauth_token, 'OAuthToken not an instance of Entity class'
|
|
43
|
+
assert_equal 'rzp_test_oauth_9xu1rkZqoXlClS', oauth_token.public_token, 'Public Tokens do not match'
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_get_access_token_validation_failure
|
|
47
|
+
options = {
|
|
48
|
+
'client_id' => '8DXCMTshWSWECc',
|
|
49
|
+
'grant_type' => 'client_credentials',
|
|
50
|
+
'redirect_uri' => 'http://example.com/razorpay_callback',
|
|
51
|
+
'mode' => 'test'
|
|
52
|
+
}
|
|
53
|
+
assert_raises(Razorpay::Error) do
|
|
54
|
+
Razorpay::OAuthToken.get_access_token(options)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_refresh_token
|
|
59
|
+
options = {
|
|
60
|
+
'client_id' => '8DXCMTshWSWECc',
|
|
61
|
+
'client_secret' => 'AESSECRETKEY',
|
|
62
|
+
'refresh_token' => 'def5020096e1c470c901d34cd60fa53abdaf3662sa0'
|
|
63
|
+
}
|
|
64
|
+
expected_request_payload = options.merge('grant_type': 'refresh_token')
|
|
65
|
+
stub_post(/token$/,'fake_oauth_token',expected_request_payload)
|
|
66
|
+
oauth_token = Razorpay::OAuthToken.refresh_token(options)
|
|
67
|
+
assert_instance_of Razorpay::Entity, oauth_token, 'OAuthToken not an instance of Entity class'
|
|
68
|
+
assert_equal 'rzp_test_oauth_9xu1rkZqoXlClS', oauth_token.public_token, 'Public Tokens do not match'
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_refresh_token_validation_failure
|
|
72
|
+
options = {
|
|
73
|
+
'client_id' => '8DXCMTshWSWECc',
|
|
74
|
+
'refresh_token' => 'def5020096e1c470c901d34cd60fa53abdaf3662sa0'
|
|
75
|
+
}
|
|
76
|
+
assert_raises(Razorpay::Error) do
|
|
77
|
+
Razorpay::OAuthToken.refresh_token(options)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_revoke_token
|
|
82
|
+
options = {
|
|
83
|
+
'client_id' => '8DXCMTshWSWECc',
|
|
84
|
+
'client_secret' => 'AESSECRETKEY',
|
|
85
|
+
'token_type_hint' => 'access_token',
|
|
86
|
+
'token' => 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJKQTFwODVudE1ySEpoQSIsImp0aSI6IkpPZkd0aHFDTmhqQUhTIiwiaWF0IjoxNjUxMTI0NTU0LCJuYmYiOjE2NTExMjQ1NTQsInN1YiI6IiIsImV4cCI6MTY1ODk4Njk1Miw'
|
|
87
|
+
}
|
|
88
|
+
stub_post(/revoke$/,'fake_revoke_token',options)
|
|
89
|
+
oauth_token = Razorpay::OAuthToken.revoke_token(options)
|
|
90
|
+
assert_instance_of Razorpay::Entity, oauth_token, 'OAuthToken not an instance of Entity class'
|
|
91
|
+
assert_equal 'Token Revoked', oauth_token.message, 'Messages do not match'
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def test_revoke_token_validation_failure
|
|
95
|
+
options = {
|
|
96
|
+
'client_id' => '8DXCMTshWSWECc',
|
|
97
|
+
'client_secret' => 'AESSECRETKEY',
|
|
98
|
+
'token_type_hint' => 'access_token'
|
|
99
|
+
}
|
|
100
|
+
assert_raises(Razorpay::Error) do
|
|
101
|
+
Razorpay::OAuthToken.revoke_token(options)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
data/test/razorpay/test_order.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Razorpay
|
|
|
5
5
|
class RazorpayOrderTest < Minitest::Test
|
|
6
6
|
def setup
|
|
7
7
|
@order_id = 'order_50sX9hGHZJvjjI'
|
|
8
|
-
|
|
8
|
+
@transfer_id = 'trf_DSkl2lXWbiADZG'
|
|
9
9
|
# Any request that ends with orders/order_id
|
|
10
10
|
stub_get(%r{orders/#{@order_id}$}, 'fake_order')
|
|
11
11
|
end
|
|
@@ -44,5 +44,70 @@ module Razorpay
|
|
|
44
44
|
assert !payments.items.empty?, 'payments should be more than one'
|
|
45
45
|
assert_equal 'pay_50sbkZA9AcyE5a', payments.items[0]['id'], 'payment id should match'
|
|
46
46
|
end
|
|
47
|
+
|
|
48
|
+
def test_edit_order
|
|
49
|
+
param_attr = {
|
|
50
|
+
"notes": {
|
|
51
|
+
"key1": "value3",
|
|
52
|
+
"key2": "value2"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
stub_patch(%r{orders/#{@order_id}$}, 'fake_order', param_attr.to_json)
|
|
57
|
+
order = Razorpay::Order.edit(@order_id, param_attr.to_json)
|
|
58
|
+
assert_instance_of Razorpay::Order, order, 'order not an instance of Razorpay::Order class'
|
|
59
|
+
assert_equal @order_id, order.id, 'order IDs do not match'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_fetch_order_transfers
|
|
63
|
+
stub_get("#{BASE_URI}/v1/orders/#{@order_id}/?expand[]=transfers&status", 'fake_order_transfers')
|
|
64
|
+
order = Razorpay::Order.fetch_transfer_order(@order_id)
|
|
65
|
+
assert_instance_of Razorpay::Order, order, 'order not an instance of Razorpay::Order class'
|
|
66
|
+
assert_equal @order_id, order.id, 'order IDs do not match'
|
|
67
|
+
refute_empty order.transfers["items"]
|
|
68
|
+
assert_equal @transfer_id, order.transfers["items"][0]["id"]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_view_rto
|
|
72
|
+
stub_post(%r{orders/#{@order_id}/rto_review$}, 'fake_rto', {})
|
|
73
|
+
order = Razorpay::Order.view_rto(@order_id)
|
|
74
|
+
assert !order.rto_reasons.empty?, 'orders should be more than one'
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_view_rto_exception
|
|
78
|
+
stub_post(%r{orders/#{@order_id}/rto_review$}, 'order_error', {})
|
|
79
|
+
assert_raises(Razorpay::Error) do
|
|
80
|
+
order = Razorpay::Order.view_rto(@order_id)
|
|
81
|
+
if order.error
|
|
82
|
+
raise Razorpay::Error.new, order.error['code']
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def test_fulfillment
|
|
88
|
+
param_attr = {
|
|
89
|
+
"payment_method": "upi",
|
|
90
|
+
"shipping": {
|
|
91
|
+
"waybill": "123456789",
|
|
92
|
+
"status": "rto",
|
|
93
|
+
"provider": "Bluedart"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
stub_post(%r{orders/#{@order_id}/fulfillment$}, 'fake_fulfillment', param_attr.to_json)
|
|
98
|
+
order = Razorpay::Order.edit_fulfillment(@order_id, param_attr.to_json)
|
|
99
|
+
assert_equal "upi", order.payment_method, 'order payment method do not match'
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def test_fulfillment_exception
|
|
103
|
+
para_attr = {}
|
|
104
|
+
stub_post(%r{orders/#{@order_id}/fulfillment$}, 'order_error', para_attr.to_json)
|
|
105
|
+
assert_raises(Razorpay::Error) do
|
|
106
|
+
order = Razorpay::Order.edit_fulfillment(@order_id, para_attr.to_json)
|
|
107
|
+
if order.error
|
|
108
|
+
raise Razorpay::Error.new, order.error['code']
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
47
112
|
end
|
|
48
113
|
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'razorpay/validation_config'
|
|
3
|
+
|
|
4
|
+
module Razorpay
|
|
5
|
+
# Tests for Razorpay::PayloadValidator
|
|
6
|
+
class RazorpayPayloadValidatorTest < Minitest::Test
|
|
7
|
+
def test_validate_mode
|
|
8
|
+
payload = {
|
|
9
|
+
'mode1' => 'test',
|
|
10
|
+
'mode2' => 'live'
|
|
11
|
+
}
|
|
12
|
+
assert_silent do
|
|
13
|
+
Razorpay::PayloadValidator.validate(payload, [
|
|
14
|
+
Razorpay::ValidationConfig.new('mode1', [:mode]),
|
|
15
|
+
Razorpay::ValidationConfig.new('mode2', [:mode]),
|
|
16
|
+
])
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_mode_validation_failure
|
|
21
|
+
payload = {
|
|
22
|
+
'mode' => 'testvalue'
|
|
23
|
+
}
|
|
24
|
+
assert_raises(Razorpay::Error) do
|
|
25
|
+
Razorpay::PayloadValidator.validate(payload, [
|
|
26
|
+
Razorpay::ValidationConfig.new('mode', [:mode])
|
|
27
|
+
])
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_url_validation_failure
|
|
32
|
+
payload = {
|
|
33
|
+
'redirect_uri' => 'test.com'
|
|
34
|
+
}
|
|
35
|
+
assert_raises(Razorpay::Error) do
|
|
36
|
+
Razorpay::PayloadValidator.validate(payload, [
|
|
37
|
+
Razorpay::ValidationConfig.new('redirect_uri', [:url])
|
|
38
|
+
])
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_non_null_validation_failure
|
|
43
|
+
assert_raises(Razorpay::Error) do
|
|
44
|
+
Razorpay::PayloadValidator.validate({}, [
|
|
45
|
+
Razorpay::ValidationConfig.new('redirect_uri', [:non_null])
|
|
46
|
+
])
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_id_validation_failure
|
|
51
|
+
payload = {
|
|
52
|
+
'client_id' => 'fjidhf'
|
|
53
|
+
}
|
|
54
|
+
assert_raises(Razorpay::Error) do
|
|
55
|
+
Razorpay::PayloadValidator.validate({}, [
|
|
56
|
+
Razorpay::ValidationConfig.new('client_id', [:id])
|
|
57
|
+
])
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|