|
|
package http |
|
|
|
|
|
import ( |
|
|
"context" |
|
|
"fmt" |
|
|
. "github.com/smartystreets/goconvey/convey" |
|
|
"go-common/app/service/live/wallet/model" |
|
|
"net/url" |
|
|
"testing" |
|
|
) |
|
|
|
|
|
func queryPay(t *testing.T, form *model.RechargeOrPayForm, platform string) *RechargeRes { |
|
|
params := url.Values{} |
|
|
params.Set("uid", fmt.Sprintf("%d", form.Uid)) |
|
|
params.Set("coin_type", form.CoinType) |
|
|
params.Set("coin_num", fmt.Sprintf("%d", form.CoinNum)) |
|
|
params.Set("extend_tid", form.ExtendTid) |
|
|
params.Set("timestamp", fmt.Sprintf("%d", form.Timestamp)) |
|
|
params.Set("transaction_id", form.TransactionId) |
|
|
|
|
|
req, _ := client.NewRequest("POST", _payURL, "127.0.0.1", params) |
|
|
req.Header.Set("platform", platform) |
|
|
|
|
|
var res RechargeRes |
|
|
|
|
|
err := client.Do(context.TODO(), req, &res) |
|
|
if err != nil { |
|
|
t.Errorf("client.Do() error(%v)", err) |
|
|
t.FailNow() |
|
|
} |
|
|
return &res |
|
|
} |
|
|
|
|
|
func queryPayWithReason(t *testing.T, form *model.RechargeOrPayForm, platform string, reason string) *RechargeRes { |
|
|
params := url.Values{} |
|
|
params.Set("uid", fmt.Sprintf("%d", form.Uid)) |
|
|
params.Set("coin_type", form.CoinType) |
|
|
params.Set("coin_num", fmt.Sprintf("%d", form.CoinNum)) |
|
|
params.Set("extend_tid", form.ExtendTid) |
|
|
params.Set("timestamp", fmt.Sprintf("%d", form.Timestamp)) |
|
|
params.Set("transaction_id", form.TransactionId) |
|
|
params.Set("reason", reason) |
|
|
|
|
|
req, _ := client.NewRequest("POST", _payURL, "127.0.0.1", params) |
|
|
req.Header.Set("platform", platform) |
|
|
|
|
|
var res RechargeRes |
|
|
|
|
|
err := client.Do(context.TODO(), req, &res) |
|
|
if err != nil { |
|
|
t.Errorf("client.Do() error(%v)", err) |
|
|
t.FailNow() |
|
|
} |
|
|
return &res |
|
|
} |
|
|
|
|
|
func TestPay(t *testing.T) { |
|
|
once.Do(startHTTP) |
|
|
|
|
|
Convey("pay normal 先调用get接口 再调用pay 再调用get接口 比较用户钱包数据", t, func() { |
|
|
platforms := []string{"pc", "android", "ios"} |
|
|
var num int64 = 1000 |
|
|
var payNum int64 = 100 |
|
|
uid := getTestRandUid() |
|
|
for _, platform := range platforms { |
|
|
|
|
|
beforeWallet := getTestWallet(t, uid, platform) |
|
|
|
|
|
res := queryRecharge(t, getTestRechargeOrPayForm(t, int32(model.RECHARGETYPE), uid, "gold", num, nil), platform) |
|
|
|
|
|
So(res.Code, ShouldEqual, 0) |
|
|
So(getIntCoinForTest(res.Resp.Gold)-getIntCoinForTest(beforeWallet.Gold), ShouldEqual, num) |
|
|
|
|
|
res = queryRecharge(t, getTestRechargeOrPayForm(t, int32(model.RECHARGETYPE), uid, "silver", num, nil), platform) |
|
|
|
|
|
So(res.Code, ShouldEqual, 0) |
|
|
So(getIntCoinForTest(res.Resp.Silver)-getIntCoinForTest(beforeWallet.Silver), ShouldEqual, num) |
|
|
|
|
|
afterWallet := getTestWallet(t, uid, platform) |
|
|
|
|
|
So(getIntCoinForTest(afterWallet.Gold)-getIntCoinForTest(beforeWallet.Gold), ShouldEqual, num) |
|
|
So(getIntCoinForTest(afterWallet.Silver)-getIntCoinForTest(beforeWallet.Silver), ShouldEqual, num) |
|
|
|
|
|
f1 := getTestRechargeOrPayForm(t, int32(model.PAYTYPE), uid, "gold", payNum, nil) |
|
|
res = queryPay(t, f1, platform) |
|
|
So(res.Code, ShouldEqual, 0) |
|
|
So(getIntCoinForTest(res.Resp.Gold)-getIntCoinForTest(afterWallet.Gold), ShouldEqual, -1*payNum) |
|
|
|
|
|
sr := queryStatus(t, uid, f1.TransactionId) |
|
|
So(sr.Code, ShouldEqual, 0) |
|
|
So(sr.Resp.Status, ShouldEqual, 0) |
|
|
|
|
|
res = queryPay(t, getTestRechargeOrPayForm(t, int32(model.PAYTYPE), uid, "silver", payNum, nil), platform) |
|
|
So(res.Code, ShouldEqual, 0) |
|
|
So(getIntCoinForTest(res.Resp.Silver)-getIntCoinForTest(afterWallet.Silver), ShouldEqual, -1*payNum) |
|
|
|
|
|
payWallet := getTestWallet(t, uid, platform) |
|
|
|
|
|
So(getIntCoinForTest(payWallet.Gold)-getIntCoinForTest(afterWallet.Gold), ShouldEqual, -1*payNum) |
|
|
So(getIntCoinForTest(payWallet.Silver)-getIntCoinForTest(afterWallet.Silver), ShouldEqual, -1*payNum) |
|
|
|
|
|
} |
|
|
}) |
|
|
} |
|
|
|
|
|
func TestPayMetal(t *testing.T) { |
|
|
once.Do(startHTTP) |
|
|
|
|
|
Convey("pay metal", t, func() { |
|
|
var uid int64 = 1 |
|
|
platform := "pc" |
|
|
f1 := getTestRechargeOrPayForm(t, int32(model.PAYTYPE), uid, "metal", 1, nil) |
|
|
res := queryPayWithReason(t, f1, platform, "ut") |
|
|
So(res.Code == 0 || res.Code == 1000000, ShouldBeTrue) |
|
|
}) |
|
|
}
|
|
|
|