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:
authorJaime Martinez <jmartinez@gitlab.com>2020-08-28 07:31:11 +0300
committerJaime Martinez <jmartinez@gitlab.com>2020-08-28 07:31:11 +0300
commit9474a11af3f797d1fc6da71f929669faa9426b1d (patch)
treecc11b5187975d3ea20e80b4e6218700db7564feb
parent8680dd6889cf601888a7a740e98913ba13e7c102 (diff)
Add domain-config-source acceptance tests
-rw-r--r--acceptance_test.go117
-rw-r--r--helpers_test.go6
2 files changed, 102 insertions, 21 deletions
diff --git a/acceptance_test.go b/acceptance_test.go
index abcf3592..df7210a9 100644
--- a/acceptance_test.go
+++ b/acceptance_test.go
@@ -1711,33 +1711,112 @@ func TestTLSVersions(t *testing.T) {
func TestGitlabDomainsSource(t *testing.T) {
skipUnlessEnabled(t)
- source := NewGitlabDomainsSourceStub(t)
- defer source.Close()
+ t.Run("gitlab_domain_source", func(t *testing.T) {
+ source, apiCalled := NewGitlabDomainsSourceStub(t)
+ defer source.Close()
- gitLabAPISecretKey := CreateGitLabAPISecretKeyFixtureFile(t)
+ gitLabAPISecretKey := CreateGitLabAPISecretKeyFixtureFile(t)
- pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", "gitlab"}
+ pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", "gitlab"}
- teardown := RunPagesProcessWithEnvs(t, true, *pagesBinary, listeners, "", []string{}, pagesArgs...)
- defer teardown()
+ teardown := RunPagesProcessWithEnvs(t, true, *pagesBinary, listeners, "", []string{}, pagesArgs...)
+ defer teardown()
- t.Run("when a domain exists", func(t *testing.T) {
- response, err := GetPageFromListener(t, httpListener, "new-source-test.gitlab.io", "/my/pages/project/")
- require.NoError(t, err)
+ t.Run("when a domain exists", func(t *testing.T) {
+ response, err := GetPageFromListener(t, httpListener, "new-source-test.gitlab.io", "/my/pages/project/")
+ require.NoError(t, err)
- defer response.Body.Close()
- body, err := ioutil.ReadAll(response.Body)
- require.NoError(t, err)
+ defer response.Body.Close()
+ body, err := ioutil.ReadAll(response.Body)
+ require.NoError(t, err)
- require.Equal(t, http.StatusOK, response.StatusCode)
- require.Equal(t, "New Pages GitLab Source TEST OK\n", string(body))
+ require.Equal(t, http.StatusOK, response.StatusCode)
+ require.Equal(t, "New Pages GitLab Source TEST OK\n", string(body))
+ require.True(t, *apiCalled)
+ })
+
+ t.Run("when a domain does not exists", func(t *testing.T) {
+ response, err := GetPageFromListener(t, httpListener, "non-existent-domain.gitlab.io", "/path")
+ defer response.Body.Close()
+ require.NoError(t, err)
+
+ require.Equal(t, http.StatusNotFound, response.StatusCode)
+ require.True(t, *apiCalled)
+ })
})
- t.Run("when a domain does not exists", func(t *testing.T) {
- response, err := GetPageFromListener(t, httpListener, "non-existent-domain.gitlab.io", "/path")
- defer response.Body.Close()
- require.NoError(t, err)
+ t.Run("disk-domain-source", func(t *testing.T) {
+ source, apiCalled := NewGitlabDomainsSourceStub(t)
+ defer source.Close()
+
+ gitLabAPISecretKey := CreateGitLabAPISecretKeyFixtureFile(t)
+
+ pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", "disk"}
+
+ teardown := RunPagesProcessWithEnvs(t, true, *pagesBinary, listeners, "", []string{}, pagesArgs...)
+ defer teardown()
+
+ t.Run("when a domain exists", func(t *testing.T) {
+ // test.domain.com sourced from disk configuration
+ response, err := GetPageFromListener(t, httpListener, "test.domain.com", "/")
+ require.NoError(t, err)
+
+ defer response.Body.Close()
+ body, err := ioutil.ReadAll(response.Body)
+ require.NoError(t, err)
+
+ require.Equal(t, http.StatusOK, response.StatusCode)
+ require.Equal(t, "main-dir\n", string(body))
+
+ // apiCalled == false implies that disk was ready and the configuration was loaded successfully
+ require.False(t, *apiCalled)
+ })
+
+ t.Run("when a domain does not exists", func(t *testing.T) {
+ response, err := GetPageFromListener(t, httpListener, "non-existent-domain.gitlab.io", "/path")
+ defer response.Body.Close()
+ require.NoError(t, err)
+
+ require.Equal(t, http.StatusNotFound, response.StatusCode)
+ require.False(t, *apiCalled)
+ })
+ })
+
+ // TODO: modify mock so we can test auto when API is not ready https://gitlab.com/gitlab-org/gitlab/-/issues/218358
+ t.Run("auto-domain-source", func(t *testing.T) {
+ source, apiCalled := NewGitlabDomainsSourceStub(t)
+ defer source.Close()
+
+ gitLabAPISecretKey := CreateGitLabAPISecretKeyFixtureFile(t)
+
+ pagesArgs := []string{"-gitlab-server", source.URL, "-api-secret-key", gitLabAPISecretKey, "-domain-config-source", "disk"}
+
+ teardown := RunPagesProcessWithEnvs(t, true, *pagesBinary, listeners, "", []string{}, pagesArgs...)
+ defer teardown()
- require.Equal(t, http.StatusNotFound, response.StatusCode)
+ t.Run("when a domain exists", func(t *testing.T) {
+ // test.domain.com sourced from disk configuration
+ response, err := GetPageFromListener(t, httpListener, "test.domain.com", "/")
+ require.NoError(t, err)
+
+ defer response.Body.Close()
+ body, err := ioutil.ReadAll(response.Body)
+ require.NoError(t, err)
+
+ require.Equal(t, http.StatusOK, response.StatusCode)
+ require.Equal(t, "main-dir\n", string(body))
+
+ // apiCalled == false implies that disk was ready and the configuration was loaded successfully
+ require.False(t, *apiCalled)
+ })
+
+ t.Run("when a domain does not exists", func(t *testing.T) {
+ response, err := GetPageFromListener(t, httpListener, "non-existent-domain.gitlab.io", "/path")
+ defer response.Body.Close()
+ require.NoError(t, err)
+
+ require.Equal(t, http.StatusNotFound, response.StatusCode)
+ require.False(t, *apiCalled)
+ })
})
}
diff --git a/helpers_test.go b/helpers_test.go
index a55399f4..16032c38 100644
--- a/helpers_test.go
+++ b/helpers_test.go
@@ -420,13 +420,15 @@ func waitForRoundtrips(t *testing.T, listeners []ListenSpec, timeout time.Durati
require.Equal(t, len(listeners), nListening, "all listeners must be accepting TCP connections")
}
-func NewGitlabDomainsSourceStub(t *testing.T) *httptest.Server {
+func NewGitlabDomainsSourceStub(t *testing.T) (*httptest.Server, *bool) {
+ called := false
mux := http.NewServeMux()
mux.HandleFunc("/api/v4/internal/pages/status", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNoContent)
})
handler := func(w http.ResponseWriter, r *http.Request) {
+ called = true
domain := r.URL.Query().Get("host")
path := "shared/lookups/" + domain + ".json"
@@ -448,7 +450,7 @@ func NewGitlabDomainsSourceStub(t *testing.T) *httptest.Server {
}
mux.HandleFunc("/api/v4/internal/pages", handler)
- return httptest.NewServer(mux)
+ return httptest.NewServer(mux), &called
}
func newConfigFile(configs ...string) (string, error) {