github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/pkg/ansible/event_stream_test.go (about) 1 package ansible 2 3 import ( 4 "bytes" 5 "testing" 6 ) 7 8 func TestEventStreamSingleEvent(t *testing.T) { 9 in := bytes.NewBufferString(`{"eventType":"PLAY_START", "eventData": {"name":"somePlay"}}`) 10 es := EventStream(in) 11 12 gotEvent := false 13 for e := range es { 14 switch event := e.(type) { 15 default: 16 gotEvent = true 17 t.Error("Invalid event type received") 18 case *PlayStartEvent: 19 gotEvent = true 20 if event.Name != "somePlay" { 21 t.Errorf("Expected play name %q, but got %q", "somePlay", event.Name) 22 } 23 } 24 } 25 if !gotEvent { 26 t.Errorf("Did not get the event") 27 } 28 29 } 30 31 func TestEventStreamMultipleEvents(t *testing.T) { 32 in := bytes.NewBufferString(`{"eventType":"PLAY_START", "eventData": {"name":"somePlay"}} 33 {"eventType":"PLAY_START", "eventData": {"name":"somePlay"}} 34 {"eventType":"PLAY_START", "eventData": {"name":"somePlay"}} 35 `) 36 37 es := EventStream(in) 38 39 i := 0 40 for e := range es { 41 switch e.(type) { 42 default: 43 t.Error("invalid event type received") 44 case *PlayStartEvent: 45 i++ 46 } 47 } 48 49 if i != 3 { 50 t.Errorf("invalid number of events received. expected 3, got %d", i) 51 } 52 } 53 54 func TestEventStreamNoEvents(t *testing.T) { 55 es := EventStream(bytes.NewBufferString("")) 56 for e := range es { 57 t.Errorf("got an unexpected event: %v", e) 58 } 59 } 60 61 func TestEventStreamBadEventIsIgnored(t *testing.T) { 62 in := bytes.NewBufferString(`{"eventType":"PLAY_START", "eventData": {"name":"somePlay"}} 63 {"eventType":"BAD_EVENT", "eventData": {"name":"somePlay"}} 64 someBadStuffHere... 65 {"eventType":"PLAY_START", "eventData": {"name":"somePlay"}} 66 `) 67 es := EventStream(in) 68 expectedGoodEvents := 2 69 gotEvents := 0 70 for _ = range es { 71 gotEvents++ 72 } 73 if gotEvents != expectedGoodEvents { 74 t.Errorf("got %d events, but expected %d", gotEvents, expectedGoodEvents) 75 } 76 }