53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|