fix: submit cmpp2 packets for cmpp2 channels

This commit is contained in:
hectorzhao
2026-07-09 16:01:10 +08:00
parent 64bb3fb430
commit 20757203d9
3 changed files with 190 additions and 33 deletions
@@ -0,0 +1,88 @@
package upstream
import (
"testing"
"time"
"cmpp-platform/gateway/internal/queue"
cmpp "github.com/bigwhite/gocmpp"
)
func TestSubmitRequestPacketUsesCMPP2PacketForCMPP20Channel(t *testing.T) {
conn := &connection{config: queue.UpstreamConfig{CMPPVersion: "2.0", Account: "ljcs02"}}
cmd := submitCommandForPacketTest("2.0")
parts, err := splitSubmitContent(cmd.CMPP.MsgFmt, cmd.Content)
if err != nil {
t.Fatalf("splitSubmitContent returned error: %v", err)
}
packet, ok := conn.submitRequestPacket(cmd, parts[0]).(*cmpp.Cmpp2SubmitReqPkt)
if !ok {
t.Fatalf("expected Cmpp2SubmitReqPkt, got %T", packet)
}
if packet.MsgFmt != 8 {
t.Fatalf("MsgFmt = %d, want 8", packet.MsgFmt)
}
if packet.MsgSrc != "ljcs02" {
t.Fatalf("MsgSrc = %q, want ljcs02", packet.MsgSrc)
}
if packet.SrcId != "1069999999" {
t.Fatalf("SrcId = %q, want 1069999999", packet.SrcId)
}
if packet.MsgLength != uint8(len(parts[0].MsgContent)) {
t.Fatalf("MsgLength = %d, want %d", packet.MsgLength, len(parts[0].MsgContent))
}
if len(packet.MsgContent)%2 != 0 {
t.Fatalf("CMPP2 UCS2 payload length must be even, got %d", len(packet.MsgContent))
}
if packet.DestTerminalId[0] != cmd.PhoneNumber {
t.Fatalf("DestTerminalId = %q, want %q", packet.DestTerminalId[0], cmd.PhoneNumber)
}
}
func TestSubmitRequestPacketUsesCMPP3PacketForCMPP30Channel(t *testing.T) {
conn := &connection{config: queue.UpstreamConfig{CMPPVersion: "3.0", Account: "ljcs02"}}
cmd := submitCommandForPacketTest("3.0")
parts, err := splitSubmitContent(cmd.CMPP.MsgFmt, cmd.Content)
if err != nil {
t.Fatalf("splitSubmitContent returned error: %v", err)
}
packet, ok := conn.submitRequestPacket(cmd, parts[0]).(*cmpp.Cmpp3SubmitReqPkt)
if !ok {
t.Fatalf("expected Cmpp3SubmitReqPkt, got %T", packet)
}
if packet.MsgFmt != 8 {
t.Fatalf("MsgFmt = %d, want 8", packet.MsgFmt)
}
if packet.MsgLength != uint8(len(parts[0].MsgContent)) {
t.Fatalf("MsgLength = %d, want %d", packet.MsgLength, len(parts[0].MsgContent))
}
}
func submitCommandForPacketTest(cmppVersion string) queue.SubmitCommand {
return queue.SubmitCommand{
Envelope: queue.Envelope{
SchemaVersion: queue.SchemaVersion,
MessageType: queue.MessageTypeSubmitCommand,
TraceID: "trace-1",
MessageID: "message-1",
ChannelID: "channel-1",
CreatedAt: time.Now(),
},
SubmitID: "submit-1",
PhoneNumber: "18821203795",
Content: "【安徽航天信息】您的验证码是070926,有效时间30分钟。",
CMPP: queue.CMPP{
ServiceID: "SMS",
SrcID: "1069999999",
RegisteredDelivery: 1,
MsgFmt: 8,
},
Upstream: queue.UpstreamConfig{
Account: "ljcs02",
CMPPVersion: cmppVersion,
},
}
}