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) // jdapi = New("91633f2a-c5f5-4982-a925-a220d19095c3", "1dba76d40cac446ca500c0391a0b6c9d", "a88d031a1e7b462cb1579f12e97fe7f4") // prod jdapi = New("c8854ef2-f80a-45ee-aceb-dc8014d646f8", "06692746f7224695ad4788ce340bc854", "d6b42a35a7414a5490d811654d745c84") //test } 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)) }