razorpay 3.0.1 → 3.2.0
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/.github/workflows/ci.yml +2 -2
- data/CHANGELOG.md +17 -0
- data/README.md +6 -0
- data/documents/account.md +449 -0
- data/documents/card.md +45 -0
- data/documents/generic.md +150 -0
- data/documents/payment.md +44 -1
- data/documents/productConfiguration.md +444 -0
- data/documents/stakeholder.md +334 -0
- data/documents/tokens.md +146 -1
- data/documents/webhook.md +224 -0
- data/lib/razorpay/account.rb +39 -0
- data/lib/razorpay/addon.rb +1 -1
- data/lib/razorpay/card.rb +4 -0
- data/lib/razorpay/constants.rb +28 -2
- data/lib/razorpay/generic.rb +39 -0
- data/lib/razorpay/iin.rb +15 -0
- data/lib/razorpay/order.rb +1 -1
- data/lib/razorpay/product.rb +37 -0
- data/lib/razorpay/request.rb +22 -16
- data/lib/razorpay/stakeholder.rb +39 -0
- data/lib/razorpay/token.rb +28 -0
- data/lib/razorpay/virtual_account.rb +1 -1
- data/lib/razorpay/webhook.rb +50 -0
- data/lib/razorpay.rb +7 -0
- data/test/fixtures/fake_account.json +78 -0
- data/test/fixtures/fake_card_reference.json +5 -0
- data/test/fixtures/fake_iin_token.json +23 -0
- data/test/fixtures/fake_product.json +138 -0
- data/test/fixtures/fake_stakeholder.json +29 -0
- data/test/fixtures/fake_tokenise_customer.json +40 -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/stakeholder_collection.json +35 -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_card.rb +6 -0
- data/test/razorpay/test_customer.rb +8 -8
- data/test/razorpay/test_generic.rb +112 -0
- data/test/razorpay/test_iin.rb +23 -0
- data/test/razorpay/test_order.rb +1 -1
- data/test/razorpay/test_product.rb +67 -0
- data/test/razorpay/test_settlement.rb +1 -1
- data/test/razorpay/test_stakeholder.rb +87 -0
- data/test/razorpay/test_token.rb +66 -0
- data/test/razorpay/test_transfer.rb +1 -1
- data/test/razorpay/test_webhook.rb +132 -0
- metadata +52 -2
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Razorpay
|
4
|
+
# Tests for Razorpay::Account
|
5
|
+
class RazorpayAccountonTest < Minitest::Test
|
6
|
+
class Account < Razorpay::Entity; end
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@account_id = 'acc_00000000000001'
|
10
|
+
@email = 'gauriagain.kumar@example.org'
|
11
|
+
# Any request that ends with account/account_id
|
12
|
+
stub_get(%r{/v2/accounts\/#{Regexp.quote(@account_id)}$}, 'fake_account')
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_account_should_be_defined
|
16
|
+
refute_nil Razorpay::Account
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_account_should_be_available
|
20
|
+
account = Razorpay::Account.fetch(@account_id)
|
21
|
+
assert_instance_of Razorpay::Entity, account, 'Account not an instance of Entity class'
|
22
|
+
assert_equal @account_id, account.id, 'Account IDs do not match'
|
23
|
+
assert_equal @email, account.email, 'Account email is accessible'
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_account_should_be_created
|
27
|
+
|
28
|
+
payload = create_account_payload()
|
29
|
+
|
30
|
+
stub_post(/accounts$/,'fake_account',payload.to_json)
|
31
|
+
|
32
|
+
account = Razorpay::Account.create payload.to_json
|
33
|
+
assert_instance_of Razorpay::Entity, account
|
34
|
+
assert_equal @account_id, account.id
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_account_edit
|
38
|
+
|
39
|
+
param_attr = {
|
40
|
+
"notes": {
|
41
|
+
"internal_ref_id": "111111"
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
stub_patch(%r{accounts/#{@account_id}$}, 'fake_account', param_attr.to_json)
|
46
|
+
|
47
|
+
account = Razorpay::Account.edit(@account_id, param_attr.to_json)
|
48
|
+
assert_instance_of Razorpay::Entity, account
|
49
|
+
assert_equal @account_id, account.id
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_delete_account
|
53
|
+
stub_delete(%r{accounts/#{@account_id}$}, 'fake_account')
|
54
|
+
account = Razorpay::Account.delete(@account_id)
|
55
|
+
assert_instance_of Razorpay::Entity, account
|
56
|
+
assert_equal @account_id, account.id
|
57
|
+
end
|
58
|
+
|
59
|
+
def create_account_payload
|
60
|
+
return {
|
61
|
+
"email": "gauriagainqzy.kumar@example.org",
|
62
|
+
"phone": "9000090000",
|
63
|
+
"legal_business_name": "Acme Corp",
|
64
|
+
"business_type": "partnership",
|
65
|
+
"customer_facing_business_name": "Example",
|
66
|
+
"profile": {
|
67
|
+
"category": "healthcare",
|
68
|
+
"subcategory": "clinic",
|
69
|
+
"description": "Healthcare E-commerce platform",
|
70
|
+
"addresses": {
|
71
|
+
"operation": {
|
72
|
+
"street1": "507, Koramangala 6th block",
|
73
|
+
"street2": "Kormanagala",
|
74
|
+
"city": "Bengaluru",
|
75
|
+
"state": "Karnataka",
|
76
|
+
"postal_code": 560047,
|
77
|
+
"country": "IN"
|
78
|
+
},
|
79
|
+
"registered": {
|
80
|
+
"street1": "507, Koramangala 1st block",
|
81
|
+
"street2": "MG Road",
|
82
|
+
"city": "Bengaluru",
|
83
|
+
"state": "Karnataka",
|
84
|
+
"postal_code": 560034,
|
85
|
+
"country": "IN"
|
86
|
+
}
|
87
|
+
},
|
88
|
+
"business_model": "Online Clothing ( men, women, ethnic, modern ) fashion and lifestyle, accessories, t-shirt, shirt, track pant, shoes."
|
89
|
+
},
|
90
|
+
"legal_info": {
|
91
|
+
"pan": "AAACL1234C",
|
92
|
+
"gst": "18AABCU9603R1ZM"
|
93
|
+
},
|
94
|
+
"brand": {
|
95
|
+
"color": "FFFFFF"
|
96
|
+
},
|
97
|
+
"notes": {
|
98
|
+
"internal_ref_id": "111111"
|
99
|
+
},
|
100
|
+
"contact_name": "Gaurav Kumar",
|
101
|
+
"contact_info": {
|
102
|
+
"chargeback": {
|
103
|
+
"email": "cb@example.org"
|
104
|
+
},
|
105
|
+
"refund": {
|
106
|
+
"email": "cb@example.org"
|
107
|
+
},
|
108
|
+
"support": {
|
109
|
+
"email": "support@example.org",
|
110
|
+
"phone": "9999999998",
|
111
|
+
"policy_url": "https://www.google.com"
|
112
|
+
}
|
113
|
+
},
|
114
|
+
"apps": {
|
115
|
+
"websites": [
|
116
|
+
"https://www.example.org"
|
117
|
+
],
|
118
|
+
"android": [
|
119
|
+
{
|
120
|
+
"url": "playstore.example.org",
|
121
|
+
"name": "Example"
|
122
|
+
}
|
123
|
+
],
|
124
|
+
"ios": [
|
125
|
+
{
|
126
|
+
"url": "appstore.example.org",
|
127
|
+
"name": "Example"
|
128
|
+
}
|
129
|
+
]
|
130
|
+
}
|
131
|
+
}
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
data/test/razorpay/test_card.rb
CHANGED
@@ -19,5 +19,11 @@ module Razorpay
|
|
19
19
|
assert_instance_of Razorpay::Card, card, 'card not an instance of Razorpay::Card class'
|
20
20
|
assert_equal @card_id, card.id, 'card IDs do not match'
|
21
21
|
end
|
22
|
+
|
23
|
+
def test_request_card_reference_should_be_fetched
|
24
|
+
stub_post(%r{cards/fingerprints$}, 'fake_card_reference', {"number": "4111111111111111"})
|
25
|
+
card = Razorpay::Card.request_card_reference({"number": "4111111111111111"})
|
26
|
+
assert_instance_of Razorpay::Entity, card, 'card not an instance of Razorpay::Card class'
|
27
|
+
end
|
22
28
|
end
|
23
29
|
end
|
@@ -43,19 +43,19 @@ module Razorpay
|
|
43
43
|
assert_equal "test@razorpay.com", customer.email
|
44
44
|
end
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
46
|
+
def test_customer_fetch_tokens
|
47
|
+
stub_get(%r{customers/#{@customer_id}$}, 'fake_customer')
|
48
|
+
stub_get(%r{customers/cust_6vRXClWqnLhV14/tokens$}, 'tokens_collection')
|
49
|
+
tokens = Razorpay::Customer.fetch(@customer_id).fetchTokens
|
50
|
+
assert_instance_of Razorpay::Collection, tokens, 'Tokens should be an array'
|
51
|
+
refute_empty tokens.items, 'tokens should be more than one'
|
52
|
+
end
|
53
53
|
|
54
54
|
def test_customer_fetch_token
|
55
55
|
stub_get(%r{customers/#{@customer_id}$}, 'fake_customer')
|
56
56
|
stub_get(%r{customers/cust_6vRXClWqnLhV14/tokens/token_FHfn3rIiM1Z8nr$}, 'fake_token')
|
57
57
|
token = Razorpay::Customer.fetch(@customer_id).fetchToken("token_FHfn3rIiM1Z8nr")
|
58
|
-
assert_instance_of Razorpay::
|
58
|
+
assert_instance_of Razorpay::Token, token, 'Token not an instance of Razorpay::Entity class'
|
59
59
|
assert_equal "token_FHfn3rIiM1Z8nr", token.id
|
60
60
|
end
|
61
61
|
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Razorpay
|
4
|
+
# Tests for Razorpay::Addon
|
5
|
+
class RazorpayGenericTest < Minitest::Test
|
6
|
+
class Generic < Razorpay::Entity; end
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@order_id = 'order_50sX9hGHZJvjjI'
|
10
|
+
@customer_id = 'cust_6vRXClWqnLhV14'
|
11
|
+
@invoice_id = 'inv_6vRZmJYFAG1mNq'
|
12
|
+
@addon_id = 'ao_IrSY3UIqDRx7df'
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_generic_should_be_defined
|
16
|
+
refute_nil Razorpay::Generic
|
17
|
+
end
|
18
|
+
|
19
|
+
# Test fetch endpoint by order entity
|
20
|
+
def test_generic_orders_should_be_fetch
|
21
|
+
stub_get(%r{orders/#{@order_id}$}, 'fake_order')
|
22
|
+
|
23
|
+
client = Razorpay::Generic.new("orders")
|
24
|
+
|
25
|
+
order = client.do(@order_id)
|
26
|
+
|
27
|
+
assert_equal 5000, order.amount
|
28
|
+
assert_equal 'INR', order.currency
|
29
|
+
assert_equal 'TEST', order.receipt
|
30
|
+
end
|
31
|
+
|
32
|
+
# Test post endpoint by order entity
|
33
|
+
def test_generic_orders_should_be_create
|
34
|
+
para_attr = {
|
35
|
+
"amount": 5000
|
36
|
+
}
|
37
|
+
|
38
|
+
stub_post("#{BASE_URI}/v1/orders/", 'fake_order', para_attr.to_json)
|
39
|
+
|
40
|
+
client = Razorpay::Generic.new("orders")
|
41
|
+
order = client.do("", "Post", para_attr.to_json)
|
42
|
+
assert_equal 5000, order.amount
|
43
|
+
assert_equal 'INR', order.currency
|
44
|
+
assert_equal 'TEST', order.receipt
|
45
|
+
end
|
46
|
+
|
47
|
+
# Test fetch endpoint by order entity
|
48
|
+
def test_generic_orders_should_be_edit
|
49
|
+
para_attr = {
|
50
|
+
"notes": {
|
51
|
+
"purpose": "Test UPI QR code notes uodate"
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
stub_patch("#{BASE_URI}/v1/orders/#{@order_id}", 'fake_order', para_attr.to_json)
|
56
|
+
|
57
|
+
client = Razorpay::Generic.new("orders")
|
58
|
+
order = client.do(@order_id, "Patch", para_attr.to_json)
|
59
|
+
assert_equal 5000, order.amount
|
60
|
+
assert_equal 'INR', order.currency
|
61
|
+
assert_equal 'TEST', order.receipt
|
62
|
+
end
|
63
|
+
|
64
|
+
# Test post endpoint by order entity
|
65
|
+
def test_generic_customer_should_be_create
|
66
|
+
para_attr = {
|
67
|
+
"name": "Gaurav Kumar",
|
68
|
+
"contact": 9123456780,
|
69
|
+
"email": "gaurav.kumar@example.com",
|
70
|
+
"notes": {
|
71
|
+
"notes_key_1": "Tea, Earl Grey, Hot",
|
72
|
+
"notes_key_2": "Tea, Earl Grey… decaf."
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
stub_post("#{BASE_URI}/v1/customers/", 'fake_customer', para_attr.to_json)
|
77
|
+
|
78
|
+
client = Razorpay::Generic.new("customers")
|
79
|
+
customer = client.do("","Post", para_attr.to_json)
|
80
|
+
assert_equal 'test@razorpay.com', customer.email
|
81
|
+
assert_equal '9876543210', customer.contact
|
82
|
+
end
|
83
|
+
|
84
|
+
# Test put endpoint by order entity
|
85
|
+
def test_generic_customer_should_be_edit
|
86
|
+
para_attr = {
|
87
|
+
"contact": 9123456780,
|
88
|
+
}
|
89
|
+
|
90
|
+
stub_put("#{BASE_URI}/v1/customers/#{@customer_id}", 'fake_customer', para_attr.to_json)
|
91
|
+
|
92
|
+
client = Razorpay::Generic.new("customers")
|
93
|
+
customer = client.do(@customer_id, "Put", para_attr.to_json)
|
94
|
+
assert_equal 'test@razorpay.com', customer.email
|
95
|
+
assert_equal '9876543210', customer.contact
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_generic_delete_specific_invoice
|
99
|
+
stub_delete(%r{invoices/#{@invoice_id}$}, 'empty')
|
100
|
+
client = Razorpay::Generic.new("invoices")
|
101
|
+
invoice = client.do("#{@invoice_id}", "Delete")
|
102
|
+
refute_nil invoice
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_generic_delete_addon
|
106
|
+
stub_delete(%r{addons/#{@addon_id}$}, 'empty')
|
107
|
+
client = Razorpay::Generic.new("addons")
|
108
|
+
addon = client.do("#{@addon_id}", "Delete")
|
109
|
+
refute_nil addon
|
110
|
+
end
|
111
|
+
end
|
112
|
+
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
|
data/test/razorpay/test_order.rb
CHANGED
@@ -60,7 +60,7 @@ module Razorpay
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def test_fetch_order_transfers
|
63
|
-
stub_get("#{BASE_URI}orders/#{@order_id}/?expand[]=transfers&status", 'fake_order_transfers')
|
63
|
+
stub_get("#{BASE_URI}/v1/orders/#{@order_id}/?expand[]=transfers&status", 'fake_order_transfers')
|
64
64
|
order = Razorpay::Order.fetch_transfer_order(@order_id)
|
65
65
|
assert_instance_of Razorpay::Order, order, 'order not an instance of Razorpay::Order class'
|
66
66
|
assert_equal @order_id, order.id, 'order IDs do not match'
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Razorpay
|
4
|
+
# Tests for Razorpay::Product
|
5
|
+
class RazorpayProductonTest < Minitest::Test
|
6
|
+
class Product < Razorpay::Entity; end
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@product_id = 'acc_prd_00000000000001'
|
10
|
+
@account_id = 'acc_00000000000001'
|
11
|
+
@product_name = 'payment_gateway'
|
12
|
+
@tnc_id = 'tnc_map_00000000000001'
|
13
|
+
# Any request that ends with product_id
|
14
|
+
stub_get(%r{/v2/accounts\/#{Regexp.quote(@account_id)}/products\/#{Regexp.quote(@product_id)}$}, 'fake_product')
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_product_should_be_defined
|
18
|
+
refute_nil Razorpay::Product
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_product_should_be_available
|
22
|
+
product = Razorpay::Product.fetch(@account_id, @product_id)
|
23
|
+
assert_instance_of Razorpay::Entity, product, 'product not an instance of Entity class'
|
24
|
+
assert_equal @product_id, product.id, 'Product IDs do not match'
|
25
|
+
assert_equal @product_name, product.product_name, 'product name is accessible'
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_product_request_product_configuration
|
29
|
+
|
30
|
+
payload = create_product_payload()
|
31
|
+
stub_post(%r{accounts/#{@account_id}/products$}, 'fake_product', payload.to_json)
|
32
|
+
|
33
|
+
product = Razorpay::Product.request_product_configuration(@account_id, payload.to_json)
|
34
|
+
assert_instance_of Razorpay::Entity, product, 'Product not an instance of Entity class'
|
35
|
+
assert_equal @product_id, product.id, 'Product IDs do not match'
|
36
|
+
assert_equal @product_name, product.product_name, 'product name is accessible'
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_product_edit
|
40
|
+
|
41
|
+
payload = create_product_payload()
|
42
|
+
stub_patch(%r{accounts/#{@account_id}/products/#{@product_id}$}, 'fake_product', payload.to_json)
|
43
|
+
|
44
|
+
product = Razorpay::Product.edit(@account_id, @product_id, payload.to_json)
|
45
|
+
assert_instance_of Razorpay::Entity, product, 'Product not an instance of Entity class'
|
46
|
+
assert_equal @product_id, product.id, 'Product IDs do not match'
|
47
|
+
assert_equal @product_name, product.product_name, 'product name is accessible'
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_product_fetchTnc
|
51
|
+
product_name = "payments"
|
52
|
+
|
53
|
+
stub_get("#{BASE_URI}/v2/products/#{product_name}/tnc", 'fetch_tnc')
|
54
|
+
product = Razorpay::Product.fetch_tnc(product_name)
|
55
|
+
assert_instance_of Razorpay::Entity, product, 'Product not an instance of Entity class'
|
56
|
+
assert_equal @tnc_id, product.id, 'Product IDs do not match'
|
57
|
+
end
|
58
|
+
|
59
|
+
def create_product_payload
|
60
|
+
return {
|
61
|
+
"product_name": "payment_gateway",
|
62
|
+
"tnc_accepted": true,
|
63
|
+
"ip": "233.233.233.234"
|
64
|
+
}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -36,7 +36,7 @@ module Razorpay
|
|
36
36
|
"year": 2022,
|
37
37
|
"month":12
|
38
38
|
}
|
39
|
-
stub_get("#{BASE_URI}settlements/recon/combined?month=12&year=2022", 'settlement_report_collection')
|
39
|
+
stub_get("#{BASE_URI}/v1/settlements/recon/combined?month=12&year=2022", 'settlement_report_collection')
|
40
40
|
settlement = Razorpay::Settlement.reports(para_attr)
|
41
41
|
assert_instance_of Razorpay::Collection, settlement, 'Settlement not an instance of Settlement class'
|
42
42
|
refute_empty settlement.items, 'Settlement should be more than one'
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Razorpay
|
4
|
+
# Tests for Razorpay::Account
|
5
|
+
class RazorpayStakeholderonTest < Minitest::Test
|
6
|
+
class Stakeholder < Razorpay::Entity; end
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@stakeholder_id = 'sth_00000000000001'
|
10
|
+
@account_id = 'acc_00000000000001'
|
11
|
+
@email = 'gaurav.kumar@example.com'
|
12
|
+
# Any request that ends with stakeholder_id
|
13
|
+
stub_get(%r{/v2/accounts\/#{Regexp.quote(@account_id)}/stakeholders\/#{Regexp.quote(@stakeholder_id)}$}, 'fake_stakeholder')
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_stakeholder_should_be_defined
|
17
|
+
refute_nil Razorpay::Stakeholder
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_stakeholder_should_be_available
|
21
|
+
stakeholder = Razorpay::Stakeholder.fetch(@account_id, @stakeholder_id)
|
22
|
+
assert_instance_of Razorpay::Stakeholder, stakeholder, 'Stakeholder not an instance of Entity class'
|
23
|
+
assert_equal @stakeholder_id, stakeholder.id, 'Stakeholder IDs do not match'
|
24
|
+
assert_equal @email, stakeholder.email, 'Stakeholder email is accessible'
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_stakeholder_should_be_create
|
28
|
+
|
29
|
+
payload = create_stakeholder_payload()
|
30
|
+
stub_post(%r{accounts/#{@account_id}/stakeholders$}, 'fake_stakeholder', payload.to_json)
|
31
|
+
|
32
|
+
stakeholder = Razorpay::Stakeholder.create(@account_id, payload.to_json)
|
33
|
+
assert_instance_of Razorpay::Stakeholder, stakeholder, 'Stakeholder not an instance of Entity class'
|
34
|
+
assert_equal @stakeholder_id, stakeholder.id, 'Stakeholder IDs do not match'
|
35
|
+
assert_equal @email, stakeholder.email, 'Stakeholder email is accessible'
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_stakeholder_edit
|
39
|
+
|
40
|
+
payload = create_stakeholder_payload()
|
41
|
+
stub_patch(%r{accounts/#{@account_id}/stakeholders/#{@stakeholder_id}$}, 'fake_stakeholder', payload.to_json)
|
42
|
+
|
43
|
+
stakeholder = Razorpay::Stakeholder.edit(@account_id, @stakeholder_id, payload.to_json)
|
44
|
+
assert_instance_of Razorpay::Stakeholder, stakeholder, 'Stakeholder not an instance of Entity class'
|
45
|
+
assert_equal @stakeholder_id, stakeholder.id, 'Stakeholder IDs do not match'
|
46
|
+
assert_equal @email, stakeholder.email, 'Stakeholder email is accessible'
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_fetching_all_stakeholder
|
50
|
+
stub_get(%r{accounts/#{@account_id}/stakeholders$}, 'stakeholder_collection')
|
51
|
+
orders = Razorpay::Stakeholder.all(@account_id)
|
52
|
+
assert_instance_of Razorpay::Collection, orders, 'Orders should be an array'
|
53
|
+
assert !orders.items.empty?, 'orders should be more than one'
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_stakeholder_payload
|
57
|
+
return {
|
58
|
+
"percentage_ownership": 10,
|
59
|
+
"name": "Gaurav Kumar",
|
60
|
+
"email": "gaurav.kumar@example.com",
|
61
|
+
"relationship": {
|
62
|
+
"director": true,
|
63
|
+
"executive": false
|
64
|
+
},
|
65
|
+
"phone": {
|
66
|
+
"primary": "9000090000",
|
67
|
+
"secondary": "9000090000"
|
68
|
+
},
|
69
|
+
"addresses": {
|
70
|
+
"residential": {
|
71
|
+
"street": "506, Koramangala 1st block",
|
72
|
+
"city": "Bengaluru",
|
73
|
+
"state": "Karnataka",
|
74
|
+
"postal_code": "560034",
|
75
|
+
"country": "IN"
|
76
|
+
}
|
77
|
+
},
|
78
|
+
"kyc": {
|
79
|
+
"pan": "AVOPB1111K"
|
80
|
+
},
|
81
|
+
"notes": {
|
82
|
+
"random_key_by_partner": "random_value"
|
83
|
+
}
|
84
|
+
}
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Razorpay
|
4
|
+
# Tests for Razorpay::Token
|
5
|
+
class RazorpayTokenTest < Minitest::Test
|
6
|
+
class Token < Razorpay::Entity; end
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@token_id = 'token_00000000000001'
|
10
|
+
@customer_id = 'cust_1Aa00000000001'
|
11
|
+
@method = 'card'
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_token_should_be_defined
|
15
|
+
refute_nil Razorpay::Token
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_token_should_be_available
|
19
|
+
payload = {
|
20
|
+
"id": @token_id
|
21
|
+
}
|
22
|
+
stub_post(%r{/tokens/fetch$}, 'fake_tokenise_customer', payload.to_json)
|
23
|
+
token = Razorpay::Token.fetch(payload.to_json)
|
24
|
+
assert_instance_of Razorpay::Token, token, 'token not an instance of Token class'
|
25
|
+
assert_equal @token_id, token.id, 'Token IDs do not match'
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_token_should_be_delete
|
29
|
+
payload = {
|
30
|
+
"id": @token_id
|
31
|
+
}
|
32
|
+
stub_post(%r{/tokens/delete$}, 'empty', payload.to_json)
|
33
|
+
token = Razorpay::Token.delete(payload.to_json)
|
34
|
+
assert_instance_of Razorpay::Entity, token, 'token not an instance of Entity class'
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_token_create
|
38
|
+
|
39
|
+
payload = create_token_payload()
|
40
|
+
stub_post(%r{/tokens$}, 'fake_tokenise_customer', payload.to_json)
|
41
|
+
|
42
|
+
token = Razorpay::Token.create(payload.to_json)
|
43
|
+
assert_instance_of Razorpay::Token, token, 'Token not an instance of Token class'
|
44
|
+
assert_equal @token_id, token.id, 'Token IDs do not match'
|
45
|
+
end
|
46
|
+
|
47
|
+
def create_token_payload
|
48
|
+
return {
|
49
|
+
"customer_id": "cust_00000000000002",
|
50
|
+
"method": "card",
|
51
|
+
"card": {
|
52
|
+
"number": "4854000000708430",
|
53
|
+
"cvv": "123",
|
54
|
+
"expiry_month": "12",
|
55
|
+
"expiry_year": "24",
|
56
|
+
"name": "Gaurav Kumar"
|
57
|
+
},
|
58
|
+
"authentication": {
|
59
|
+
"provider": "razorpay",
|
60
|
+
"provider_reference_id": "pay_000000000000"
|
61
|
+
},
|
62
|
+
"notes": []
|
63
|
+
}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -45,7 +45,7 @@ module Razorpay
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_transfer_fetch_settlement_details
|
48
|
-
stub_get("#{BASE_URI}transfers/?expand[]=recipient_settlement", 'transfers_collection')
|
48
|
+
stub_get("#{BASE_URI}/v1/transfers/?expand[]=recipient_settlement", 'transfers_collection')
|
49
49
|
transfer = Razorpay::Transfer.fetch_settlements
|
50
50
|
assert_instance_of Razorpay::Collection, transfer , 'Transfer should be an array'
|
51
51
|
refute_empty transfer.items , 'Transfer should be more than one'
|