From 228862fefaa645026caa483ffe9993bf8c00b22e Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sat, 1 Jun 2019 18:18:09 -0700 Subject: Refactor config package - Parse configuration only once during startup time - Store configuration values in a global variable --- config/config_test.go | 618 +++++++++++++++++++++++++++++++------------------- 1 file changed, 382 insertions(+), 236 deletions(-) (limited to 'config/config_test.go') diff --git a/config/config_test.go b/config/config_test.go index dc6112e..0e691fc 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -1,4 +1,4 @@ -// Copyright 2018 Frédéric Guillot. All rights reserved. +// Copyright 2019 Frédéric Guillot. All rights reserved. // Use of this source code is governed by the Apache 2.0 // license that can be found in the LICENSE file. @@ -9,198 +9,125 @@ import ( "testing" ) -func TestGetBooleanValueWithUnsetVariable(t *testing.T) { - os.Clearenv() - if getBooleanValue("MY_TEST_VARIABLE") { - t.Errorf(`Unset variables should returns false`) - } -} - -func TestGetBooleanValue(t *testing.T) { - scenarios := map[string]bool{ - "": false, - "1": true, - "Yes": true, - "yes": true, - "True": true, - "true": true, - "on": true, - "false": false, - "off": false, - "invalid": false, - } - - for input, expected := range scenarios { - os.Clearenv() - os.Setenv("MY_TEST_VARIABLE", input) - result := getBooleanValue("MY_TEST_VARIABLE") - if result != expected { - t.Errorf(`Unexpected result for %q, got %v instead of %v`, input, result, expected) - } - } -} - -func TestGetStringValueWithUnsetVariable(t *testing.T) { - os.Clearenv() - if getStringValue("MY_TEST_VARIABLE", "defaultValue") != "defaultValue" { - t.Errorf(`Unset variables should returns the default value`) - } -} - -func TestGetStringValue(t *testing.T) { +func TestDebugModeOn(t *testing.T) { os.Clearenv() - os.Setenv("MY_TEST_VARIABLE", "test") - if getStringValue("MY_TEST_VARIABLE", "defaultValue") != "test" { - t.Errorf(`Defined variables should returns the specified value`) - } -} + os.Setenv("DEBUG", "1") -func TestGetIntValueWithUnsetVariable(t *testing.T) { - os.Clearenv() - if getIntValue("MY_TEST_VARIABLE", 42) != 42 { - t.Errorf(`Unset variables should returns the default value`) + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) } -} -func TestGetIntValueWithInvalidInput(t *testing.T) { - os.Clearenv() - os.Setenv("MY_TEST_VARIABLE", "invalid integer") - if getIntValue("MY_TEST_VARIABLE", 42) != 42 { - t.Errorf(`Invalid integer should returns the default value`) + if !opts.HasDebugMode() { + t.Fatalf(`Unexpected debug mode value, got "%v"`, opts.HasDebugMode()) } } -func TestGetIntValue(t *testing.T) { - os.Clearenv() - os.Setenv("MY_TEST_VARIABLE", "2018") - if getIntValue("MY_TEST_VARIABLE", 42) != 2018 { - t.Errorf(`Defined variables should returns the specified value`) - } -} - -func TestDebugModeOn(t *testing.T) { +func TestDebugModeOff(t *testing.T) { os.Clearenv() - os.Setenv("DEBUG", "1") - cfg := NewConfig() - if !cfg.HasDebugMode() { - t.Fatalf(`Unexpected debug mode value, got "%v"`, cfg.HasDebugMode()) + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) } -} - -func TestDebugModeOff(t *testing.T) { - os.Clearenv() - cfg := NewConfig() - if cfg.HasDebugMode() { - t.Fatalf(`Unexpected debug mode value, got "%v"`, cfg.HasDebugMode()) + if opts.HasDebugMode() { + t.Fatalf(`Unexpected debug mode value, got "%v"`, opts.HasDebugMode()) } } func TestCustomBaseURL(t *testing.T) { os.Clearenv() os.Setenv("BASE_URL", "http://example.org") - cfg := NewConfig() - if cfg.BaseURL() != "http://example.org" { - t.Fatalf(`Unexpected base URL, got "%s"`, cfg.BaseURL()) + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) } - if cfg.RootURL() != "http://example.org" { - t.Fatalf(`Unexpected root URL, got "%s"`, cfg.RootURL()) + if opts.BaseURL() != "http://example.org" { + t.Fatalf(`Unexpected base URL, got "%s"`, opts.BaseURL()) } - if cfg.BasePath() != "" { - t.Fatalf(`Unexpected base path, got "%s"`, cfg.BasePath()) + if opts.RootURL() != "http://example.org" { + t.Fatalf(`Unexpected root URL, got "%s"`, opts.RootURL()) + } + + if opts.BasePath() != "" { + t.Fatalf(`Unexpected base path, got "%s"`, opts.BasePath()) } } func TestCustomBaseURLWithTrailingSlash(t *testing.T) { os.Clearenv() os.Setenv("BASE_URL", "http://example.org/folder/") - cfg := NewConfig() - if cfg.BaseURL() != "http://example.org/folder" { - t.Fatalf(`Unexpected base URL, got "%s"`, cfg.BaseURL()) + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) } - if cfg.RootURL() != "http://example.org" { - t.Fatalf(`Unexpected root URL, got "%s"`, cfg.RootURL()) + if opts.BaseURL() != "http://example.org/folder" { + t.Fatalf(`Unexpected base URL, got "%s"`, opts.BaseURL()) } - if cfg.BasePath() != "/folder" { - t.Fatalf(`Unexpected base path, got "%s"`, cfg.BasePath()) + if opts.RootURL() != "http://example.org" { + t.Fatalf(`Unexpected root URL, got "%s"`, opts.RootURL()) + } + + if opts.BasePath() != "/folder" { + t.Fatalf(`Unexpected base path, got "%s"`, opts.BasePath()) } } func TestBaseURLWithoutScheme(t *testing.T) { os.Clearenv() os.Setenv("BASE_URL", "example.org/folder/") - cfg := NewConfig() - - if cfg.BaseURL() != "http://localhost" { - t.Fatalf(`Unexpected base URL, got "%s"`, cfg.BaseURL()) - } - - if cfg.RootURL() != "http://localhost" { - t.Fatalf(`Unexpected root URL, got "%s"`, cfg.RootURL()) - } - if cfg.BasePath() != "" { - t.Fatalf(`Unexpected base path, got "%s"`, cfg.BasePath()) + _, err := parse() + if err == nil { + t.Fatalf(`Parsing must fail`) } } func TestBaseURLWithInvalidScheme(t *testing.T) { os.Clearenv() os.Setenv("BASE_URL", "ftp://example.org/folder/") - cfg := NewConfig() - - if cfg.BaseURL() != "http://localhost" { - t.Fatalf(`Unexpected base URL, got "%s"`, cfg.BaseURL()) - } - if cfg.RootURL() != "http://localhost" { - t.Fatalf(`Unexpected root URL, got "%s"`, cfg.RootURL()) - } - - if cfg.BasePath() != "" { - t.Fatalf(`Unexpected base path, got "%s"`, cfg.BasePath()) + _, err := parse() + if err == nil { + t.Fatalf(`Parsing must fail`) } } func TestInvalidBaseURL(t *testing.T) { os.Clearenv() os.Setenv("BASE_URL", "http://example|org") - cfg := NewConfig() - - if cfg.BaseURL() != defaultBaseURL { - t.Fatalf(`Unexpected base URL, got "%s"`, cfg.BaseURL()) - } - - if cfg.RootURL() != defaultBaseURL { - t.Fatalf(`Unexpected root URL, got "%s"`, cfg.RootURL()) - } - if cfg.BasePath() != "" { - t.Fatalf(`Unexpected base path, got "%s"`, cfg.BasePath()) + _, err := parse() + if err == nil { + t.Fatalf(`Parsing must fail`) } } func TestDefaultBaseURL(t *testing.T) { os.Clearenv() - cfg := NewConfig() - if cfg.BaseURL() != defaultBaseURL { - t.Fatalf(`Unexpected base URL, got "%s"`, cfg.BaseURL()) + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) } - if cfg.RootURL() != defaultBaseURL { - t.Fatalf(`Unexpected root URL, got "%s"`, cfg.RootURL()) + if opts.BaseURL() != defaultBaseURL { + t.Fatalf(`Unexpected base URL, got "%s"`, opts.BaseURL()) } - if cfg.BasePath() != "" { - t.Fatalf(`Unexpected base path, got "%s"`, cfg.BasePath()) + if opts.RootURL() != defaultBaseURL { + t.Fatalf(`Unexpected root URL, got "%s"`, opts.RootURL()) + } + + if opts.BasePath() != "" { + t.Fatalf(`Unexpected base path, got "%s"`, opts.BasePath()) } } @@ -208,9 +135,13 @@ func TestDatabaseURL(t *testing.T) { os.Clearenv() os.Setenv("DATABASE_URL", "foobar") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "foobar" - result := cfg.DatabaseURL() + result := opts.DatabaseURL() if result != expected { t.Fatalf(`Unexpected DATABASE_URL value, got %q instead of %q`, result, expected) @@ -219,9 +150,14 @@ func TestDatabaseURL(t *testing.T) { func TestDefaultDatabaseURLValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.DatabaseURL() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultDatabaseURL + result := opts.DatabaseURL() if result != expected { t.Fatalf(`Unexpected DATABASE_URL value, got %q instead of %q`, result, expected) @@ -231,22 +167,30 @@ func TestDefaultDatabaseURLValue(t *testing.T) { func TestDefaultDatabaseMaxConnsValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultDatabaseMaxConns - result := cfg.DatabaseMaxConns() + result := opts.DatabaseMaxConns() if result != expected { t.Fatalf(`Unexpected DATABASE_MAX_CONNS value, got %v instead of %v`, result, expected) } } -func TestDeatabaseMaxConns(t *testing.T) { +func TestDatabaseMaxConns(t *testing.T) { os.Clearenv() os.Setenv("DATABASE_MAX_CONNS", "42") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := 42 - result := cfg.DatabaseMaxConns() + result := opts.DatabaseMaxConns() if result != expected { t.Fatalf(`Unexpected DATABASE_MAX_CONNS value, got %v instead of %v`, result, expected) @@ -256,9 +200,13 @@ func TestDeatabaseMaxConns(t *testing.T) { func TestDefaultDatabaseMinConnsValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultDatabaseMinConns - result := cfg.DatabaseMinConns() + result := opts.DatabaseMinConns() if result != expected { t.Fatalf(`Unexpected DATABASE_MIN_CONNS value, got %v instead of %v`, result, expected) @@ -269,9 +217,13 @@ func TestDatabaseMinConns(t *testing.T) { os.Clearenv() os.Setenv("DATABASE_MIN_CONNS", "42") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := 42 - result := cfg.DatabaseMinConns() + result := opts.DatabaseMinConns() if result != expected { t.Fatalf(`Unexpected DATABASE_MIN_CONNS value, got %v instead of %v`, result, expected) @@ -282,9 +234,13 @@ func TestListenAddr(t *testing.T) { os.Clearenv() os.Setenv("LISTEN_ADDR", "foobar") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "foobar" - result := cfg.ListenAddr() + result := opts.ListenAddr() if result != expected { t.Fatalf(`Unexpected LISTEN_ADDR value, got %q instead of %q`, result, expected) @@ -296,9 +252,13 @@ func TestListenAddrWithPortDefined(t *testing.T) { os.Setenv("PORT", "3000") os.Setenv("LISTEN_ADDR", "foobar") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := ":3000" - result := cfg.ListenAddr() + result := opts.ListenAddr() if result != expected { t.Fatalf(`Unexpected LISTEN_ADDR value, got %q instead of %q`, result, expected) @@ -307,9 +267,14 @@ func TestListenAddrWithPortDefined(t *testing.T) { func TestDefaultListenAddrValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.ListenAddr() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultListenAddr + result := opts.ListenAddr() if result != expected { t.Fatalf(`Unexpected LISTEN_ADDR value, got %q instead of %q`, result, expected) @@ -320,9 +285,13 @@ func TestCertFile(t *testing.T) { os.Clearenv() os.Setenv("CERT_FILE", "foobar") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "foobar" - result := cfg.CertFile() + result := opts.CertFile() if result != expected { t.Fatalf(`Unexpected CERT_FILE value, got %q instead of %q`, result, expected) @@ -331,9 +300,14 @@ func TestCertFile(t *testing.T) { func TestDefaultCertFileValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.CertFile() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultCertFile + result := opts.CertFile() if result != expected { t.Fatalf(`Unexpected CERT_FILE value, got %q instead of %q`, result, expected) @@ -344,9 +318,13 @@ func TestKeyFile(t *testing.T) { os.Clearenv() os.Setenv("KEY_FILE", "foobar") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "foobar" - result := cfg.KeyFile() + result := opts.CertKeyFile() if result != expected { t.Fatalf(`Unexpected KEY_FILE value, got %q instead of %q`, result, expected) @@ -355,9 +333,14 @@ func TestKeyFile(t *testing.T) { func TestDefaultKeyFileValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.KeyFile() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultKeyFile + result := opts.CertKeyFile() if result != expected { t.Fatalf(`Unexpected KEY_FILE value, got %q instead of %q`, result, expected) @@ -368,9 +351,13 @@ func TestCertDomain(t *testing.T) { os.Clearenv() os.Setenv("CERT_DOMAIN", "example.org") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "example.org" - result := cfg.CertDomain() + result := opts.CertDomain() if result != expected { t.Fatalf(`Unexpected CERT_DOMAIN value, got %q instead of %q`, result, expected) @@ -379,9 +366,14 @@ func TestCertDomain(t *testing.T) { func TestDefaultCertDomainValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.CertDomain() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultCertDomain + result := opts.CertDomain() if result != expected { t.Fatalf(`Unexpected CERT_DOMAIN value, got %q instead of %q`, result, expected) @@ -392,9 +384,13 @@ func TestCertCache(t *testing.T) { os.Clearenv() os.Setenv("CERT_CACHE", "foobar") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "foobar" - result := cfg.CertCache() + result := opts.CertCache() if result != expected { t.Fatalf(`Unexpected CERT_CACHE value, got %q instead of %q`, result, expected) @@ -403,9 +399,14 @@ func TestCertCache(t *testing.T) { func TestDefaultCertCacheValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.CertCache() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultCertCache + result := opts.CertCache() if result != expected { t.Fatalf(`Unexpected CERT_CACHE value, got %q instead of %q`, result, expected) @@ -415,9 +416,13 @@ func TestDefaultCertCacheValue(t *testing.T) { func TestDefaultCleanupFrequencyValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultCleanupFrequency - result := cfg.CleanupFrequency() + result := opts.CleanupFrequency() if result != expected { t.Fatalf(`Unexpected CLEANUP_FREQUENCY value, got %v instead of %v`, result, expected) @@ -428,9 +433,13 @@ func TestCleanupFrequency(t *testing.T) { os.Clearenv() os.Setenv("CLEANUP_FREQUENCY", "42") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := 42 - result := cfg.CleanupFrequency() + result := opts.CleanupFrequency() if result != expected { t.Fatalf(`Unexpected CLEANUP_FREQUENCY value, got %v instead of %v`, result, expected) @@ -440,9 +449,13 @@ func TestCleanupFrequency(t *testing.T) { func TestDefaultWorkerPoolSizeValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultWorkerPoolSize - result := cfg.WorkerPoolSize() + result := opts.WorkerPoolSize() if result != expected { t.Fatalf(`Unexpected WORKER_POOL_SIZE value, got %v instead of %v`, result, expected) @@ -453,9 +466,13 @@ func TestWorkerPoolSize(t *testing.T) { os.Clearenv() os.Setenv("WORKER_POOL_SIZE", "42") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := 42 - result := cfg.WorkerPoolSize() + result := opts.WorkerPoolSize() if result != expected { t.Fatalf(`Unexpected WORKER_POOL_SIZE value, got %v instead of %v`, result, expected) @@ -465,9 +482,13 @@ func TestWorkerPoolSize(t *testing.T) { func TestDefautPollingFrequencyValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultPollingFrequency - result := cfg.PollingFrequency() + result := opts.PollingFrequency() if result != expected { t.Fatalf(`Unexpected POLLING_FREQUENCY value, got %v instead of %v`, result, expected) @@ -478,9 +499,13 @@ func TestPollingFrequency(t *testing.T) { os.Clearenv() os.Setenv("POLLING_FREQUENCY", "42") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := 42 - result := cfg.PollingFrequency() + result := opts.PollingFrequency() if result != expected { t.Fatalf(`Unexpected POLLING_FREQUENCY value, got %v instead of %v`, result, expected) @@ -490,9 +515,13 @@ func TestPollingFrequency(t *testing.T) { func TestDefaultBatchSizeValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultBatchSize - result := cfg.BatchSize() + result := opts.BatchSize() if result != expected { t.Fatalf(`Unexpected BATCH_SIZE value, got %v instead of %v`, result, expected) @@ -503,9 +532,13 @@ func TestBatchSize(t *testing.T) { os.Clearenv() os.Setenv("BATCH_SIZE", "42") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := 42 - result := cfg.BatchSize() + result := opts.BatchSize() if result != expected { t.Fatalf(`Unexpected BATCH_SIZE value, got %v instead of %v`, result, expected) @@ -515,9 +548,13 @@ func TestBatchSize(t *testing.T) { func TestOAuth2UserCreationWhenUnset(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := false - result := cfg.IsOAuth2UserCreationAllowed() + result := opts.IsOAuth2UserCreationAllowed() if result != expected { t.Fatalf(`Unexpected OAUTH2_USER_CREATION value, got %v instead of %v`, result, expected) @@ -528,9 +565,13 @@ func TestOAuth2UserCreationAdmin(t *testing.T) { os.Clearenv() os.Setenv("OAUTH2_USER_CREATION", "1") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := true - result := cfg.IsOAuth2UserCreationAllowed() + result := opts.IsOAuth2UserCreationAllowed() if result != expected { t.Fatalf(`Unexpected OAUTH2_USER_CREATION value, got %v instead of %v`, result, expected) @@ -541,9 +582,13 @@ func TestOAuth2ClientID(t *testing.T) { os.Clearenv() os.Setenv("OAUTH2_CLIENT_ID", "foobar") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "foobar" - result := cfg.OAuth2ClientID() + result := opts.OAuth2ClientID() if result != expected { t.Fatalf(`Unexpected OAUTH2_CLIENT_ID value, got %q instead of %q`, result, expected) @@ -552,9 +597,14 @@ func TestOAuth2ClientID(t *testing.T) { func TestDefaultOAuth2ClientIDValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.OAuth2ClientID() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultOAuth2ClientID + result := opts.OAuth2ClientID() if result != expected { t.Fatalf(`Unexpected OAUTH2_CLIENT_ID value, got %q instead of %q`, result, expected) @@ -565,9 +615,13 @@ func TestOAuth2ClientSecret(t *testing.T) { os.Clearenv() os.Setenv("OAUTH2_CLIENT_SECRET", "secret") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "secret" - result := cfg.OAuth2ClientSecret() + result := opts.OAuth2ClientSecret() if result != expected { t.Fatalf(`Unexpected OAUTH2_CLIENT_SECRET value, got %q instead of %q`, result, expected) @@ -576,9 +630,14 @@ func TestOAuth2ClientSecret(t *testing.T) { func TestDefaultOAuth2ClientSecretValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.OAuth2ClientSecret() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultOAuth2ClientSecret + result := opts.OAuth2ClientSecret() if result != expected { t.Fatalf(`Unexpected OAUTH2_CLIENT_SECRET value, got %q instead of %q`, result, expected) @@ -589,9 +648,13 @@ func TestOAuth2RedirectURL(t *testing.T) { os.Clearenv() os.Setenv("OAUTH2_REDIRECT_URL", "http://example.org") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "http://example.org" - result := cfg.OAuth2RedirectURL() + result := opts.OAuth2RedirectURL() if result != expected { t.Fatalf(`Unexpected OAUTH2_REDIRECT_URL value, got %q instead of %q`, result, expected) @@ -600,9 +663,14 @@ func TestOAuth2RedirectURL(t *testing.T) { func TestDefaultOAuth2RedirectURLValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.OAuth2RedirectURL() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultOAuth2RedirectURL + result := opts.OAuth2RedirectURL() if result != expected { t.Fatalf(`Unexpected OAUTH2_REDIRECT_URL value, got %q instead of %q`, result, expected) @@ -613,9 +681,13 @@ func TestOAuth2Provider(t *testing.T) { os.Clearenv() os.Setenv("OAUTH2_PROVIDER", "google") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "google" - result := cfg.OAuth2Provider() + result := opts.OAuth2Provider() if result != expected { t.Fatalf(`Unexpected OAUTH2_PROVIDER value, got %q instead of %q`, result, expected) @@ -624,9 +696,14 @@ func TestOAuth2Provider(t *testing.T) { func TestDefaultOAuth2ProviderValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.OAuth2Provider() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultOAuth2Provider + result := opts.OAuth2Provider() if result != expected { t.Fatalf(`Unexpected OAUTH2_PROVIDER value, got %q instead of %q`, result, expected) @@ -636,9 +713,13 @@ func TestDefaultOAuth2ProviderValue(t *testing.T) { func TestHSTSWhenUnset(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := true - result := cfg.HasHSTS() + result := opts.HasHSTS() if result != expected { t.Fatalf(`Unexpected DISABLE_HSTS value, got %v instead of %v`, result, expected) @@ -649,9 +730,13 @@ func TestHSTS(t *testing.T) { os.Clearenv() os.Setenv("DISABLE_HSTS", "1") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := false - result := cfg.HasHSTS() + result := opts.HasHSTS() if result != expected { t.Fatalf(`Unexpected DISABLE_HSTS value, got %v instead of %v`, result, expected) @@ -661,9 +746,13 @@ func TestHSTS(t *testing.T) { func TestDisableHTTPServiceWhenUnset(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := true - result := cfg.HasHTTPService() + result := opts.HasHTTPService() if result != expected { t.Fatalf(`Unexpected DISABLE_HTTP_SERVICE value, got %v instead of %v`, result, expected) @@ -674,9 +763,13 @@ func TestDisableHTTPService(t *testing.T) { os.Clearenv() os.Setenv("DISABLE_HTTP_SERVICE", "1") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := false - result := cfg.HasHTTPService() + result := opts.HasHTTPService() if result != expected { t.Fatalf(`Unexpected DISABLE_HTTP_SERVICE value, got %v instead of %v`, result, expected) @@ -686,9 +779,13 @@ func TestDisableHTTPService(t *testing.T) { func TestDisableSchedulerServiceWhenUnset(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := true - result := cfg.HasSchedulerService() + result := opts.HasSchedulerService() if result != expected { t.Fatalf(`Unexpected DISABLE_SCHEDULER_SERVICE value, got %v instead of %v`, result, expected) @@ -699,9 +796,13 @@ func TestDisableSchedulerService(t *testing.T) { os.Clearenv() os.Setenv("DISABLE_SCHEDULER_SERVICE", "1") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := false - result := cfg.HasSchedulerService() + result := opts.HasSchedulerService() if result != expected { t.Fatalf(`Unexpected DISABLE_SCHEDULER_SERVICE value, got %v instead of %v`, result, expected) @@ -712,9 +813,13 @@ func TestArchiveReadDays(t *testing.T) { os.Clearenv() os.Setenv("ARCHIVE_READ_DAYS", "7") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := 7 - result := cfg.ArchiveReadDays() + result := opts.ArchiveReadDays() if result != expected { t.Fatalf(`Unexpected ARCHIVE_READ_DAYS value, got %v instead of %v`, result, expected) @@ -724,9 +829,13 @@ func TestArchiveReadDays(t *testing.T) { func TestRunMigrationsWhenUnset(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := false - result := cfg.RunMigrations() + result := opts.RunMigrations() if result != expected { t.Fatalf(`Unexpected RUN_MIGRATIONS value, got %v instead of %v`, result, expected) @@ -737,9 +846,13 @@ func TestRunMigrations(t *testing.T) { os.Clearenv() os.Setenv("RUN_MIGRATIONS", "yes") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := true - result := cfg.RunMigrations() + result := opts.RunMigrations() if result != expected { t.Fatalf(`Unexpected RUN_MIGRATIONS value, got %v instead of %v`, result, expected) @@ -749,9 +862,13 @@ func TestRunMigrations(t *testing.T) { func TestCreateAdminWhenUnset(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := false - result := cfg.CreateAdmin() + result := opts.CreateAdmin() if result != expected { t.Fatalf(`Unexpected CREATE_ADMIN value, got %v instead of %v`, result, expected) @@ -762,9 +879,13 @@ func TestCreateAdmin(t *testing.T) { os.Clearenv() os.Setenv("CREATE_ADMIN", "true") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := true - result := cfg.CreateAdmin() + result := opts.CreateAdmin() if result != expected { t.Fatalf(`Unexpected CREATE_ADMIN value, got %v instead of %v`, result, expected) @@ -775,9 +896,13 @@ func TestPocketConsumerKeyFromEnvVariable(t *testing.T) { os.Clearenv() os.Setenv("POCKET_CONSUMER_KEY", "something") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "something" - result := cfg.PocketConsumerKey("default") + result := opts.PocketConsumerKey("default") if result != expected { t.Fatalf(`Unexpected POCKET_CONSUMER_KEY value, got %q instead of %q`, result, expected) @@ -787,9 +912,13 @@ func TestPocketConsumerKeyFromEnvVariable(t *testing.T) { func TestPocketConsumerKeyFromUserPrefs(t *testing.T) { os.Clearenv() - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "default" - result := cfg.PocketConsumerKey("default") + result := opts.PocketConsumerKey("default") if result != expected { t.Fatalf(`Unexpected POCKET_CONSUMER_KEY value, got %q instead of %q`, result, expected) @@ -800,9 +929,13 @@ func TestProxyImages(t *testing.T) { os.Clearenv() os.Setenv("PROXY_IMAGES", "all") - cfg := NewConfig() + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := "all" - result := cfg.ProxyImages() + result := opts.ProxyImages() if result != expected { t.Fatalf(`Unexpected PROXY_IMAGES value, got %q instead of %q`, result, expected) @@ -811,9 +944,14 @@ func TestProxyImages(t *testing.T) { func TestDefaultProxyImagesValue(t *testing.T) { os.Clearenv() - cfg := NewConfig() - result := cfg.ProxyImages() + + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + expected := defaultProxyImages + result := opts.ProxyImages() if result != expected { t.Fatalf(`Unexpected PROXY_IMAGES value, got %q instead of %q`, result, expected) @@ -822,19 +960,27 @@ func TestDefaultProxyImagesValue(t *testing.T) { func TestHTTPSOff(t *testing.T) { os.Clearenv() - cfg := NewConfig() - if cfg.IsHTTPS { - t.Fatalf(`Unexpected HTTPS value, got "%v"`, cfg.IsHTTPS) + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + + if opts.HTTPS { + t.Fatalf(`Unexpected HTTPS value, got "%v"`, opts.HTTPS) } } func TestHTTPSOn(t *testing.T) { os.Clearenv() os.Setenv("HTTPS", "on") - cfg := NewConfig() - if !cfg.IsHTTPS { - t.Fatalf(`Unexpected HTTPS value, got "%v"`, cfg.IsHTTPS) + opts, err := parse() + if err != nil { + t.Fatalf(`Parsing failure: %q`, err) + } + + if !opts.HTTPS { + t.Fatalf(`Unexpected HTTPS value, got "%v"`, opts.HTTPS) } } -- cgit v1.2.3