github.com/apprenda/kismatic@v1.12.0/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  }