mirror of
https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin.git
synced 2026-07-21 03:28:59 +02:00
✨ add configuration pkg and tests
This commit is contained in:
-196
@@ -12,12 +12,6 @@ import (
|
||||
ip "github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin/pkg/ip"
|
||||
)
|
||||
|
||||
func getMinimalConfig() *Config {
|
||||
cfg := CreateConfig()
|
||||
cfg.CrowdsecLapiKey = "test"
|
||||
return cfg
|
||||
}
|
||||
|
||||
func TestServeHTTP(t *testing.T) {
|
||||
cfg := CreateConfig()
|
||||
cfg.CrowdsecLapiKey = "test"
|
||||
@@ -119,27 +113,6 @@ func TestBouncer_ServeHTTP(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
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_handleNoStreamCache(t *testing.T) {
|
||||
type args struct {
|
||||
bouncer *Bouncer
|
||||
@@ -230,172 +203,3 @@ func Test_getTLSConfigCrowdsec(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_getVariable(t *testing.T) {
|
||||
cfg1 := CreateConfig()
|
||||
cfg1.CrowdsecLapiKey = "test"
|
||||
cfg2 := CreateConfig()
|
||||
cfg2.CrowdsecLapiKeyFile = "./tests/.keytest"
|
||||
cfg3 := CreateConfig()
|
||||
cfg3.CrowdsecLapiKeyFile = "./tests/.bad"
|
||||
type args struct {
|
||||
config *Config
|
||||
key string
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want string
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "valid string",
|
||||
args: args{config: cfg1, key: "CrowdsecLapiKey"},
|
||||
want: "test",
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "valid file",
|
||||
args: args{config: cfg2, key: "CrowdsecLapiKey"},
|
||||
want: "test",
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "invalid file",
|
||||
args: args{config: cfg3, key: "CrowdsecLapiKey"},
|
||||
want: "",
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
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) {
|
||||
cfg2 := getMinimalConfig()
|
||||
cfg2.CrowdsecLapiScheme = "bad"
|
||||
cfg3 := getMinimalConfig()
|
||||
cfg3.CrowdsecMode = "bad"
|
||||
cfg4 := getMinimalConfig()
|
||||
cfg4.UpdateIntervalSeconds = 0
|
||||
cfg5 := getMinimalConfig()
|
||||
cfg5.ClientTrustedIPs = []string{0: "bad"}
|
||||
cfg6 := getMinimalConfig()
|
||||
cfg6.CrowdsecLapiScheme = "https"
|
||||
cfg6.CrowdsecLapiTLSInsecureVerify = true
|
||||
cfg8 := getMinimalConfig()
|
||||
cfg8.CrowdsecLapiScheme = "https"
|
||||
type args struct {
|
||||
config *Config
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
{name: "good minimal config", args: args{config: getMinimalConfig()}, wantErr: false},
|
||||
{name: "bad crowdsec lapi key", args: args{config: CreateConfig()}, wantErr: true},
|
||||
{name: "bad crowdsec scheme", args: args{config: cfg2}, wantErr: true},
|
||||
{name: "bad crowdsec mode", args: args{config: cfg3}, wantErr: true},
|
||||
{name: "bad update interval", args: args{config: cfg4}, wantErr: true},
|
||||
{name: "bad clients ips", args: args{config: cfg5}, wantErr: true},
|
||||
// HTTPS enabled
|
||||
{name: "good https config with insecure verify", args: args{config: cfg6}, wantErr: false},
|
||||
{name: "no cert authority", args: args{config: cfg8}, wantErr: true},
|
||||
}
|
||||
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
|
||||
}{
|
||||
{name: "not an ip", args: args{listIP: []string{0: "bad"}}, wantErr: true},
|
||||
{name: "weird ip", args: args{listIP: []string{0: "0.0.0.0/89"}}, wantErr: true},
|
||||
{name: "localhost ?", args: args{listIP: []string{0: "localhost"}}, wantErr: true},
|
||||
{name: "weird ip 2", args: args{listIP: []string{0: "0.0.0.256/12"}}, wantErr: true},
|
||||
{name: "valid ip", args: args{listIP: []string{0: "0.0.0.0/12"}}, wantErr: false},
|
||||
{name: "valid ip list", args: args{listIP: []string{0: "0.0.0.0/0", 1: "1.1.1.1/1"}}, wantErr: false},
|
||||
}
|
||||
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) {
|
||||
cfg2 := getMinimalConfig()
|
||||
cfg2.CrowdsecLapiScheme = "bad"
|
||||
cfg3 := getMinimalConfig()
|
||||
cfg3.CrowdsecMode = "bad"
|
||||
cfg4 := getMinimalConfig()
|
||||
cfg4.UpdateIntervalSeconds = 0
|
||||
cfg5 := getMinimalConfig()
|
||||
cfg5.DefaultDecisionSeconds = 0
|
||||
type args struct {
|
||||
config *Config
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
wantErr bool
|
||||
}{
|
||||
{name: "good", args: args{config: getMinimalConfig()}, wantErr: false},
|
||||
{name: "bad crowdsec scheme", args: args{config: cfg2}, wantErr: true},
|
||||
{name: "bad crowdsec mode", args: args{config: cfg3}, wantErr: true},
|
||||
{name: "bad update interval seconds", args: args{config: cfg4}, wantErr: true},
|
||||
{name: "bad default decision seconds", args: args{config: cfg5}, wantErr: true},
|
||||
}
|
||||
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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user