96 lines
3.2 KiB
Go
96 lines
3.2 KiB
Go
|
package http
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"fmt"
|
|||
|
. "github.com/smartystreets/goconvey/convey"
|
|||
|
"go-common/app/service/live/wallet/model"
|
|||
|
"net/url"
|
|||
|
"testing"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
func queryExchange(t *testing.T, form *model.ExchangeForm, platform string) *RechargeRes {
|
|||
|
params := url.Values{}
|
|||
|
params.Set("uid", fmt.Sprintf("%d", form.Uid))
|
|||
|
params.Set("src_coin_type", form.SrcCoinType)
|
|||
|
params.Set("src_coin_num", fmt.Sprintf("%d", form.SrcCoinNum))
|
|||
|
params.Set("dest_coin_type", form.DestCoinType)
|
|||
|
params.Set("dest_coin_num", fmt.Sprintf("%d", form.DestCoinNum))
|
|||
|
params.Set("extend_tid", form.ExtendTid)
|
|||
|
params.Set("timestamp", fmt.Sprintf("%d", form.Timestamp))
|
|||
|
params.Set("transaction_id", form.TransactionId)
|
|||
|
|
|||
|
req, _ := client.NewRequest("POST", _exchangeURL, "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 getTestExchangeForm(t *testing.T, uid int64, srcCoinType string, srcCoinNum int64, destCoinType string, destCoinNum int64, tid interface{}) *model.ExchangeForm {
|
|||
|
|
|||
|
if tid == nil {
|
|||
|
res := queryGetTid(t, int32(model.EXCHANGETYPE), getTestParamsJson())
|
|||
|
if res.Code != 0 {
|
|||
|
t.Errorf("get tid failed code : %d", res.Code)
|
|||
|
t.FailNow()
|
|||
|
}
|
|||
|
tid = res.Resp.TransactionId
|
|||
|
}
|
|||
|
return &model.ExchangeForm{
|
|||
|
Uid: uid,
|
|||
|
SrcCoinType: srcCoinType,
|
|||
|
SrcCoinNum: srcCoinNum,
|
|||
|
ExtendTid: getTestExtendTid(),
|
|||
|
Timestamp: time.Now().Unix(),
|
|||
|
TransactionId: tid.(string),
|
|||
|
DestCoinNum: destCoinNum,
|
|||
|
DestCoinType: destCoinType,
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func TestExchange(t *testing.T) {
|
|||
|
once.Do(startHTTP)
|
|||
|
|
|||
|
Convey("exchange normal 先调用get接口 再调用exchange 再调用get接口 比较用户钱包数据", t, func() {
|
|||
|
platforms := []string{"pc", "android", "ios"}
|
|||
|
var num int64 = 1000
|
|||
|
var exchangeNum 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)
|
|||
|
|
|||
|
res = queryExchange(t, getTestExchangeForm(t, uid, "gold", exchangeNum, "silver", exchangeNum, nil), platform)
|
|||
|
So(res.Code, ShouldEqual, 0)
|
|||
|
|
|||
|
afterExchangeWallet := getTestWallet(t, uid, platform)
|
|||
|
|
|||
|
So(getIntCoinForTest(afterExchangeWallet.Gold)-getIntCoinForTest(afterWallet.Gold), ShouldEqual, exchangeNum*-1)
|
|||
|
So(getIntCoinForTest(afterExchangeWallet.Silver)-getIntCoinForTest(afterWallet.Silver), ShouldEqual, exchangeNum)
|
|||
|
}
|
|||
|
})
|
|||
|
}
|