feat: densify sms records and improve uplink matching
This commit is contained in:
@@ -92,6 +92,54 @@ func TestHandleCMPP2DeliverReceiptPostsReceiptEvent(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleCMPP2UplinkPreservesGatewayMessageIDWithoutPretendingItIsASubmitMessage(t *testing.T) {
|
||||
events := make(chan queue.UplinkEvent, 1)
|
||||
api := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Path != "/gateway/events/uplink" {
|
||||
t.Fatalf("unexpected path: %s", r.URL.Path)
|
||||
}
|
||||
var event queue.UplinkEvent
|
||||
if err := json.NewDecoder(r.Body).Decode(&event); err != nil {
|
||||
t.Fatalf("decode uplink event: %v", err)
|
||||
}
|
||||
events <- event
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}))
|
||||
defer api.Close()
|
||||
|
||||
conn := &connection{
|
||||
channelID: "channel-1",
|
||||
apiBaseURL: api.URL,
|
||||
httpClient: api.Client(),
|
||||
tracker: map[uint64]queue.SubmitCommand{},
|
||||
}
|
||||
if err := conn.handleDeliver(deliverPacketFromCMPP2(&cmpp.Cmpp2DeliverReqPkt{
|
||||
SeqId: 8,
|
||||
MsgId: 8412634832294102675,
|
||||
DestId: "10690000",
|
||||
SrcTerminalId: "13800000001",
|
||||
RegisterDelivery: 0,
|
||||
MsgContent: "TD",
|
||||
})); err != nil {
|
||||
t.Fatalf("handle uplink: %v", err)
|
||||
}
|
||||
|
||||
select {
|
||||
case event := <-events:
|
||||
if event.GatewayMessageID != "8412634832294102675" {
|
||||
t.Fatalf("GatewayMessageID = %q", event.GatewayMessageID)
|
||||
}
|
||||
if event.MessageID != "" {
|
||||
t.Fatalf("MessageID = %q, want empty without a correlated submit", event.MessageID)
|
||||
}
|
||||
if event.PhoneNumber != "13800000001" || event.DestID != "10690000" || event.Content != "TD" {
|
||||
t.Fatalf("unexpected uplink event: %+v", event)
|
||||
}
|
||||
case <-time.After(time.Second):
|
||||
t.Fatal("timed out waiting for uplink event")
|
||||
}
|
||||
}
|
||||
|
||||
func TestReceiptStatusTreatsNonDeliveredFinalStatesAsUndelivered(t *testing.T) {
|
||||
for _, stat := range []string{"UNKNOWN", "UNDELIV", "EXPIRED", "DELETED", "REJECTD"} {
|
||||
if got := receiptStatus(stat); got != "undelivered" {
|
||||
|
||||
Reference in New Issue
Block a user