package upstreamimpl import ( "context" "fmt" "net/http" "net/http/httptest" "testing" "git.5iot.com/iotlcm-public/iotlcm-upstream-chan/internal/logic/upstreamimpl/dx" "git.5iot.com/iotlcm-public/iotlcm-upstream-chan/internal/model" ) func TestDXNetworkBlockStatus(t *testing.T) { tests := []struct { name string types []model.SimNetBlockType want string }{ {name: "未断网", types: []model.SimNetBlockType{{BlockType: "0"}}, want: "0"}, {name: "已断网", types: []model.SimNetBlockType{{BlockType: "1", BlockTypeName: "达量断网"}}, want: "1"}, {name: "已断网", want: "1"}, {name: ""}, {name: "未知"}, {name: "未断网", types: []model.SimNetBlockType{{BlockType: "1"}}}, {name: "已断网", types: []model.SimNetBlockType{{BlockType: "0"}}}, } for index, test := range tests { got := dxNetworkBlockStatus(test.name, test.types) if test.want == "" { if got != nil { t.Fatalf("case %d: status = %q", index, *got) } } else if got == nil || *got != test.want { t.Fatalf("case %d: status = %v, want %s", index, got, test.want) } } } func TestDXCardStatusIncludesNetworkBlock(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { if request.URL.Path != "/openapi/v1/prodinst/queryCardMainStatus" || request.URL.Query().Get("access_number") != "1440000000001" { t.Errorf("request = %s", request.URL) } fmt.Fprint(writer, `{"result":"0","resultMsg":"处理成功","productInfo":[{"productMainStatusCd":"4"}],"netBlockStatusName":"已断网","netBlockTypeList":[{"blockType":"1","blockTypeName":"达量断网"}]}`) })) defer server.Close() sim := &sSimDX{client: dx.NewClient(dx.Config{BaseURL: server.URL})} output, err := sim.QuerySimCardStatus(context.Background(), &model.SimCardStatusInput{SimKeys: []*model.SimKey{{MSISDN: "1440000000001"}}}) if err != nil || len(output) != 1 { t.Fatalf("output = %v, err = %v", output, err) } item := output[0] if item.Code != 0 || item.ResData.CardStatus != 2 || item.ResData.NetBlockStatus == nil || *item.ResData.NetBlockStatus != "1" || len(item.ResData.NetBlockTypes) != 1 || item.ResData.NetBlockTypes[0].BlockTypeName != "达量断网" { t.Fatalf("item = %+v", item) } } func TestDXSessionAccessMode(t *testing.T) { if got := dxSessionAccessMode("1", ""); got != "4G" { t.Fatalf("mode = %s", got) } if got := dxSessionAccessMode("2", ""); got != "5G" { t.Fatalf("mode = %s", got) } if got := dxSessionAccessMode("", "NB-IOT"); got != "NB-IOT" { t.Fatalf("mode = %s", got) } }