diff options
Diffstat (limited to 'go/internal/config/config_test.go')
-rw-r--r-- | go/internal/config/config_test.go | 94 |
1 files changed, 68 insertions, 26 deletions
diff --git a/go/internal/config/config_test.go b/go/internal/config/config_test.go index 6640f42..e1e49d7 100644 --- a/go/internal/config/config_test.go +++ b/go/internal/config/config_test.go @@ -2,63 +2,105 @@ package config import ( "fmt" - "strings" + "path" "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/testhelper" +) + +const ( + customSecret = "custom/my-contents-is-secret" +) + +var ( + testRoot = testhelper.TestRoot ) func TestParseConfig(t *testing.T) { - testRoot := "/foo/bar" + cleanup, err := testhelper.PrepareTestRootDir() + require.NoError(t, err) + defer cleanup() + testCases := []struct { yaml string path string format string gitlabUrl string migration MigrationConfig + secret string }{ - {path: "/foo/bar/gitlab-shell.log", format: "text"}, - {yaml: "log_file: my-log.log", path: "/foo/bar/my-log.log", format: "text"}, - {yaml: "log_file: /qux/my-log.log", path: "/qux/my-log.log", format: "text"}, - {yaml: "log_format: json", path: "/foo/bar/gitlab-shell.log", format: "json"}, + { + path: path.Join(testRoot, "gitlab-shell.log"), + format: "text", + secret: "default-secret-content", + }, + { + yaml: "log_file: my-log.log", + path: path.Join(testRoot, "my-log.log"), + format: "text", + secret: "default-secret-content", + }, + { + yaml: "log_file: /qux/my-log.log", + path: "/qux/my-log.log", + format: "text", + secret: "default-secret-content", + }, + { + yaml: "log_format: json", + path: path.Join(testRoot, "gitlab-shell.log"), + format: "json", + secret: "default-secret-content", + }, { yaml: "migration:\n enabled: true\n features:\n - foo\n - bar", - path: "/foo/bar/gitlab-shell.log", + path: path.Join(testRoot, "gitlab-shell.log"), format: "text", migration: MigrationConfig{Enabled: true, Features: []string{"foo", "bar"}}, + secret: "default-secret-content", }, { yaml: "gitlab_url: http+unix://%2Fpath%2Fto%2Fgitlab%2Fgitlab.socket", - path: "/foo/bar/gitlab-shell.log", + path: path.Join(testRoot, "gitlab-shell.log"), format: "text", gitlabUrl: "http+unix:///path/to/gitlab/gitlab.socket", + secret: "default-secret-content", + }, + { + yaml: fmt.Sprintf("secret_file: %s", customSecret), + path: path.Join(testRoot, "gitlab-shell.log"), + format: "text", + secret: "custom-secret-content", + }, + { + yaml: fmt.Sprintf("secret_file: %s", path.Join(testRoot, customSecret)), + path: path.Join(testRoot, "gitlab-shell.log"), + format: "text", + secret: "custom-secret-content", + }, + { + yaml: "secret: an inline secret", + path: path.Join(testRoot, "gitlab-shell.log"), + format: "text", + secret: "an inline secret", }, } for _, tc := range testCases { t.Run(fmt.Sprintf("yaml input: %q", tc.yaml), func(t *testing.T) { cfg := Config{RootDir: testRoot} - if err := parseConfig([]byte(tc.yaml), &cfg); err != nil { - t.Fatal(err) - } - - if cfg.Migration.Enabled != tc.migration.Enabled { - t.Fatalf("migration.enabled: expected %v, got %v", tc.migration.Enabled, cfg.Migration.Enabled) - } - - if strings.Join(cfg.Migration.Features, ":") != strings.Join(tc.migration.Features, ":") { - t.Fatalf("migration.features: expected %#v, got %#v", tc.migration.Features, cfg.Migration.Features) - } - - if cfg.LogFile != tc.path { - t.Fatalf("expected %q, got %q", tc.path, cfg.LogFile) - } - if cfg.LogFormat != tc.format { - t.Fatalf("expected %q, got %q", tc.format, cfg.LogFormat) - } + err := parseConfig([]byte(tc.yaml), &cfg) + require.NoError(t, err) + assert.Equal(t, tc.migration.Enabled, cfg.Migration.Enabled, "migration.enabled not equal") + assert.Equal(t, tc.migration.Features, cfg.Migration.Features, "migration.features not equal") + assert.Equal(t, tc.path, cfg.LogFile) + assert.Equal(t, tc.format, cfg.LogFormat) assert.Equal(t, tc.gitlabUrl, cfg.GitlabUrl) + assert.Equal(t, tc.secret, cfg.Secret) }) } } |