ntfy/util/embedfs_test.go

45 lines
1.1 KiB
Go

package util
import (
"embed"
"github.com/stretchr/testify/require"
"net/http"
"net/http/httptest"
"testing"
"time"
)
var (
modTime = time.Now()
//go:embed embedfs
testFs embed.FS
testFsCached = &CachingEmbedFS{ModTime: modTime, FS: testFs}
)
func TestCachingEmbedFS(t *testing.T) {
s := http.FileServer(http.FS(testFsCached))
rr := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/embedfs/test.txt", nil)
s.ServeHTTP(rr, req)
require.Equal(t, 200, rr.Code)
lastModified := rr.Header().Get("Last-Modified")
rr = httptest.NewRecorder()
req, _ = http.NewRequest("GET", "/embedfs/test.txt", nil)
req.Header.Set("If-Modified-Since", lastModified)
s.ServeHTTP(rr, req)
require.Equal(t, 304, rr.Code) // Huzzah!
}
func TestCachingEmbedFS_Range(t *testing.T) {
s := http.FileServer(http.FS(testFsCached))
rr := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/embedfs/test.txt", nil)
req.Header.Set("Range", "bytes=1-20")
s.ServeHTTP(rr, req)
require.Equal(t, 206, rr.Code)
require.Equal(t, "his is a test file f", rr.Body.String())
}