diff options
author | Jaime Martinez <jmartinez@gitlab.com> | 2021-04-29 08:43:33 +0300 |
---|---|---|
committer | Jaime Martinez <jmartinez@gitlab.com> | 2021-04-29 08:43:33 +0300 |
commit | 890d01033ab17ea5a6208450ced595d12f4ce195 (patch) | |
tree | 36e0e6a7901ab66cc4c4aeecec07d05fc1eaeb13 /internal/source/domains_test.go | |
parent | 4ff61e374a7dbfa51fee91799f11197e0f8d53f7 (diff) |
Use config package in GitLab client
Uses the `internal/config/` client inside the `internal/source/gitlab/`
package which makes it easier to extend the configuration.
This is an iteration of https://gitlab.com/gitlab-org/gitlab-pages/-/issues/543.
Changelog: other
Diffstat (limited to 'internal/source/domains_test.go')
-rw-r--r-- | internal/source/domains_test.go | 95 |
1 files changed, 41 insertions, 54 deletions
diff --git a/internal/source/domains_test.go b/internal/source/domains_test.go index db9c2c23..a9404eef 100644 --- a/internal/source/domains_test.go +++ b/internal/source/domains_test.go @@ -11,105 +11,92 @@ import ( "gitlab.com/gitlab-org/gitlab-pages/internal/source/disk" ) -type sourceConfig struct { - api string - secret string - domainSource string -} - -func (c sourceConfig) InternalGitLabServerURL() string { - return c.api -} - -func (c sourceConfig) GitlabAPISecret() []byte { - return []byte(c.secret) -} -func (c sourceConfig) GitlabClientConnectionTimeout() time.Duration { - return 10 * time.Second -} - -func (c sourceConfig) GitlabJWTTokenExpiry() time.Duration { - return 30 * time.Second -} - -func (c sourceConfig) DomainConfigSource() string { - return c.domainSource -} -func (c sourceConfig) Cache() *config.Cache { - return &config.Cache{ - CacheExpiry: 10 * time.Minute, - CacheCleanupInterval: time.Minute, - EntryRefreshTimeout: 60 * time.Second, - RetrievalTimeout: 30 * time.Second, - MaxRetrievalInterval: time.Second, - MaxRetrievalRetries: 3, +func TestNewDomains(t *testing.T) { + validCfg := config.GitLab{ + InternalServer: "https://gitlab.com", + APISecretKey: []byte("abc"), + ClientHTTPTimeout: time.Second, + JWTTokenExpiration: time.Second, } -} -func TestNewDomains(t *testing.T) { tests := []struct { name string - sourceConfig sourceConfig + source string + config config.GitLab expectedErr string expectGitlabNil bool expectDiskNil bool }{ { - name: "no_source_config", - sourceConfig: sourceConfig{}, - expectedErr: "invalid option for -domain-config-source: \"\"", + name: "no_source_config", + source: "", + expectedErr: "invalid option for -domain-config-source: \"\"", }, { - name: "invalid_source_config", - sourceConfig: sourceConfig{domainSource: "invalid"}, - expectedErr: "invalid option for -domain-config-source: \"invalid\"", + name: "invalid_source_config", + source: "invalid", + expectedErr: "invalid option for -domain-config-source: \"invalid\"", }, { name: "disk_source", - sourceConfig: sourceConfig{domainSource: "disk"}, + source: "disk", expectGitlabNil: true, expectDiskNil: false, }, { name: "auto_without_api_config", - sourceConfig: sourceConfig{domainSource: "auto"}, + source: "auto", expectGitlabNil: true, expectDiskNil: false, }, { name: "auto_with_api_config", - sourceConfig: sourceConfig{api: "https://gitlab.com", secret: "abc", domainSource: "auto"}, + source: "auto", + config: validCfg, expectGitlabNil: false, expectDiskNil: false, }, { name: "gitlab_source_success", - sourceConfig: sourceConfig{api: "https://gitlab.com", secret: "abc", domainSource: "gitlab"}, + source: "gitlab", + config: validCfg, expectDiskNil: true, }, { - name: "gitlab_source_no_url", - sourceConfig: sourceConfig{api: "", secret: "abc", domainSource: "gitlab"}, - expectedErr: "GitLab API URL or API secret has not been provided", + name: "gitlab_source_no_url", + source: "gitlab", + config: func() config.GitLab { + cfg := validCfg + cfg.InternalServer = "" + + return cfg + }(), + expectedErr: "GitLab API URL or API secret has not been provided", }, { - name: "gitlab_source_no_secret", - sourceConfig: sourceConfig{api: "https://gitlab.com", secret: "", domainSource: "gitlab"}, - expectedErr: "GitLab API URL or API secret has not been provided", + name: "gitlab_source_no_secret", + source: "gitlab", + config: func() config.GitLab { + cfg := validCfg + cfg.APISecretKey = []byte{} + + return cfg + }(), + expectedErr: "GitLab API URL or API secret has not been provided", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - domains, err := NewDomains(tt.sourceConfig) + domains, err := NewDomains(tt.source, &tt.config) if tt.expectedErr != "" { require.EqualError(t, err, tt.expectedErr) return } require.NoError(t, err) - require.Equal(t, tt.expectGitlabNil, domains.gitlab == nil) - require.Equal(t, tt.expectDiskNil, domains.disk == nil) + require.Equal(t, tt.expectGitlabNil, domains.gitlab == nil, "mismatch gitlab nil") + require.Equal(t, tt.expectDiskNil, domains.disk == nil, "mismatch disk nil") }) } } |