pingpp 2.1.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/data/ca-certificates.crt +199 -280
  3. data/lib/pingpp/api_operations/delete.rb +9 -4
  4. data/lib/pingpp/app_based_resource.rb +27 -0
  5. data/lib/pingpp/balance_bonus.rb +14 -0
  6. data/lib/pingpp/balance_transaction.rb +9 -0
  7. data/lib/pingpp/balance_transfer.rb +10 -0
  8. data/lib/pingpp/batch_withdrawal.rb +11 -0
  9. data/lib/pingpp/channel.rb +8 -0
  10. data/lib/pingpp/coupon.rb +9 -0
  11. data/lib/pingpp/coupon_template.rb +29 -0
  12. data/lib/pingpp/order.rb +69 -0
  13. data/lib/pingpp/recharge.rb +36 -0
  14. data/lib/pingpp/royalty.rb +14 -0
  15. data/lib/pingpp/royalty_settlement.rb +11 -0
  16. data/lib/pingpp/royalty_template.rb +12 -0
  17. data/lib/pingpp/royalty_transaction.rb +9 -0
  18. data/lib/pingpp/settle_account.rb +12 -0
  19. data/lib/pingpp/singleton_app_based_resource.rb +26 -0
  20. data/lib/pingpp/sub_app.rb +12 -0
  21. data/lib/pingpp/sub_app_based_resource.rb +35 -0
  22. data/lib/pingpp/user.rb +9 -0
  23. data/lib/pingpp/user_based_resource.rb +35 -0
  24. data/lib/pingpp/util.rb +19 -1
  25. data/lib/pingpp/version.rb +1 -1
  26. data/lib/pingpp/withdrawal.rb +15 -0
  27. data/lib/pingpp.rb +37 -4
  28. data/test/balance_bonus_test.rb +51 -0
  29. data/test/balance_transaction_test.rb +19 -0
  30. data/test/balance_transfer_test.rb +55 -0
  31. data/test/batch_refund_test.rb +41 -0
  32. data/test/batch_transfer_test.rb +61 -0
  33. data/test/batch_withdrawal_test.rb +76 -0
  34. data/test/charge_test.rb +51 -0
  35. data/test/coupon_template_test.rb +68 -0
  36. data/test/coupon_test.rb +81 -0
  37. data/test/customs_test_bak.rb +31 -0
  38. data/test/order_test.rb +181 -0
  39. data/test/recharge_test.rb +106 -0
  40. data/test/refund_test.rb +32 -0
  41. data/test/royalty_settlement_test.rb +68 -0
  42. data/test/royalty_template_test.rb +102 -0
  43. data/test/royalty_test.rb +43 -0
  44. data/test/royalty_transaction_test.rb +24 -0
  45. data/test/settle_account_test.rb +41 -0
  46. data/test/sub_app_channel_test.rb +70 -0
  47. data/test/sub_app_test.rb +60 -0
  48. data/test/test_assistant.rb +35 -0
  49. data/test/test_data.rb +191 -0
  50. data/test/user_test.rb +42 -0
  51. data/test/withdrawal_test.rb +121 -0
  52. metadata +72 -7
  53. data/test/charge_reverse_test.rb +0 -84
  54. data/test/settle_account_tes.rb +0 -53
@@ -0,0 +1,106 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+ require "digest/md5"
3
+
4
+ module Pingpp
5
+ class RechargeTest < Test::Unit::TestCase
6
+ # 创建一笔充值 (recharge)
7
+ should "execute should return a new, fully executed recharge when passed correct parameters" do
8
+ order_no = Digest::MD5.hexdigest(Time.now.to_i.to_s)[0,12]
9
+
10
+ params = {
11
+ :user => get_user_id,
12
+ :charge => {
13
+ :order_no => order_no,
14
+ :channel => "alipay", # 支付渠道
15
+ :client_ip => "127.0.0.1", # 发起支付请求客户端的 IP 地址,格式为 IPV4,如: 127.0.0.1
16
+ :amount => 100, # 订单总金额, 人民币单位:分(如订单总金额为 1 元,此处请填 100)
17
+ :body => "Your Body",
18
+ :subject => "You Subject",
19
+ :extra => {} # 根据渠道填入参数 https://www.pingxx.com/api#支付渠道-extra-参数说明
20
+ },
21
+ :description => "充值描述"
22
+ }
23
+
24
+ o = Pingpp::Recharge.create(
25
+ params,
26
+ { :app => get_app_id } # App 信息
27
+ )
28
+
29
+ assert o.charge.order_no == params[:charge][:order_no]
30
+ assert o.app == get_app_id
31
+ assert o.object == "recharge"
32
+ assert o.kind_of?(Pingpp::Recharge)
33
+ assert o.charge.kind_of?(Pingpp::Charge)
34
+ end
35
+
36
+ # 查询一笔充值 (recharge)
37
+ should "return an existed recharge when passed correct id" do
38
+ o = Pingpp::Recharge.retrieve(
39
+ existed_recharge_id,
40
+ { :app => get_app_id } # App 信息
41
+ )
42
+
43
+ assert o.app == get_app_id
44
+ assert o.object == "recharge"
45
+ assert o.kind_of?(Pingpp::Recharge)
46
+ end
47
+
48
+ # 查询充值列表
49
+ should "return a list object of recharge" do
50
+ o = Pingpp::Recharge.list(
51
+ { :per_page => 3, :page => 1 },
52
+ { :app => get_app_id } # App 信息
53
+ )
54
+
55
+ assert o.kind_of?(Pingpp::ListObject)
56
+ assert o.data[0].kind_of?(Pingpp::Recharge)
57
+ end
58
+
59
+ # 查询 recharge 的退款列表
60
+ should "should return a refund list object of recharge" do
61
+ recharge_id, _ = existed_refund_id_of_recharge
62
+ o = Pingpp::Recharge.list_refunds(
63
+ recharge_id, # Recharge 对象 ID
64
+ { :per_page => 3, :page => 1 }, # 过滤参数,分页参数
65
+ { :app => get_app_id } # App 信息
66
+ )
67
+
68
+ assert o.kind_of?(Pingpp::ListObject)
69
+ assert o.data[0].kind_of?(Pingpp::Refund)
70
+ end
71
+
72
+ # 发起 recharge 的退款
73
+ should "return a new refund object of recharge" do
74
+ begin
75
+ o = Pingpp::Recharge.refund(
76
+ recharge_to_refund, # Recharge 对象 ID
77
+ {
78
+ # required.
79
+ :description => '退款信息',
80
+ },
81
+ { :app => get_app_id } # App 信息
82
+ )
83
+
84
+ assert o.object == 'refund'
85
+ assert o.kind_of?(Pingpp::Refund)
86
+ rescue => e
87
+ assert e.kind_of?(Pingpp::InvalidRequestError) || e.kind_of?(Pingpp::ChannelError)
88
+ assert e.message.include?("可退金额为 0") || e.message.include?("refundable amount is 0")
89
+ end
90
+ end
91
+
92
+ # 查询 recharge 的退款
93
+ should "should return a refund object of recharge" do
94
+ recharge_id, refund_id = existed_refund_id_of_recharge
95
+ o = Pingpp::Recharge.retrieve_refund(
96
+ recharge_id, # Recharge 对象 ID
97
+ refund_id, # Refund 对象 ID
98
+ { :app => get_app_id } # App 信息
99
+ )
100
+
101
+ assert o.object == 'refund'
102
+ assert o.id == refund_id
103
+ assert o.kind_of?(Pingpp::Refund)
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,32 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RefundTest < Test::Unit::TestCase
5
+ should "execute should return a refund list when passed correct parameters" do
6
+ l = Pingpp::Refund.list(get_charge_id, {:limit => 3})
7
+
8
+ assert l.object == 'list'
9
+ assert l.data.count <= 3
10
+ end
11
+
12
+ should "execute should return a refund when passed correct parameters" do
13
+ ch_id = get_charge_id
14
+
15
+ r = Pingpp::Refund.create(ch_id, {:amount => 1, :description => 'Refund amount test.'})
16
+
17
+ assert r.object == 'refund'
18
+ assert r.charge == ch_id
19
+ end
20
+
21
+ should "execute should return an exist refund when passed correct charge id and refund id" do
22
+ re_id = get_refund_id
23
+ ch_id = get_charge_id
24
+
25
+ r = Pingpp::Refund.retrieve(ch_id, re_id)
26
+
27
+ assert r.object == 'refund'
28
+ assert r.id == re_id
29
+ assert r.charge == ch_id
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,68 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RoyaltySettlementTest < Test::Unit::TestCase
5
+ # 创建分润结算
6
+ should "return a royalty_settlement object when passed correct params" do
7
+ params = {
8
+ # 分润发起方所在的 App ID required|string
9
+ :payer_app => get_payer_app,
10
+
11
+ # 分润的方式 required|string,null; 余额 balance 或渠道名称 [alipay, wx_pub, unionpay, ...]
12
+ :method => "alipay",
13
+
14
+ # 分润创建时间 optional|hash
15
+ :created => {
16
+ :gte => 1504875000,
17
+ :lt => 1504885000
18
+ },
19
+ }
20
+
21
+ begin
22
+ o = Pingpp::RoyaltySettlement.create(params)
23
+
24
+ assert o.kind_of?(Pingpp::RoyaltySettlement)
25
+ rescue => e
26
+ assert e.kind_of?(Pingpp::InvalidRequestError)
27
+ assert e.message.include?("无有效")
28
+ end
29
+ end
30
+
31
+ # 查询分润结算对象
32
+ should "return an existed royalty_settlement object when passed a correct id" do
33
+ o = Pingpp::RoyaltySettlement.retrieve(existed_royalty_settlement_id)
34
+
35
+ assert o.kind_of?(Pingpp::RoyaltySettlement)
36
+ end
37
+
38
+ # 更新/取消分润结算对象
39
+ should "return an updated royalty_settlement object when passed a correct id" do
40
+ begin
41
+ o = Pingpp::RoyaltySettlement.update(
42
+ existed_royalty_settlement_id,
43
+ {
44
+ # 更新状态 required|string; canceled: 取消结算, pending: 确认结算
45
+ :status => 'canceled'
46
+ }
47
+ )
48
+
49
+ assert o.kind_of?(Pingpp::RoyaltySettlement)
50
+ rescue => e
51
+ assert e.kind_of?(Pingpp::InvalidRequestError) || e.kind_of?(Pingpp::ChannelError)
52
+ assert e.message.include?("状态错误")
53
+ end
54
+ end
55
+
56
+ # 查询分润结算对象列表
57
+ should "return a list object of royalty_settlement" do
58
+ o = Pingpp::RoyaltySettlement.list(
59
+ { :per_page => 3, :page => 1, :payer_app => get_payer_app }
60
+ )
61
+
62
+ assert o.kind_of?(Pingpp::ListObject)
63
+ if o.data.count > 0
64
+ assert o.data[0].kind_of?(Pingpp::RoyaltySettlement)
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,102 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RoyaltyTemplateTest < Test::Unit::TestCase
5
+ # 创建分润模版
6
+ should "return a royalty_template object when passed correct parameters" do
7
+ params = {
8
+ # App ID required|string
9
+ :app => get_app_id,
10
+
11
+ # 描述信息 optional|string
12
+ :description => "TEMPLATE DESCRIPTION",
13
+
14
+ # 模版名称 optional|string
15
+ # :name => "TEMPLATE_NAME",
16
+
17
+ # 分润规则 required|hash
18
+ :rule => {
19
+ # 分润模式 required|string; rate: 按订单金额(包含优惠券金额)的比例, fixed: 固定金额
20
+ :royalty_mode => "rate",
21
+
22
+ # 分配模式 required|string; 指当订单确定的层级如果少于模板配置层级时,
23
+ # 模板中多余的分润金额是归属于收款方 `receipt_reserved` 还是服务方 `service_reserved`。
24
+ :allocation_mode => "receipt_reserved",
25
+
26
+ # 退分润模式 required|string; no_refund: 退款时不退分润, proportional: 按比例退分润, full_refund: 一旦退款分润全退
27
+ :refund_mode => "no_refund",
28
+
29
+ # 分润数据列表 required|array
30
+ :data => [
31
+ {
32
+ :level => 0,
33
+ :value => 10
34
+ },
35
+ {
36
+ :level => 1,
37
+ :value => 20
38
+ }
39
+ ],
40
+ },
41
+ }
42
+
43
+ o = Pingpp::RoyaltyTemplate.create(params)
44
+
45
+ assert o.kind_of?(Pingpp::RoyaltyTemplate)
46
+ end
47
+
48
+ # 查询分润模版
49
+ should "return an existed royalty_template object when passed a correct id" do
50
+ o = Pingpp::RoyaltyTemplate.retrieve(existed_royalty_template_id)
51
+
52
+ assert o.kind_of?(Pingpp::RoyaltyTemplate)
53
+ end
54
+
55
+ # 查询分润模版列表
56
+ should "return a list object of royalty_template" do
57
+ o = Pingpp::RoyaltyTemplate.list(
58
+ { :per_page => 3, :page => 1 }
59
+ )
60
+
61
+ assert o.kind_of?(Pingpp::ListObject)
62
+ assert o.data[0].kind_of?(Pingpp::RoyaltyTemplate)
63
+ end
64
+
65
+ # 更新分润模版
66
+ should "return a updated royalty_template" do
67
+ params = {
68
+ :description => "New description #{Time.now.to_i.to_s}",
69
+ :rule => {
70
+ :royalty_mode => "rate",
71
+ :allocation_mode => "receipt_reserved",
72
+ :refund_mode => "no_refund",
73
+ :data => [
74
+ { :level => 0, :value => 20 },
75
+ { :level => 1, :value => 30 }
76
+ ],
77
+ },
78
+ }
79
+ o = Pingpp::RoyaltyTemplate.update(
80
+ existed_royalty_template_id,
81
+ params
82
+ )
83
+
84
+ assert o.kind_of?(Pingpp::RoyaltyTemplate)
85
+ assert o.description == params[:description]
86
+ assert o.rule.data[0].value == params[:rule][:data][0][:value]
87
+ end
88
+
89
+ # 删除分润模版
90
+ should "return deleted object with royalty template id" do
91
+ begin
92
+ o = Pingpp::RoyaltyTemplate.delete(royalty_template_id_to_delete)
93
+
94
+ assert o.id == royalty_template_id_to_delete
95
+ assert o.deleted
96
+ rescue => e
97
+ assert e.kind_of?(Pingpp::InvalidRequestError)
98
+ assert e.message.include?("找不到分润模板对象")
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RoyaltyTest < Test::Unit::TestCase
5
+ # 批量更新分润对象
6
+ should "return a royalty list object when passed correct ids" do
7
+ params = {
8
+ # 分润 ID 列表 required|array
9
+ :ids => get_royalty_ids_to_update,
10
+
11
+ # 描述信息 optional|string
12
+ :description => "DESCRIPTION",
13
+
14
+ # optional|string
15
+ # :method => "manual",
16
+ }
17
+
18
+ o = Pingpp::Royalty.batch_update(params)
19
+
20
+ assert o.kind_of?(Pingpp::ListObject)
21
+ assert o.data[0].kind_of?(Pingpp::Royalty)
22
+ end
23
+
24
+ # 查询分润对象
25
+ should "return an existed royalty object when passed a correct id" do
26
+ o = Pingpp::Royalty.retrieve(existed_royalty_id)
27
+
28
+ assert o.kind_of?(Pingpp::Royalty)
29
+ end
30
+
31
+ # 查询分润对象列表
32
+ should "return a list object of royalties" do
33
+ o = Pingpp::Royalty.list(
34
+ { :per_page => 3, :page => 1 }
35
+ )
36
+
37
+ assert o.kind_of?(Pingpp::ListObject)
38
+ if o.data.count > 0
39
+ assert o.data[0].kind_of?(Pingpp::Royalty)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RoyaltyTransactionTest < Test::Unit::TestCase
5
+ # 查询分润结算明细
6
+ should "return an existed royalty_transaction object when passed a correct id" do
7
+ o = Pingpp::RoyaltyTransaction.retrieve(existed_royalty_transaction_id)
8
+
9
+ assert o.kind_of?(Pingpp::RoyaltyTransaction)
10
+ end
11
+
12
+ # 查询分润结算明细列表
13
+ should "return a list object of royalty_transaction" do
14
+ o = Pingpp::RoyaltyTransaction.list(
15
+ { :per_page => 3, :page => 1 }
16
+ )
17
+
18
+ assert o.kind_of?(Pingpp::ListObject)
19
+ if o.data.count > 0
20
+ assert o.data[0].kind_of?(Pingpp::RoyaltyTransaction)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+ require "digest/md5"
3
+
4
+ module Pingpp
5
+ class SettleAccountTest < Test::Unit::TestCase
6
+ should "settle_account create" do
7
+ params = {
8
+ :channel => 'wx_pub',
9
+ :recipient => {
10
+ :account => 'oazpsj-ejmwkkskuggaj2h2kaz8ah'
11
+ }
12
+ }
13
+
14
+ u = Pingpp::SettleAccount.create(params, {:user => get_user_id})
15
+
16
+ assert u.object == 'settle_account'
17
+ assert u.channel == params[:channel]
18
+ end
19
+
20
+ should "settle_account retrieve" do
21
+ u = Pingpp::SettleAccount.retrieve('320217041815593200000501', {:user => get_user_id})
22
+
23
+ assert u.object == 'settle_account'
24
+ assert u.id == '320217041815593200000501'
25
+ end
26
+
27
+ should "settle_account list" do
28
+ l = Pingpp::SettleAccount.list({:per_page => 3}, {:user => get_user_id})
29
+
30
+ assert l.object == 'list'
31
+ assert l.data.count <= 3
32
+ end
33
+
34
+ should "settle_account delete" do
35
+ d = Pingpp::SettleAccount.delete('320217080118072300000201', {}, {:user => get_user_id})
36
+
37
+ assert d.deleted
38
+ assert d.id == '320217080118072300000201'
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,70 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class SubAppChannelTest < Test::Unit::TestCase
5
+ # 创建子商户渠道参数 (仅支持 livemode)
6
+ should "sub_app channel create" do
7
+ params = {
8
+ :channel => "bfb",
9
+ :params => {
10
+ "fee_rate" => 60,
11
+ "bfb_sp" => "1600330402",
12
+ "bfb_key" => "c832cGsdBdErycpTxs3KMQ3cQkawZvzC"
13
+ },
14
+ :description => "channel info"
15
+ }
16
+
17
+ channel_info = Pingpp::Channel.create(params, {:sub_app => get_sub_app_id})
18
+
19
+ assert channel_info.object == 'channel'
20
+ assert channel_info.description == params[:description]
21
+ assert channel_info.params['fee_rate'] == params[:params]["fee_date"]
22
+ assert channel_info.params['bfb_sp'] == params[:params]["bfb_sp"]
23
+ assert channel_info.params['bfb_key'] == params[:params]["bfb_key"]
24
+ end
25
+
26
+ # 查询子商户渠道参数 (仅支持 livemode)
27
+ should "sub_app channel retrieve" do
28
+ channel_info = Pingpp::Channel.retrieve(
29
+ "bfb",
30
+ {
31
+ :sub_app => get_sub_app_id
32
+ }
33
+ )
34
+
35
+ assert channel_info.object == 'channel'
36
+ end
37
+
38
+ # 更新子商户渠道参数 (仅支持 livemode)
39
+ should "sub_app channel update" do
40
+ new_description = 'Shanghai ' + Time.now.iso8601
41
+ channel_info = Pingpp::Channel.update(
42
+ "bfb",
43
+ {
44
+ :description => new_description,
45
+ :params => {
46
+ "fee_rate" => 60,
47
+ "bfb_sp" => "1600330404",
48
+ "bfb_key" => "c832cGscpTxs3KMQ3cQkdBdEryawZvzC"
49
+ }
50
+ },
51
+ { :sub_app => get_sub_app_id }
52
+ )
53
+
54
+ assert channel_info.object == 'channel'
55
+ assert channel_info.description == new_description
56
+ end
57
+
58
+ # 删除子商户渠道参数 (仅支持 livemode)
59
+ should "sub_app channel delete" do
60
+ channel_info = Pingpp::Channel.delete(
61
+ "bfb",
62
+ {}
63
+ { :sub_app => get_sub_app_id }
64
+ )
65
+
66
+ assert o.deleted
67
+ assert o.channel == "bfb"
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,60 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+ require "digest/md5"
3
+
4
+ module Pingpp
5
+ class SubAppTest < Test::Unit::TestCase
6
+ # 创建子商户 sub_app
7
+ should "sub_app create" do
8
+ user_id = Digest::MD5.hexdigest(Time.now.to_i.to_s)[0,12]
9
+ display_name = 'sub_app_' + user_id
10
+
11
+ params = {
12
+ :display_name => display_name,
13
+ :user => user_id
14
+ }
15
+
16
+ sub_app = Pingpp::SubApp.create(params)
17
+
18
+ assert sub_app.kind_of?(Pingpp::SubApp)
19
+ assert sub_app.object == 'sub_app'
20
+ assert sub_app.user == user_id
21
+ assert sub_app.display_name == display_name
22
+ end
23
+
24
+ # 查询 sub_app
25
+ should "sub_app retrieve" do
26
+ sub_app = Pingpp::SubApp.retrieve(get_sub_app_id)
27
+
28
+ assert sub_app.object == 'sub_app'
29
+ assert sub_app.id == get_sub_app_id
30
+ end
31
+
32
+ # 查询 sub_app 列表
33
+ should "sub_app list" do
34
+ l = Pingpp::SubApp.list(:per_page => 3)
35
+
36
+ assert l.object == 'list'
37
+ assert l.data.count <= 3
38
+ assert l.data[0].kind_of?(Pingpp::SubApp)
39
+ end
40
+
41
+ # 更新 sub_app
42
+ should "sub_app update" do
43
+ new_description = 'Shanghai ' + Time.now.iso8601
44
+ sub_app = Pingpp::SubApp.update(get_sub_app_id, {:description => new_description})
45
+
46
+ assert sub_app.kind_of?(Pingpp::SubApp)
47
+ assert sub_app.object == 'sub_app'
48
+ assert sub_app.id == get_sub_app_id
49
+ assert sub_app.description == new_description
50
+ end
51
+
52
+ # 删除 sub_app
53
+ should "sub_app delete" do
54
+ sub_app = Pingpp::SubApp.delete(sub_app_id_to_delete)
55
+
56
+ assert sub_app.deleted
57
+ assert sub_app.id == sub_app_id_to_delete
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,35 @@
1
+ require 'pingpp'
2
+ require 'test/unit'
3
+ require 'mocha/setup'
4
+ require 'stringio'
5
+ require 'shoulda/context'
6
+ require File.expand_path('../test_data', __FILE__)
7
+
8
+ module Pingpp
9
+ @mock_rest_client = nil
10
+
11
+ def self.mock_rest_client=(mock_client)
12
+ @mock_rest_client = mock_client
13
+ end
14
+ end
15
+
16
+ class Test::Unit::TestCase
17
+ include Pingpp::TestData
18
+ include Mocha
19
+
20
+ setup do
21
+ @mock = mock
22
+ Pingpp.mock_rest_client = @mock
23
+ Pingpp.api_key = get_api_key
24
+
25
+ Pingpp.private_key_path = File.expand_path('../../example/your_rsa_private_key.pem', __FILE__)
26
+
27
+ # 使用账户系统部分接口需要设置该参数,调用相关方法时可传 opts[:app] 参数来覆盖该值
28
+ Pingpp.app_id = get_app_id
29
+ end
30
+
31
+ teardown do
32
+ Pingpp.mock_rest_client = nil
33
+ Pingpp.api_key = nil
34
+ end
35
+ end