aboutsummaryrefslogtreecommitdiffstats
path: root/modules/httpcache/httpcache_test.go
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-05-13 22:04:57 +0800
committerGitHub <noreply@github.com>2023-05-13 16:04:57 +0200
commita94a8d0ab1f6c9d63ae607dfec866c47ae3e4b5c (patch)
tree84c1e5e4f3423ed952b573ab1403844de2951cb7 /modules/httpcache/httpcache_test.go
parentf74501609246646a3ab62b37a1e7469d6fea63b7 (diff)
downloadgitea-a94a8d0ab1f6c9d63ae607dfec866c47ae3e4b5c.tar.gz
gitea-a94a8d0ab1f6c9d63ae607dfec866c47ae3e4b5c.zip
Use standard HTTP library to serve files (#24693)
`http.ServeFile/ServeContent` handles `If-xxx`, `Content-Length`, `Range` and `Etag` correctly After this PR, storage files (eg: avatar) could be responded with correct Content-Length.
Diffstat (limited to 'modules/httpcache/httpcache_test.go')
-rw-r--r--modules/httpcache/httpcache_test.go57
1 files changed, 0 insertions, 57 deletions
diff --git a/modules/httpcache/httpcache_test.go b/modules/httpcache/httpcache_test.go
index 624d2f4d4b..d81f06097c 100644
--- a/modules/httpcache/httpcache_test.go
+++ b/modules/httpcache/httpcache_test.go
@@ -6,23 +6,12 @@ package httpcache
import (
"net/http"
"net/http/httptest"
- "os"
"strings"
"testing"
- "time"
"github.com/stretchr/testify/assert"
)
-type mockFileInfo struct{}
-
-func (m mockFileInfo) Name() string { return "gitea.test" }
-func (m mockFileInfo) Size() int64 { return int64(10) }
-func (m mockFileInfo) Mode() os.FileMode { return os.ModePerm }
-func (m mockFileInfo) ModTime() time.Time { return time.Time{} }
-func (m mockFileInfo) IsDir() bool { return false }
-func (m mockFileInfo) Sys() interface{} { return nil }
-
func countFormalHeaders(h http.Header) (c int) {
for k := range h {
// ignore our headers for internal usage
@@ -34,52 +23,6 @@ func countFormalHeaders(h http.Header) (c int) {
return c
}
-func TestHandleFileETagCache(t *testing.T) {
- fi := mockFileInfo{}
- etag := `"MTBnaXRlYS50ZXN0TW9uLCAwMSBKYW4gMDAwMSAwMDowMDowMCBHTVQ="`
-
- t.Run("No_If-None-Match", func(t *testing.T) {
- req := &http.Request{Header: make(http.Header)}
- w := httptest.NewRecorder()
-
- handled := HandleFileETagCache(req, w, fi)
-
- assert.False(t, handled)
- assert.Equal(t, 2, countFormalHeaders(w.Header()))
- assert.Contains(t, w.Header(), "Cache-Control")
- assert.Contains(t, w.Header(), "Etag")
- assert.Equal(t, etag, w.Header().Get("Etag"))
- })
- t.Run("Wrong_If-None-Match", func(t *testing.T) {
- req := &http.Request{Header: make(http.Header)}
- w := httptest.NewRecorder()
-
- req.Header.Set("If-None-Match", `"wrong etag"`)
-
- handled := HandleFileETagCache(req, w, fi)
-
- assert.False(t, handled)
- assert.Equal(t, 2, countFormalHeaders(w.Header()))
- assert.Contains(t, w.Header(), "Cache-Control")
- assert.Contains(t, w.Header(), "Etag")
- assert.Equal(t, etag, w.Header().Get("Etag"))
- })
- t.Run("Correct_If-None-Match", func(t *testing.T) {
- req := &http.Request{Header: make(http.Header)}
- w := httptest.NewRecorder()
-
- req.Header.Set("If-None-Match", etag)
-
- handled := HandleFileETagCache(req, w, fi)
-
- assert.True(t, handled)
- assert.Equal(t, 1, countFormalHeaders(w.Header()))
- assert.Contains(t, w.Header(), "Etag")
- assert.Equal(t, etag, w.Header().Get("Etag"))
- assert.Equal(t, http.StatusNotModified, w.Code)
- })
-}
-
func TestHandleGenericETagCache(t *testing.T) {
etag := `"test"`