code.gitea.io/gitea@v1.22.3/tests/integration/download_test.go (about) 1 // Copyright 2018 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package integration 5 6 import ( 7 "net/http" 8 "testing" 9 10 "code.gitea.io/gitea/modules/setting" 11 "code.gitea.io/gitea/tests" 12 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func TestDownloadByID(t *testing.T) { 17 defer tests.PrepareTestEnv(t)() 18 19 session := loginUser(t, "user2") 20 21 // Request raw blob 22 req := NewRequest(t, "GET", "/user2/repo1/raw/blob/4b4851ad51df6a7d9f25c979345979eaeb5b349f") 23 resp := session.MakeRequest(t, req, http.StatusOK) 24 25 assert.Equal(t, "# repo1\n\nDescription for repo1", resp.Body.String()) 26 } 27 28 func TestDownloadByIDForSVGUsesSecureHeaders(t *testing.T) { 29 defer tests.PrepareTestEnv(t)() 30 31 session := loginUser(t, "user2") 32 33 // Request raw blob 34 req := NewRequest(t, "GET", "/user2/repo2/raw/blob/6395b68e1feebb1e4c657b4f9f6ba2676a283c0b") 35 resp := session.MakeRequest(t, req, http.StatusOK) 36 37 assert.Equal(t, "default-src 'none'; style-src 'unsafe-inline'; sandbox", resp.Header().Get("Content-Security-Policy")) 38 assert.Equal(t, "image/svg+xml", resp.Header().Get("Content-Type")) 39 assert.Equal(t, "nosniff", resp.Header().Get("X-Content-Type-Options")) 40 } 41 42 func TestDownloadByIDMedia(t *testing.T) { 43 defer tests.PrepareTestEnv(t)() 44 45 session := loginUser(t, "user2") 46 47 // Request raw blob 48 req := NewRequest(t, "GET", "/user2/repo1/media/blob/4b4851ad51df6a7d9f25c979345979eaeb5b349f") 49 resp := session.MakeRequest(t, req, http.StatusOK) 50 51 assert.Equal(t, "# repo1\n\nDescription for repo1", resp.Body.String()) 52 } 53 54 func TestDownloadByIDMediaForSVGUsesSecureHeaders(t *testing.T) { 55 defer tests.PrepareTestEnv(t)() 56 57 session := loginUser(t, "user2") 58 59 // Request raw blob 60 req := NewRequest(t, "GET", "/user2/repo2/media/blob/6395b68e1feebb1e4c657b4f9f6ba2676a283c0b") 61 resp := session.MakeRequest(t, req, http.StatusOK) 62 63 assert.Equal(t, "default-src 'none'; style-src 'unsafe-inline'; sandbox", resp.Header().Get("Content-Security-Policy")) 64 assert.Equal(t, "image/svg+xml", resp.Header().Get("Content-Type")) 65 assert.Equal(t, "nosniff", resp.Header().Get("X-Content-Type-Options")) 66 } 67 68 func TestDownloadRawTextFileWithoutMimeTypeMapping(t *testing.T) { 69 defer tests.PrepareTestEnv(t)() 70 71 session := loginUser(t, "user2") 72 73 req := NewRequest(t, "GET", "/user2/repo2/raw/branch/master/test.xml") 74 resp := session.MakeRequest(t, req, http.StatusOK) 75 76 assert.Equal(t, "text/plain; charset=utf-8", resp.Header().Get("Content-Type")) 77 } 78 79 func TestDownloadRawTextFileWithMimeTypeMapping(t *testing.T) { 80 defer tests.PrepareTestEnv(t)() 81 setting.MimeTypeMap.Map[".xml"] = "text/xml" 82 setting.MimeTypeMap.Enabled = true 83 84 session := loginUser(t, "user2") 85 86 req := NewRequest(t, "GET", "/user2/repo2/raw/branch/master/test.xml") 87 resp := session.MakeRequest(t, req, http.StatusOK) 88 89 assert.Equal(t, "text/xml; charset=utf-8", resp.Header().Get("Content-Type")) 90 91 delete(setting.MimeTypeMap.Map, ".xml") 92 setting.MimeTypeMap.Enabled = false 93 }