sync: 对齐小程序 v1.0.2 生产代码并脱敏
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.5iot.com/iotlcm-public/iotlcm-app/internal/model/entity"
|
||||
|
||||
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gcfg"
|
||||
)
|
||||
|
||||
func TestDiagnosisPrefersPlatformChannelWithoutLegacyDB(t *testing.T) {
|
||||
if os.Getenv("IOTLCM_TEST_LOCAL_READONLY") != "1" {
|
||||
t.Skip("set IOTLCM_TEST_LOCAL_READONLY=1 for the local read-only DB integration test")
|
||||
}
|
||||
ctx := context.Background()
|
||||
link := g.Cfg().MustGet(ctx, "database.default.link").String()
|
||||
adapter, err := gcfg.NewAdapterContent(fmt.Sprintf(`{"database":{"default":{"link":%q},"legacyCard":{"link":""}}}`, link))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
previous := g.Cfg().GetAdapter()
|
||||
g.Cfg().SetAdapter(adapter)
|
||||
t.Cleanup(func() { g.Cfg().SetAdapter(previous) })
|
||||
|
||||
row := &appCardQueryRow{TSimCardInfo: entity.TSimCardInfo{Id: 1, TenantId: "000000", Iccid: "898608771525C0625498", ChanKey: "129"}}
|
||||
if err = NewAppDiagnosis().resolveDiagnosisCardChannel(ctx, NewAppCard(), row, row.Iccid, "查询诊断卡片"); err != nil {
|
||||
t.Fatalf("platform channel should not need the legacy DB: %v", err)
|
||||
}
|
||||
if row.ChanKey != "129" || row.TempKey == "" {
|
||||
t.Fatalf("unexpected platform channel: key=%q template=%q", row.ChanKey, row.TempKey)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLegacyDiagnosisCardRejectsMissingReadOnlyDatabase(t *testing.T) {
|
||||
adapter, err := gcfg.NewAdapterContent(`{"database":{"legacyCard":{"link":""}}}`)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
previous := g.Cfg().GetAdapter()
|
||||
g.Cfg().SetAdapter(adapter)
|
||||
t.Cleanup(func() { g.Cfg().SetAdapter(previous) })
|
||||
card, err := queryLegacyDiagnosisCard(context.Background(), "89860401788250435125")
|
||||
if card != nil || err == nil || !strings.Contains(err.Error(), "旧平台只读数据库未配置") {
|
||||
t.Fatalf("missing read-only config: card=%+v err=%v", card, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLifecycleChannelAvailability(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
info *appCardChannelInfo
|
||||
want bool
|
||||
}{
|
||||
{name: "enabled channel", info: &appCardChannelInfo{ChanKey: "129", ChanStatus: 0}, want: true},
|
||||
{name: "disabled channel", info: &appCardChannelInfo{ChanKey: "129", ChanStatus: 1}},
|
||||
{name: "missing channel key", info: &appCardChannelInfo{ChanStatus: 0}},
|
||||
{name: "missing channel"},
|
||||
}
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
if got := appCardChannelAvailable(test.info); got != test.want {
|
||||
t.Fatalf("appCardChannelAvailable() = %t, want %t", got, test.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDiagnosisRangeAssociationWithoutLegacyDatabase(t *testing.T) {
|
||||
if os.Getenv("IOTLCM_TEST_LOCAL_READONLY") != "1" {
|
||||
t.Skip("set IOTLCM_TEST_LOCAL_READONLY=1 for the local read-only DB integration test")
|
||||
}
|
||||
ctx := context.Background()
|
||||
const iccid = "898608141623D0229706"
|
||||
cardLogic := NewAppCard()
|
||||
row, err := NewAppDiagnosis().resolveAssocOnlyDiagnosisCard(ctx, cardLogic, "000000", iccid, "查询诊断卡片")
|
||||
if err != nil || row == nil {
|
||||
t.Fatalf("range association should work without legacy database: row=%+v err=%v", row, err)
|
||||
}
|
||||
if row.ChanKey != "28" || row.TempKey != "sim_yd_v5" || row.Id != 0 {
|
||||
t.Fatalf("unexpected range association: %+v", row)
|
||||
}
|
||||
if err = NewAppDiagnosis().resolveDiagnosisCardChannel(ctx, cardLogic, row, iccid, "查询诊断卡片"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLegacyDiagnosisCardReadOnlyIntegration(t *testing.T) {
|
||||
if os.Getenv("IOTLCM_TEST_LEGACY_READONLY") != "1" {
|
||||
t.Skip("set IOTLCM_TEST_LEGACY_READONLY=1 for the read-only legacy DB integration test")
|
||||
}
|
||||
for _, test := range []struct {
|
||||
iccid string
|
||||
chanKey string
|
||||
}{
|
||||
{iccid: "898608771525C0625498", chanKey: "129"},
|
||||
{iccid: "898604F4152391115474", chanKey: "112"},
|
||||
{iccid: "8986112223600594371", chanKey: "71"},
|
||||
} {
|
||||
t.Run(test.iccid, func(t *testing.T) {
|
||||
card, err := queryLegacyDiagnosisCard(context.Background(), test.iccid)
|
||||
if err != nil {
|
||||
t.Fatalf("read-only legacy card lookup: %v", err)
|
||||
}
|
||||
if card == nil || card.ICCID != test.iccid || card.ChannelKey != test.chanKey {
|
||||
t.Fatalf("unexpected legacy channel mapping: card=%+v, want channel %q", card, test.chanKey)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user