Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-09-27 12:07:16 +0300
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-09-27 12:08:38 +0300
commit9beee9f6022a745a40537c0b5d26dc8a43d35944 (patch)
tree67695b2125dd40a2be84feafa0b2443b8c3274e4
parent8e11c9aa018c157966f30a4d809c7ca454d310fa (diff)
Create a factory method for Domains to handle mutex better
-rw-r--r--app.go2
-rw-r--r--internal/auth/auth_test.go8
-rw-r--r--internal/source/domains.go11
3 files changed, 15 insertions, 6 deletions
diff --git a/app.go b/app.go
index 0d69ac79..67b94f2a 100644
--- a/app.go
+++ b/app.go
@@ -461,7 +461,7 @@ func (a *theApp) listenAdminHTTPS(wg *sync.WaitGroup) {
}
func runApp(config appConfig) {
- a := theApp{appConfig: config, domains: new(source.Domains)}
+ a := theApp{appConfig: config, domains: source.NewDomains()}
err := logging.ConfigureLogging(a.LogFormat, a.LogVerbose)
if err != nil {
diff --git a/internal/auth/auth_test.go b/internal/auth/auth_test.go
index e8ff5e94..ad6550ac 100644
--- a/internal/auth/auth_test.go
+++ b/internal/auth/auth_test.go
@@ -54,7 +54,7 @@ func TestTryAuthenticate(t *testing.T) {
require.NoError(t, err)
r := request.WithHTTPSFlag(&http.Request{URL: reqURL}, true)
- require.Equal(t, false, auth.TryAuthenticate(result, r, new(source.Domains)))
+ require.Equal(t, false, auth.TryAuthenticate(result, r, source.NewDomains()))
}
func TestTryAuthenticateWithError(t *testing.T) {
@@ -65,7 +65,7 @@ func TestTryAuthenticateWithError(t *testing.T) {
require.NoError(t, err)
r := request.WithHTTPSFlag(&http.Request{URL: reqURL}, true)
- require.Equal(t, true, auth.TryAuthenticate(result, r, new(source.Domains)))
+ require.Equal(t, true, auth.TryAuthenticate(result, r, source.NewDomains()))
require.Equal(t, 401, result.Code)
}
@@ -82,7 +82,7 @@ func TestTryAuthenticateWithCodeButInvalidState(t *testing.T) {
session.Values["state"] = "state"
session.Save(r, result)
- require.Equal(t, true, auth.TryAuthenticate(result, r, new(source.Domains)))
+ require.Equal(t, true, auth.TryAuthenticate(result, r, source.NewDomains()))
require.Equal(t, 401, result.Code)
}
@@ -122,7 +122,7 @@ func testTryAuthenticateWithCodeAndState(t *testing.T, https bool) {
})
result := httptest.NewRecorder()
- require.Equal(t, true, auth.TryAuthenticate(result, r, new(source.Domains)))
+ require.Equal(t, true, auth.TryAuthenticate(result, r, source.NewDomains()))
require.Equal(t, 302, result.Code)
require.Equal(t, "https://pages.gitlab-example.com/project/", result.Header().Get("Location"))
require.Equal(t, 600, result.Result().Cookies()[0].MaxAge)
diff --git a/internal/source/domains.go b/internal/source/domains.go
index 54a269d8..85646b8a 100644
--- a/internal/source/domains.go
+++ b/internal/source/domains.go
@@ -13,7 +13,16 @@ import (
// currently reading them from disk.
type Domains struct {
dm disk.Map
- lock sync.RWMutex
+ lock *sync.RWMutex
+}
+
+// NewDomains is a factory method for domains initializing a mutex. It should
+// not initialize `dm` as we later check the readiness by comparing it with a
+// nil value.
+func NewDomains() *Domains {
+ return &Domains{
+ lock: new(sync.RWMutex),
+ }
}
// GetDomain returns a domain from the domains map