chore: 并入 iotlcm-onelink-mock 历史到 onelink-mock/(原提交 f398595)
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestChanQueryEndpoints(t *testing.T) {
|
||||
service, err := NewService(t.TempDir()+"/onelink_mock.db")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := service.store.GenerateCards(2); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
cards := service.store.Snapshot().Cards
|
||||
body, _ := json.Marshal(map[string]any{
|
||||
"simKeys": []map[string]string{{"chanKey": "channel_yd_mock", "iccid": cards[0].ICCID, "imsi": cards[0].IMSI, "msisdn": cards[0].MSISDN}},
|
||||
"reqData": map[string]string{"queryDate": "20260101"},
|
||||
})
|
||||
paths := []string{
|
||||
"/sim/query/sim-basic-info",
|
||||
"/sim/query/sim-session",
|
||||
"/sim/query/sim-status",
|
||||
"/sim/query/sim-status-batch",
|
||||
"/sim/query/sim-card-bind-status",
|
||||
"/sim/query/sim-device-status",
|
||||
"/sim/query/sim-region-limit-status",
|
||||
"/sim/query/sim-imei",
|
||||
"/sim/query/sim-datausage",
|
||||
"/sim/query/sim-datausage-monthly",
|
||||
"/sim/query/sim-datausage-monthly-batch",
|
||||
"/sim/query/sim-datausage-daily",
|
||||
"/sim/query/sim-datausage-daily-batch",
|
||||
"/sim/query/sim-apn-info",
|
||||
}
|
||||
for _, path := range paths {
|
||||
t.Run(path, func(t *testing.T) {
|
||||
req := httptest.NewRequest(http.MethodPost, path, bytes.NewReader(body))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
res := httptest.NewRecorder()
|
||||
service.Router().ServeHTTP(res, req)
|
||||
if res.Code != http.StatusOK {
|
||||
t.Fatalf("status = %d body=%s", res.Code, res.Body.String())
|
||||
}
|
||||
var responses []struct {
|
||||
Code int `json:"code"`
|
||||
SimKey chanSimKey `json:"simKey"`
|
||||
}
|
||||
if err := json.Unmarshal(res.Body.Bytes(), &responses); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(responses) != 1 || responses[0].Code != chanSuccessCode || responses[0].SimKey.ICCID != cards[0].ICCID {
|
||||
t.Fatalf("responses = %#v", responses)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestChanBatchAndQueryStringCompatibility(t *testing.T) {
|
||||
service, err := NewService(t.TempDir()+"/onelink_mock.db")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := service.store.GenerateCards(2); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
cards := service.store.Snapshot().Cards
|
||||
req := httptest.NewRequest(http.MethodGet, "/sim/query/sim-status-batch?iccids="+cards[0].ICCID+"_"+cards[1].ICCID, nil)
|
||||
res := httptest.NewRecorder()
|
||||
service.Router().ServeHTTP(res, req)
|
||||
if res.Code != http.StatusOK {
|
||||
t.Fatalf("status = %d body=%s", res.Code, res.Body.String())
|
||||
}
|
||||
var responses []chanResponse[chanCardStatus]
|
||||
if err := json.Unmarshal(res.Body.Bytes(), &responses); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(responses) != 2 || responses[0].Code != chanSuccessCode || responses[1].Code != chanSuccessCode {
|
||||
t.Fatalf("responses = %#v", responses)
|
||||
}
|
||||
}
|
||||
|
||||
func TestChanChangesPersistAndCreateOrders(t *testing.T) {
|
||||
service, err := NewService(t.TempDir()+"/onelink_mock.db")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := service.store.GenerateCards(1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
card := service.store.Snapshot().Cards[0]
|
||||
statusBody := []byte(`{"simKeys":[{"iccid":"` + card.ICCID + `"}],"reqData":{"operType":"0"}}`)
|
||||
res := httptest.NewRecorder()
|
||||
req := httptest.NewRequest(http.MethodPost, "/sim/change/sim-status", bytes.NewReader(statusBody))
|
||||
service.Router().ServeHTTP(res, req)
|
||||
if res.Code != http.StatusOK {
|
||||
t.Fatalf("status change status = %d body=%s", res.Code, res.Body.String())
|
||||
}
|
||||
if got := service.store.Snapshot().Cards[0].CardStatus; got != "4" {
|
||||
t.Fatalf("card status = %s, want 4", got)
|
||||
}
|
||||
apnBody := []byte(`{"simKeys":[{"iccid":"` + card.ICCID + `"}],"reqData":{"apnName":"TEST_APN","operType":"0"}}`)
|
||||
res = httptest.NewRecorder()
|
||||
req = httptest.NewRequest(http.MethodPost, "/sim/change/sim-apn", bytes.NewReader(apnBody))
|
||||
service.Router().ServeHTTP(res, req)
|
||||
if res.Code != http.StatusOK {
|
||||
t.Fatalf("apn change status = %d body=%s", res.Code, res.Body.String())
|
||||
}
|
||||
updated := service.store.Snapshot()
|
||||
if len(updated.Orders) != 2 {
|
||||
t.Fatalf("orders = %d, want 2", len(updated.Orders))
|
||||
}
|
||||
found := false
|
||||
for _, apn := range updated.Cards[0].APNs {
|
||||
if apn.Name == "TEST_APN" && apn.Status == "1" {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
t.Fatalf("updated APNs = %#v", updated.Cards[0].APNs)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user