go-common/app/service/live/wallet/http/pay_test.go
2019-04-22 18:49:16 +08:00

117 lines
3.8 KiB
Go
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
})
}