package channel import ( "testing" "time" "gitlab.com/gitlab-org/gitlab/workhorse/internal/api" ) func checkerSeries(values ...*api.ChannelSettings) AuthCheckerFunc { return func() *api.ChannelSettings { if len(values) == 0 { return nil } out := values[0] values = values[1:] return out } } func TestAuthCheckerStopsWhenAuthFails(t *testing.T) { template := &api.ChannelSettings{Url: "ws://example.com"} stopCh := make(chan error) series := checkerSeries(template, template, template) ac := NewAuthChecker(series, template, stopCh) go ac.Loop(1 * time.Millisecond) if err := <-stopCh; err != ErrAuthChanged { t.Fatalf("Expected ErrAuthChanged, got %v", err) } if ac.Count != 3 { t.Fatalf("Expected 3 successful checks, got %v", ac.Count) } } func TestAuthCheckerStopsWhenAuthChanges(t *testing.T) { template := &api.ChannelSettings{Url: "ws://example.com"} changed := template.Clone() changed.Url = "wss://example.com" stopCh := make(chan error) series := checkerSeries(template, changed, template) ac := NewAuthChecker(series, template, stopCh) go ac.Loop(1 * time.Millisecond) if err := <-stopCh; err != ErrAuthChanged { t.Fatalf("Expected ErrAuthChanged, got %v", err) } if ac.Count != 1 { t.Fatalf("Expected 1 successful check, got %v", ac.Count) } }