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") } }