273 lines
10 KiB
Go
273 lines
10 KiB
Go
package jdapi
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"net/http"
|
|
"net/url"
|
|
"testing"
|
|
|
|
"git.rosy.net.cn/baseapi"
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var (
|
|
jdapi *API
|
|
sugarLogger *zap.SugaredLogger
|
|
)
|
|
|
|
func init() {
|
|
logger, _ := zap.NewDevelopment()
|
|
sugarLogger = logger.Sugar()
|
|
baseapi.Init(sugarLogger)
|
|
|
|
// sandbox
|
|
jdapi = New("c8854ef2-f80a-45ee-aceb-dc8014d646f8", "06692746f7224695ad4788ce340bc854", "d6b42a35a7414a5490d811654d745c84")
|
|
// prod
|
|
// jdapi = New("91633f2a-c5f5-4982-a925-a220d19095c3", "1dba76d40cac446ca500c0391a0b6c9d", "a88d031a1e7b462cb1579f12e97fe7f4")
|
|
}
|
|
|
|
func TestTest(t *testing.T) {
|
|
sugarLogger.Debug(utils.GetCurTimeStr())
|
|
}
|
|
|
|
func TestAccessAPI(t *testing.T) {
|
|
result, err := jdapi.AccessAPI("address/allcities", nil)
|
|
if err != nil {
|
|
t.Fatalf("Error when accessing AccessAPI: %v", err)
|
|
} else {
|
|
code := result["code"].(string)
|
|
if code != "0" {
|
|
t.Fatalf("code is not 0, %v", code)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAccessAPINoPage(t *testing.T) {
|
|
result, err := jdapi.AccessAPINoPage("address/allcities", nil, []string{"yn"}, nil)
|
|
if err != nil {
|
|
t.Fatalf("TestAccessAPINoPage return error:%v", err)
|
|
}
|
|
cityInfo := result.([]interface{})
|
|
if len(cityInfo) == 0 {
|
|
t.Fatal("city info is empty")
|
|
}
|
|
oneCity := cityInfo[0].(map[string]interface{})
|
|
if _, ok := oneCity["areaName"]; !ok {
|
|
t.Fatal("no areaName key")
|
|
}
|
|
if _, ok := oneCity["yn"]; ok {
|
|
t.Fatal("yn field havn't been removed")
|
|
}
|
|
}
|
|
|
|
func TestAccessAPIHavePage(t *testing.T) {
|
|
jdParams := map[string]interface{}{
|
|
"pageNo": 1,
|
|
"pageSize": 20,
|
|
}
|
|
skuInfo, err := jdapi.AccessAPIHavePage("pms/querySkuInfos", jdParams, nil, []string{"skuName", "skuId"}, nil)
|
|
if err != nil {
|
|
t.Fatalf("AccessAPIHavePage return error:%v", err)
|
|
}
|
|
|
|
if len(skuInfo) == 0 {
|
|
t.Fatal("sku info is empty")
|
|
}
|
|
oneSku := skuInfo[0].(map[string]interface{})
|
|
if _, ok := oneSku["skuName"]; !ok {
|
|
t.Fatal("no skuName key")
|
|
}
|
|
if _, ok := oneSku["outSkuId"]; ok {
|
|
t.Fatal("outSkuId key not removed")
|
|
}
|
|
}
|
|
|
|
func TestGenerateURL(t *testing.T) {
|
|
params := make(map[string]interface{})
|
|
params["key"] = "v"
|
|
params["key2"] = "v2"
|
|
|
|
fullURL := utils.GenerateGetURL(prodURL, "address/allcities", params)
|
|
|
|
response, err := http.Get(fullURL)
|
|
if err != nil {
|
|
t.Fatalf("Get return error:%v", err)
|
|
}
|
|
defer response.Body.Close()
|
|
}
|
|
|
|
func TestOrderQuery(t *testing.T) {
|
|
jdParams := map[string]interface{}{
|
|
"orderId": "813344594000041",
|
|
}
|
|
result, err := jdapi.OrderQuery(jdParams)
|
|
if err != nil {
|
|
t.Fatalf("OrderQuery return error:%v", err)
|
|
}
|
|
|
|
if len(result) == 0 {
|
|
t.Fatal("OrderQuery return empty data")
|
|
}
|
|
buyerCityOk := false
|
|
orderInfo, _ := result[0].(map[string]interface{})
|
|
if buyerCity1, ok := orderInfo["buyerCity"]; ok {
|
|
if buyerCity, ok := buyerCity1.(string); ok && buyerCity == "2376" {
|
|
buyerCityOk = true
|
|
}
|
|
}
|
|
|
|
if !buyerCityOk {
|
|
t.Fatal("OrderQuery get data wrong")
|
|
}
|
|
}
|
|
|
|
func TestGetOrderCallbackMsg(t *testing.T) {
|
|
callbackStr := "timestamp=2018-06-27+12%3A43%3A51&sign=84096ADFAB81E224D6231269AD1F6AAB&v=1.0&jd_param_json=%7B%22billId%22%3A%22815338526000221%22%2C%22statusId%22%3A%2232000%22%2C%22timestamp%22%3A%222018-06-27+12%3A42%3A34%22%7D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
|
result, resp := jdapi.GetOrderCallbackMsg([]byte(callbackStr))
|
|
|
|
if resp != nil {
|
|
t.Fatal(resp)
|
|
}
|
|
sugarLogger.Debug(result)
|
|
}
|
|
|
|
func TestGetOrderDeliveryCallbackMsg(t *testing.T) {
|
|
callbackStr := "timestamp=2018-06-27%2B09%253A08%253A41&sign=54D9A8515BB5650DC3B81366E3286570&v=1.0&jd_param_json=%257B%2522createPin%2522%253A%2522JD_21134dac1c251d2%2522%252C%2522deliveryCarrierName%2522%253A%2522%25E8%25BE%25BE%25E8%25BE%25BE%25E4%25B8%2593%25E9%2580%2581%2522%252C%2522deliveryCarrierNo%2522%253A%25229966%2522%252C%2522deliveryStatus%2522%253A%252210%2522%252C%2522deliveryStatusTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522inputTime%2522%253A%25222018-06-27%2B09%253A08%253A41%2522%252C%2522orderId%2522%253A%2522815324888000121%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
|
result, resp := jdapi.GetOrderDeliveryCallbackMsg([]byte(callbackStr))
|
|
|
|
if resp != nil {
|
|
t.Fatal(resp)
|
|
}
|
|
sugarLogger.Debug(result)
|
|
}
|
|
|
|
func TestGetOrderApplyCancelCallbackMsg(t *testing.T) {
|
|
callbackStr := "timestamp=2018-06-27%2B13%253A35%253A29&sign=F1398D658514D8864FFB56F5EF2C4792&v=1.0&jd_param_json=%257B%2522billId%2522%253A%2522815339944000322%2522%252C%2522remark%2522%253A%2522%25E5%2595%2586%25E5%25AE%25B6%25E7%25BC%25BA%25E8%25B4%25A7%2522%252C%2522statusId%2522%253A%252220030%2522%252C%2522timestamp%2522%253A%25222018-06-27%2B13%253A35%253A24%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json"
|
|
result, resp := jdapi.GetOrderApplyCancelCallbackMsg([]byte(callbackStr))
|
|
|
|
if resp != nil {
|
|
t.Fatal(resp)
|
|
}
|
|
sugarLogger.Debug(result)
|
|
}
|
|
|
|
func TestSimulateSendNewOrderMsg(t *testing.T) {
|
|
orderInfo := &CallbackOrderMsg{
|
|
BillID: "813344594000041",
|
|
StatusID: OrderStatusNew,
|
|
Timestamp: utils.GetCurTimeStr(),
|
|
}
|
|
params := make(url.Values)
|
|
params.Set("token", jdapi.token)
|
|
params.Set("app_key", jdapi.appKey)
|
|
params.Set("timestamp", utils.GetCurTimeStr())
|
|
params.Set("v", "1.0")
|
|
params.Set("format", "json")
|
|
params.Set(paramJson, string(utils.MustMarshal(orderInfo)))
|
|
|
|
mapData := utils.URLValues2Map(params)
|
|
mapData["app_secret"] = jdapi.appSecret
|
|
params.Set(signKey, jdapi.signParams(mapData))
|
|
|
|
response, err := http.PostForm("http://callback.test.jxc4.com/djsw/newOrder", params)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
bodyData, _ := ioutil.ReadAll(response.Body)
|
|
sugarLogger.Debug(string(bodyData))
|
|
}
|
|
|
|
/*
|
|
DELETE t1
|
|
FROM jdorder t1
|
|
WHERE t1.jdorderid = 815438712001141;
|
|
*/
|
|
func TestCallbackMsgPlayback(t *testing.T) {
|
|
baseURL := "http://callback.test.jxc4.com:8080/"
|
|
playbackData := [][]string{
|
|
[]string{
|
|
"timestamp=2018-06-28+16%3A33%3A06&sign=B9FF8D5428F1DD1031DEF84AD08AB546&v=1.0&jd_param_json=%7B%22billId%22%3A%22815438712001141%22%2C%22statusId%22%3A%2232000%22%2C%22timestamp%22%3A%222018-06-28+16%3A33%3A03%22%7D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json",
|
|
baseURL + "djsw/newOrder",
|
|
},
|
|
[]string{
|
|
"timestamp=2018-06-28+16%3A40%3A19&sign=10C8ACAC71D954C0607046AC669079ED&v=1.0&jd_param_json=%7B%22billId%22%3A%22815438712001141%22%2C%22statusId%22%3A%222%22%2C%22timestamp%22%3A%222018-06-28+16%3A40%3A19%22%7D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json",
|
|
baseURL + "djsw/pickFinishOrder",
|
|
},
|
|
[]string{
|
|
"timestamp=2018-06-28%2B16%253A40%253A19&sign=E270E90A7F1712331AD210CCB477ED32&v=1.0&jd_param_json=%257B%2522createPin%2522%253A%2522JD_33d45ba55afeb1%2522%252C%2522deliveryCarrierName%2522%253A%2522%25E8%25BE%25BE%25E8%25BE%25BE%25E4%25B8%2593%25E9%2580%2581%2522%252C%2522deliveryCarrierNo%2522%253A%25229966%2522%252C%2522deliveryStatus%2522%253A%252210%2522%252C%2522deliveryStatusTime%2522%253A%25222018-06-28%2B16%253A40%253A19%2522%252C%2522inputTime%2522%253A%25222018-06-28%2B16%253A40%253A19%2522%252C%2522orderId%2522%253A%2522815438712001141%2522%257D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json",
|
|
baseURL + "djsw/pushDeliveryStatus",
|
|
},
|
|
[]string{
|
|
"sign=5d506d2ed7d0f353bd578df64a47c1a2b596278a×tamp=1530176122&delivery_id=423701&status=0&appkey=3c0a05d464c247c19d7ec13accc78605&order_id=815438712001141&mt_peisong_id=1530176122092538",
|
|
baseURL + "mtps/status",
|
|
},
|
|
[]string{
|
|
"sign=037e8ef50ce575c3fcc00b9507a46432c0a64768×tamp=1530176299&delivery_id=423701&status=20&appkey=3c0a05d464c247c19d7ec13accc78605&courier_phone=13281800720&courier_name=%E6%9D%8E%E5%B7%9D&order_id=815438712001141&mt_peisong_id=1530176122092538",
|
|
baseURL + "mtps/status",
|
|
},
|
|
[]string{
|
|
"timestamp=2018-06-28+16%3A58%3A20&sign=1DD702433D915DE19F4AC3DD39287E04&v=1.0&jd_param_json=%7B%22billId%22%3A%22815438712001141%22%2C%22statusId%22%3A%2233040%22%2C%22timestamp%22%3A%222018-06-28+16%3A58%3A20%22%7D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json",
|
|
baseURL + "djsw/deliveryOrder",
|
|
},
|
|
[]string{
|
|
"sign=73aae156870e530541d3da1c372411e9bc589470×tamp=1530176533&delivery_id=423701&status=30&appkey=3c0a05d464c247c19d7ec13accc78605&courier_phone=13281800720&courier_name=%E6%9D%8E%E5%B7%9D&order_id=815438712001141&mt_peisong_id=1530176122092538",
|
|
baseURL + "mtps/status",
|
|
},
|
|
[]string{
|
|
"sign=ffe6c9ac09d21505106631bb92fb983599dde69d×tamp=1530177544&delivery_id=423701&status=50&appkey=3c0a05d464c247c19d7ec13accc78605&courier_phone=13281800720&courier_name=%E6%9D%8E%E5%B7%9D&order_id=815438712001141&mt_peisong_id=1530176122092538",
|
|
baseURL + "mtps/status",
|
|
},
|
|
[]string{
|
|
"timestamp=2018-06-28+17%3A19%3A25&sign=06D8763C5B569485FD250F5C283E8B76&v=1.0&jd_param_json=%7B%22billId%22%3A%22815438712001141%22%2C%22statusId%22%3A%2233060%22%2C%22timestamp%22%3A%222018-06-28+17%3A19%3A04%22%7D&token=91633f2a-c5f5-4982-a925-a220d19095c3&app_key=1dba76d40cac446ca500c0391a0b6c9d&format=json",
|
|
baseURL + "djsw/finishOrder",
|
|
},
|
|
}
|
|
for _, v := range playbackData {
|
|
_, err := utils.SendFakeRequest("POST", v[1], v[0], "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
}
|
|
func TestOrderAcceptOperate(t *testing.T) {
|
|
result, err := jdapi.OrderAcceptOperate("813344594000041", true)
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
sugarLogger.Debug(result)
|
|
}
|
|
|
|
func TestOrderJDZBDelivery(t *testing.T) {
|
|
result, err := jdapi.OrderJDZBDelivery("813344594000041")
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
sugarLogger.Debug(result)
|
|
}
|
|
|
|
func TestModifySellerDelivery(t *testing.T) {
|
|
result, err := jdapi.ModifySellerDelivery("813344594000041")
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
sugarLogger.Debug(result)
|
|
}
|
|
|
|
func TestOrderSerllerDelivery(t *testing.T) {
|
|
result, err := jdapi.OrderSerllerDelivery("813344594000041")
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
sugarLogger.Debug(result)
|
|
}
|
|
|
|
func TestDeliveryEndOrder(t *testing.T) {
|
|
result, err := jdapi.DeliveryEndOrder("813344594000041")
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
sugarLogger.Debug(result)
|
|
}
|