Files
go-sip/internal/store/sip_source_generation_test.go
T

40 lines
1.4 KiB
Go

package store
import (
"bytes"
"path/filepath"
"testing"
)
func TestAppliedSIPCleanupPreservesNewerUnloadedNotification(t *testing.T) {
s, err := Open(filepath.Join(t.TempDir(), "state.db"))
if err != nil {
t.Fatal(err)
}
defer s.Close()
first := []byte(`{"event_id":"first","event_type":"sip.config","dispatcher_id":"` + currentDispatcherID + `","payload":{"trunk_id":"1","change_type":"enabled","revision":1}}`)
if err := s.NoteSIPChange(currentDispatcherID, 1); err != nil {
t.Fatal(err)
}
if err := s.RememberSIPSource(currentDispatcherID, first); err != nil {
t.Fatal(err)
}
if _, err := s.db.Exec(`UPDATE dispatcher_state SET applied_sip_revision=1,pending_sip_revision=0 WHERE dispatcher_id=?`, currentDispatcherID); err != nil {
t.Fatal(err)
}
second := []byte(`{"event_id":"second","event_type":"sip.config","dispatcher_id":"` + currentDispatcherID + `","payload":{"trunk_id":"1","change_type":"enabled","revision":2}}`)
if err := s.NoteSIPChange(currentDispatcherID, 2); err != nil {
t.Fatal(err)
}
if err := s.RememberSIPSource(currentDispatcherID, second); err != nil {
t.Fatal(err)
}
if err := s.CompleteAppliedSIPSources(currentDispatcherID); err != nil {
t.Fatal(err)
}
pending, err := s.PendingSIPSources()
if err != nil || len(pending) != 1 || !bytes.Equal(pending[0].Original, second) {
t.Fatalf("new pending context lost or applied context retained: %+v %v", pending, err)
}
}