Files

45 lines
1.4 KiB
Go

package ari
import "testing"
func TestParseStasisStart(t *testing.T) {
event, err := ParseEvent([]byte(`{"type":"StasisStart","args":["test"],"channel":{"id":"c1","caller":{"number":"+77771234567"}}}`))
if err != nil {
t.Fatal(err)
}
start, ok := event.(StasisStartEvent)
if !ok {
t.Fatalf("type %T", event)
}
if start.Channel.ID != "c1" || start.Args[0] != "test" {
t.Fatalf("bad parse: %+v", start)
}
}
func TestParseStasisEnd(t *testing.T) {
event, err := ParseEvent([]byte(`{"type":"StasisEnd","channel":{"id":"c1"}}`))
if err != nil {
t.Fatal(err)
}
if event.ChannelID() != "c1" {
t.Fatalf("channel=%s", event.ChannelID())
}
}
func TestParseHangupDestroyedUnknownInvalid(t *testing.T) {
if event, err := ParseEvent([]byte(`{"type":"ChannelHangupRequest","channel":{"id":"c1"},"cause":16}`)); err != nil || event.ChannelID() != "c1" {
t.Fatalf("hangup %v %v", event, err)
}
if event, err := ParseEvent([]byte(`{"type":"ChannelDestroyed","channel":{"id":"c2"},"cause_txt":"Normal"}`)); err != nil || event.ChannelID() != "c2" {
t.Fatalf("destroyed %v %v", event, err)
}
if event, err := ParseEvent([]byte(`{"type":"SomethingNew","value":1}`)); err != nil {
t.Fatal(err)
} else if _, ok := event.(GenericEvent); !ok {
t.Fatalf("want generic, got %T", event)
}
if _, err := ParseEvent([]byte(`{bad json`)); err == nil {
t.Fatal("want invalid json error")
}
}