103 lines
3.1 KiB
Go
103 lines
3.1 KiB
Go
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 TestSubmitResultKeepsCommandSubmitID(t *testing.T) {
|
|
cmd := submitCommandForPacketTest("2.0")
|
|
cmd.SubmitID = "submit-attempt-2"
|
|
|
|
result := submitResult(cmd, 42, "9001", "accepted", "", "")
|
|
|
|
if result.SubmitID != cmd.SubmitID {
|
|
t.Fatalf("SubmitID = %q, want %q", result.SubmitID, cmd.SubmitID)
|
|
}
|
|
if result.ChannelID != cmd.ChannelID || result.MessageID != cmd.MessageID {
|
|
t.Fatalf("unexpected result envelope: %+v", result.Envelope)
|
|
}
|
|
}
|
|
|
|
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,
|
|
},
|
|
}
|
|
}
|