diff --git a/bouncer_test.go b/bouncer_test.go index fbabbc4..737cb96 100644 --- a/bouncer_test.go +++ b/bouncer_test.go @@ -1,10 +1,15 @@ -package crowdsec_bouncer_traefik_plugin //nolint:revive,stylecheck +package crowdsec_bouncer_traefik_plugin import ( "context" + "crypto/tls" "net/http" "net/http/httptest" + "reflect" "testing" + "text/template" + + ip "github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin/pkg/ip" ) func TestCreation(t *testing.T) { @@ -90,3 +95,340 @@ func TestServeHTTP(t *testing.T) { handler.ServeHTTP(recorder, req) } + +func TestCreateConfig(t *testing.T) { + tests := []struct { + name string + want *Config + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := CreateConfig(); !reflect.DeepEqual(got, tt.want) { + t.Errorf("CreateConfig() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestNew(t *testing.T) { + type args struct { + ctx context.Context + next http.Handler + config *Config + name string + } + tests := []struct { + name string + args args + want http.Handler + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := New(tt.args.ctx, tt.args.next, tt.args.config, tt.args.name) + if (err != nil) != tt.wantErr { + t.Errorf("New() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("New() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestBouncer_ServeHTTP(t *testing.T) { + type fields struct { + next http.Handler + name string + template *template.Template + enabled bool + crowdsecScheme string + crowdsecHost string + crowdsecKey string + crowdsecMode string + updateInterval int64 + defaultDecisionTimeout int64 + customHeader string + clientPoolStrategy *ip.PoolStrategy + serverPoolStrategy *ip.PoolStrategy + client *http.Client + } + type args struct { + rw http.ResponseWriter + req *http.Request + } + tests := []struct { + name string + fields fields + args args + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + bouncer := &Bouncer{ + next: tt.fields.next, + name: tt.fields.name, + template: tt.fields.template, + enabled: tt.fields.enabled, + crowdsecScheme: tt.fields.crowdsecScheme, + crowdsecHost: tt.fields.crowdsecHost, + crowdsecKey: tt.fields.crowdsecKey, + crowdsecMode: tt.fields.crowdsecMode, + updateInterval: tt.fields.updateInterval, + defaultDecisionTimeout: tt.fields.defaultDecisionTimeout, + customHeader: tt.fields.customHeader, + clientPoolStrategy: tt.fields.clientPoolStrategy, + serverPoolStrategy: tt.fields.serverPoolStrategy, + client: tt.fields.client, + } + bouncer.ServeHTTP(tt.args.rw, tt.args.req) + }) + } +} + +func Test_contains(t *testing.T) { + type args struct { + source []string + target string + } + tests := []struct { + name string + args args + want bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := contains(tt.args.source, tt.args.target); got != tt.want { + t.Errorf("contains() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_startTicker(t *testing.T) { + type args struct { + config *Config + work func() + } + tests := []struct { + name string + args args + want chan bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := startTicker(tt.args.config, tt.args.work); !reflect.DeepEqual(got, tt.want) { + t.Errorf("startTicker() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_handleNoStreamCache(t *testing.T) { + type args struct { + bouncer *Bouncer + remoteIP string + } + tests := []struct { + name string + args args + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := handleNoStreamCache(tt.args.bouncer, tt.args.remoteIP); (err != nil) != tt.wantErr { + t.Errorf("handleNoStreamCache() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_handleStreamCache(t *testing.T) { + type args struct { + bouncer *Bouncer + } + tests := []struct { + name string + args args + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + handleStreamCache(tt.args.bouncer) + }) + } +} + +func Test_crowdsecQuery(t *testing.T) { + type args struct { + bouncer *Bouncer + stringURL string + } + tests := []struct { + name string + args args + want []byte + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := crowdsecQuery(tt.args.bouncer, tt.args.stringURL) + if (err != nil) != tt.wantErr { + t.Errorf("crowdsecQuery() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("crowdsecQuery() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_getTLSConfigCrowdsec(t *testing.T) { + type args struct { + config *Config + } + tests := []struct { + name string + args args + want *tls.Config + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := getTLSConfigCrowdsec(tt.args.config) + if (err != nil) != tt.wantErr { + t.Errorf("getTLSConfigCrowdsec() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("getTLSConfigCrowdsec() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_getVariable(t *testing.T) { + type args struct { + config *Config + key string + } + tests := []struct { + name string + args args + want string + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := getVariable(tt.args.config, tt.args.key) + if (err != nil) != tt.wantErr { + t.Errorf("getVariable() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("getVariable() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_validateParams(t *testing.T) { + type args struct { + config *Config + } + tests := []struct { + name string + args args + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := validateParams(tt.args.config); (err != nil) != tt.wantErr { + t.Errorf("validateParams() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_validateParamsTLS(t *testing.T) { + type args struct { + config *Config + } + tests := []struct { + name string + args args + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := validateParamsTLS(tt.args.config); (err != nil) != tt.wantErr { + t.Errorf("validateParamsTLS() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_validateParamsIPs(t *testing.T) { + type args struct { + listIP []string + key string + } + tests := []struct { + name string + args args + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := validateParamsIPs(tt.args.listIP, tt.args.key); (err != nil) != tt.wantErr { + t.Errorf("validateParamsIPs() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_validateParamsRequired(t *testing.T) { + type args struct { + config *Config + } + tests := []struct { + name string + args args + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := validateParamsRequired(tt.args.config); (err != nil) != tt.wantErr { + t.Errorf("validateParamsRequired() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +}