diff options
-rw-r--r-- | app_test.go | 7 | ||||
-rw-r--r-- | internal/config/multi_string_flag.go | 4 | ||||
-rw-r--r-- | internal/config/validate.go | 15 |
3 files changed, 26 insertions, 0 deletions
diff --git a/app_test.go b/app_test.go index 48a6013b..669d041e 100644 --- a/app_test.go +++ b/app_test.go @@ -6,6 +6,7 @@ import ( "io" "net/http" "net/http/httptest" + "os" "testing" "github.com/stretchr/testify/require" @@ -84,6 +85,12 @@ func TestHealthCheckMiddleware(t *testing.T) { }, } + // required by LoadConfig + require.NoError(t, os.Setenv("LISTEN_HTTP", ":0")) + t.Cleanup(func() { + require.NoError(t, os.Unsetenv("LISTEN_HTTP")) + }) + cfg, err := config.LoadConfig() require.NoError(t, err) cfg.General.StatusPath = "/-/healthcheck" diff --git a/internal/config/multi_string_flag.go b/internal/config/multi_string_flag.go index fc63299b..0d90b572 100644 --- a/internal/config/multi_string_flag.go +++ b/internal/config/multi_string_flag.go @@ -49,3 +49,7 @@ func (s *MultiStringFlag) sep() string { return s.separator } + +func (s *MultiStringFlag) Len() int { + return len(s.value) +} diff --git a/internal/config/validate.go b/internal/config/validate.go index f73aabff..87f932c0 100644 --- a/internal/config/validate.go +++ b/internal/config/validate.go @@ -10,6 +10,10 @@ import ( ) func validateConfig(config *Config) error { + if err := validateListeners(config); err != nil { + return err + } + if err := validateAuthConfig(config); err != nil { return err } @@ -21,6 +25,17 @@ func validateConfig(config *Config) error { return tls.ValidateTLSVersions(*tlsMinVersion, *tlsMaxVersion) } +func validateListeners(config *Config) error { + if config.ListenHTTPStrings.Len() == 0 && + config.ListenHTTPSStrings.Len() == 0 && + config.ListenHTTPSProxyv2Strings.Len() == 0 && + config.ListenProxyStrings.Len() == 0 { + return errors.New("no listener defined, please specify at least one --listen-* flag") + } + + return nil +} + func validateAuthConfig(config *Config) error { if config.Authentication.Secret == "" && config.Authentication.ClientID == "" && config.Authentication.ClientSecret == "" && config.Authentication.RedirectURI == "" { |