.examples
.github
alerting
client
client.go
client_test.go
config.go
config_test.go
config
controller
core
docs
jsonpath
metrics
pattern
security
storage
test
util
vendor
watchdog
web
.dockerignore
.gitattributes
.gitignore
Dockerfile
LICENSE
Makefile
README.md
config.yaml
go.mod
go.sum
main.go
82 lines
2.4 KiB
Go
82 lines
2.4 KiB
Go
package client
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestConfig_getHTTPClient(t *testing.T) {
|
|
insecureConfig := &Config{Insecure: true}
|
|
insecureConfig.ValidateAndSetDefaults()
|
|
insecureClient := insecureConfig.getHTTPClient()
|
|
if !(insecureClient.Transport).(*http.Transport).TLSClientConfig.InsecureSkipVerify {
|
|
t.Error("expected Config.Insecure set to true to cause the HTTP client to skip certificate verification")
|
|
}
|
|
if insecureClient.Timeout != defaultHTTPTimeout {
|
|
t.Error("expected Config.Timeout to default the HTTP client to a timeout of 10s")
|
|
}
|
|
request, _ := http.NewRequest("GET", "", nil)
|
|
if err := insecureClient.CheckRedirect(request, nil); err != nil {
|
|
t.Error("expected Config.IgnoreRedirect set to false to cause the HTTP client's CheckRedirect to return nil")
|
|
}
|
|
|
|
secureConfig := &Config{IgnoreRedirect: true, Timeout: 5 * time.Second}
|
|
secureConfig.ValidateAndSetDefaults()
|
|
secureClient := secureConfig.getHTTPClient()
|
|
if (secureClient.Transport).(*http.Transport).TLSClientConfig.InsecureSkipVerify {
|
|
t.Error("expected Config.Insecure set to false to cause the HTTP client to not skip certificate verification")
|
|
}
|
|
if secureClient.Timeout != 5*time.Second {
|
|
t.Error("expected Config.Timeout to cause the HTTP client to have a timeout of 5s")
|
|
}
|
|
request, _ = http.NewRequest("GET", "", nil)
|
|
if err := secureClient.CheckRedirect(request, nil); err != http.ErrUseLastResponse {
|
|
t.Error("expected Config.IgnoreRedirect set to true to cause the HTTP client's CheckRedirect to return http.ErrUseLastResponse")
|
|
}
|
|
}
|
|
|
|
func TestConfig_ValidateAndSetDefaults_withCustomDNSResolver(t *testing.T) {
|
|
type args struct {
|
|
dnsResolver string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "with-valid-resolver",
|
|
args: args{
|
|
dnsResolver: "tcp://1.1.1.1:53",
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "with-invalid-resolver-port",
|
|
args: args{
|
|
dnsResolver: "tcp://127.0.0.1:99999",
|
|
},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "with-invalid-resolver-format",
|
|
args: args{
|
|
dnsResolver: "foobar",
|
|
},
|
|
wantErr: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
cfg := &Config{
|
|
DNSResolver: tt.args.dnsResolver,
|
|
}
|
|
err := cfg.ValidateAndSetDefaults()
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("ValidateAndSetDefaults() error=%v, wantErr=%v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|