From b595cb0c1dec83de5bdee18284abe86614bed33b Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 20 Jul 2022 15:40:28 +0000 Subject: Add latest changes from gitlab-org/gitlab@15-2-stable-ee --- workhorse/upload_test.go | 63 +++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 22 deletions(-) (limited to 'workhorse/upload_test.go') diff --git a/workhorse/upload_test.go b/workhorse/upload_test.go index dedda4ea655..9947059770f 100644 --- a/workhorse/upload_test.go +++ b/workhorse/upload_test.go @@ -20,6 +20,7 @@ import ( "gitlab.com/gitlab-org/gitlab/workhorse/internal/secret" "gitlab.com/gitlab-org/gitlab/workhorse/internal/testhelper" "gitlab.com/gitlab-org/gitlab/workhorse/internal/upload" + "gitlab.com/gitlab-org/gitlab/workhorse/internal/upload/destination" ) type uploadArtifactsFunction func(url, contentType string, body io.Reader) (*http.Response, string, error) @@ -82,7 +83,13 @@ func uploadTestServer(t *testing.T, authorizeTests func(r *http.Request), extraT require.NoError(t, r.ParseMultipartForm(100000)) - const nValues = 11 // file name, path, remote_url, remote_id, size, md5, sha1, sha256, sha512, upload_duration, gitlab-workhorse-upload for just the upload (no metadata because we are not POSTing a valid zip file) + var nValues int // file name, path, remote_url, remote_id, size, md5, sha1, sha256, sha512, upload_duration, gitlab-workhorse-upload for just the upload (no metadata because we are not POSTing a valid zip file) + if destination.FIPSEnabled() { + nValues = 10 + } else { + nValues = 11 + } + require.Len(t, r.MultipartForm.Value, nValues) require.Empty(t, r.MultipartForm.File, "multipart form files") @@ -183,7 +190,11 @@ func TestAcceleratedUpload(t *testing.T) { require.Contains(t, uploadFields, "remote_url") require.Contains(t, uploadFields, "remote_id") require.Contains(t, uploadFields, "size") - require.Contains(t, uploadFields, "md5") + if destination.FIPSEnabled() { + require.NotContains(t, uploadFields, "md5") + } else { + require.Contains(t, uploadFields, "md5") + } require.Contains(t, uploadFields, "sha1") require.Contains(t, uploadFields, "sha256") require.Contains(t, uploadFields, "sha512") @@ -287,30 +298,38 @@ func TestBlockingRewrittenFieldsHeader(t *testing.T) { } for _, tc := range testCases { - ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) { - key := upload.RewrittenFieldsHeader - if tc.present && r.URL.Path != "/api/v4/internal/workhorse/authorize_upload" { - require.Contains(t, r.Header, key) - } else { - require.NotContains(t, r.Header, key) - } + t.Run(tc.desc, func(t *testing.T) { + ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case "/api/v4/internal/workhorse/authorize_upload": + w.Header().Set("Content-Type", api.ResponseContentType) + io.WriteString(w, `{"TempPath":"`+os.TempDir()+`"}`) + default: + if tc.present { + require.Contains(t, r.Header, upload.RewrittenFieldsHeader) + } else { + require.NotContains(t, r.Header, upload.RewrittenFieldsHeader) - require.NotEqual(t, canary, r.Header.Get(key), "Found canary %q in header %q", canary, key) - }) - defer ts.Close() - ws := startWorkhorseServer(ts.URL) - defer ws.Close() + } + } + + require.NotEqual(t, canary, r.Header.Get(upload.RewrittenFieldsHeader), "Found canary %q in header", canary) + }) + defer ts.Close() + ws := startWorkhorseServer(ts.URL) + defer ws.Close() - req, err := http.NewRequest("POST", ws.URL+"/something", tc.body) - require.NoError(t, err) + req, err := http.NewRequest("POST", ws.URL+"/something", tc.body) + require.NoError(t, err) - req.Header.Set("Content-Type", tc.contentType) - req.Header.Set(upload.RewrittenFieldsHeader, canary) - resp, err := http.DefaultClient.Do(req) - require.NoError(t, err) - defer resp.Body.Close() + req.Header.Set("Content-Type", tc.contentType) + req.Header.Set(upload.RewrittenFieldsHeader, canary) + resp, err := http.DefaultClient.Do(req) + require.NoError(t, err) + defer resp.Body.Close() - require.Equal(t, 200, resp.StatusCode, "status code") + require.Equal(t, 200, resp.StatusCode, "status code") + }) } } -- cgit v1.2.3