diff options
Diffstat (limited to 'internal/domain/domain_test.go')
-rw-r--r-- | internal/domain/domain_test.go | 148 |
1 files changed, 93 insertions, 55 deletions
diff --git a/internal/domain/domain_test.go b/internal/domain/domain_test.go index 32bf2e3d..b65396a7 100644 --- a/internal/domain/domain_test.go +++ b/internal/domain/domain_test.go @@ -11,7 +11,6 @@ import ( "testing" "time" - log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -27,16 +26,19 @@ func serveFileOrNotFound(domain *D) http.HandlerFunc { } func TestGroupServeHTTP(t *testing.T) { - setUpTests() + cleanup := setUpTests(t) + defer cleanup() testGroup := &D{ - group: "group", projectName: "", - projects: map[string]*project{ - "group.test.io": &project{}, - "group.gitlab-example.com": &project{}, - "project": &project{}, - "project2": &project{}, + group: group{ + name: "group", + projects: map[string]*project{ + "group.test.io": &project{}, + "group.gitlab-example.com": &project{}, + "project": &project{}, + "project2": &project{}, + }, }, } @@ -64,10 +66,11 @@ func TestGroupServeHTTP(t *testing.T) { } func TestDomainServeHTTP(t *testing.T) { - setUpTests() + cleanup := setUpTests(t) + defer cleanup() testDomain := &D{ - group: "group", + group: group{name: "group"}, projectName: "project2", config: &domainConfig{ Domain: "test.domain.com", @@ -95,7 +98,7 @@ func TestIsHTTPSOnly(t *testing.T) { { name: "Custom domain with HTTPS-only enabled", domain: &D{ - group: "group", + group: group{name: "group"}, projectName: "project", config: &domainConfig{HTTPSOnly: true}, }, @@ -105,7 +108,7 @@ func TestIsHTTPSOnly(t *testing.T) { { name: "Custom domain with HTTPS-only disabled", domain: &D{ - group: "group", + group: group{name: "group"}, projectName: "project", config: &domainConfig{HTTPSOnly: false}, }, @@ -115,9 +118,11 @@ func TestIsHTTPSOnly(t *testing.T) { { name: "Default group domain with HTTPS-only enabled", domain: &D{ - group: "group", projectName: "project", - projects: projects{"test-domain": &project{HTTPSOnly: true}}, + group: group{ + name: "group", + projects: projects{"test-domain": &project{HTTPSOnly: true}}, + }, }, url: "http://test-domain", expected: true, @@ -125,9 +130,11 @@ func TestIsHTTPSOnly(t *testing.T) { { name: "Default group domain with HTTPS-only disabled", domain: &D{ - group: "group", projectName: "project", - projects: projects{"test-domain": &project{HTTPSOnly: false}}, + group: group{ + name: "group", + projects: projects{"test-domain": &project{HTTPSOnly: false}}, + }, }, url: "http://test-domain", expected: false, @@ -135,9 +142,11 @@ func TestIsHTTPSOnly(t *testing.T) { { name: "Case-insensitive default group domain with HTTPS-only enabled", domain: &D{ - group: "group", projectName: "project", - projects: projects{"test-domain": &project{HTTPSOnly: true}}, + group: group{ + name: "group", + projects: projects{"test-domain": &project{HTTPSOnly: true}}, + }, }, url: "http://Test-domain", expected: true, @@ -145,9 +154,11 @@ func TestIsHTTPSOnly(t *testing.T) { { name: "Other group domain with HTTPS-only enabled", domain: &D{ - group: "group", projectName: "project", - projects: projects{"project": &project{HTTPSOnly: true}}, + group: group{ + name: "group", + projects: projects{"project": &project{HTTPSOnly: true}}, + }, }, url: "http://test-domain/project", expected: true, @@ -155,9 +166,11 @@ func TestIsHTTPSOnly(t *testing.T) { { name: "Other group domain with HTTPS-only disabled", domain: &D{ - group: "group", projectName: "project", - projects: projects{"project": &project{HTTPSOnly: false}}, + group: group{ + name: "group", + projects: projects{"project": &project{HTTPSOnly: false}}, + }, }, url: "http://test-domain/project", expected: false, @@ -165,7 +178,7 @@ func TestIsHTTPSOnly(t *testing.T) { { name: "Unknown project", domain: &D{ - group: "group", + group: group{name: "group"}, projectName: "project", }, url: "http://test-domain/project", @@ -209,16 +222,19 @@ func testHTTPGzip(t *testing.T, handler http.HandlerFunc, mode, url string, valu } func TestGroupServeHTTPGzip(t *testing.T) { - setUpTests() + cleanup := setUpTests(t) + defer cleanup() testGroup := &D{ - group: "group", projectName: "", - projects: map[string]*project{ - "group.test.io": &project{}, - "group.gitlab-example.com": &project{}, - "project": &project{}, - "project2": &project{}, + group: group{ + name: "group", + projects: map[string]*project{ + "group.test.io": &project{}, + "group.gitlab-example.com": &project{}, + "project": &project{}, + "project2": &project{}, + }, }, } @@ -285,17 +301,20 @@ func testHTTP404(t *testing.T, handler http.HandlerFunc, mode, url string, value } func TestGroup404ServeHTTP(t *testing.T) { - setUpTests() + cleanup := setUpTests(t) + defer cleanup() testGroup := &D{ - group: "group.404", projectName: "", - projects: map[string]*project{ - "domain.404": &project{}, - "group.404.test.io": &project{}, - "project.404": &project{}, - "project.404.symlink": &project{}, - "project.no.404": &project{}, + group: group{ + name: "group.404", + projects: map[string]*project{ + "domain.404": &project{}, + "group.404.test.io": &project{}, + "project.404": &project{}, + "project.404.symlink": &project{}, + "project.no.404": &project{}, + }, }, } @@ -311,10 +330,11 @@ func TestGroup404ServeHTTP(t *testing.T) { } func TestDomain404ServeHTTP(t *testing.T) { - setUpTests() + cleanup := setUpTests(t) + defer cleanup() testDomain := &D{ - group: "group.404", + group: group{name: "group.404"}, projectName: "domain.404", config: &domainConfig{ Domain: "domain.404.com", @@ -326,10 +346,11 @@ func TestDomain404ServeHTTP(t *testing.T) { } func TestPredefined404ServeHTTP(t *testing.T) { - setUpTests() + cleanup := setUpTests(t) + defer cleanup() testDomain := &D{ - group: "group", + group: group{name: "group"}, } testHTTP404(t, serveFileOrNotFound(testDomain), "GET", "http://group.test.io/not-existing-file", nil, "The page you're looking for could not be found") @@ -337,7 +358,7 @@ func TestPredefined404ServeHTTP(t *testing.T) { func TestGroupCertificate(t *testing.T) { testGroup := &D{ - group: "group", + group: group{name: "group"}, projectName: "", } @@ -348,7 +369,7 @@ func TestGroupCertificate(t *testing.T) { func TestDomainNoCertificate(t *testing.T) { testDomain := &D{ - group: "group", + group: group{name: "group"}, projectName: "project2", config: &domainConfig{ Domain: "test.domain.com", @@ -366,7 +387,7 @@ func TestDomainNoCertificate(t *testing.T) { func TestDomainCertificate(t *testing.T) { testDomain := &D{ - group: "group", + group: group{name: "group"}, projectName: "project2", config: &domainConfig{ Domain: "test.domain.com", @@ -381,10 +402,15 @@ func TestDomainCertificate(t *testing.T) { } func TestCacheControlHeaders(t *testing.T) { + cleanup := setUpTests(t) + defer cleanup() + testGroup := &D{ - group: "group", - projects: map[string]*project{ - "group.test.io": &project{}, + group: group{ + name: "group", + projects: map[string]*project{ + "group.test.io": &project{}, + }, }, } w := httptest.NewRecorder() @@ -431,15 +457,27 @@ func TestOpenNoFollow(t *testing.T) { var chdirSet = false -func setUpTests() { +func setUpTests(t require.TestingT) func() { + return chdirInPath(t, "../../shared/pages") +} + +func chdirInPath(t require.TestingT, path string) func() { + noOp := func() {} if chdirSet { - return + return noOp } - err := os.Chdir("../../shared/pages") - if err != nil { - log.WithError(err).Print("chdir") - } else { - chdirSet = true + cwd, err := os.Getwd() + require.NoError(t, err, "Cannot Getwd") + + err = os.Chdir(path) + require.NoError(t, err, "Cannot Chdir") + + chdirSet = true + return func() { + err := os.Chdir(cwd) + require.NoError(t, err, "Cannot Chdir in cleanup") + + chdirSet = false } } |