mirror of https://github.com/portainer/portainer
71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package file_test
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/portainer/portainer/api/http/handler/file"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNormalServe(t *testing.T) {
|
|
handler := file.NewHandler("", false, func() bool { return false })
|
|
require.NotNil(t, handler)
|
|
|
|
request := func(path string) (*http.Request, *httptest.ResponseRecorder) {
|
|
rr := httptest.NewRecorder()
|
|
req := httptest.NewRequest(http.MethodGet, path, nil)
|
|
handler.ServeHTTP(rr, req)
|
|
return req, rr
|
|
}
|
|
|
|
_, rr := request("/timeout.html")
|
|
require.Equal(t, http.StatusTemporaryRedirect, rr.Result().StatusCode)
|
|
loc, err := rr.Result().Location()
|
|
require.NoError(t, err)
|
|
require.NotNil(t, loc)
|
|
require.Equal(t, "/", loc.Path)
|
|
|
|
_, rr = request("/")
|
|
require.Equal(t, http.StatusOK, rr.Result().StatusCode)
|
|
}
|
|
|
|
func TestPermissionsPolicyHeader(t *testing.T) {
|
|
handler := file.NewHandler("", false, func() bool { return false })
|
|
require.NotNil(t, handler)
|
|
|
|
test := func(path string, exist bool) {
|
|
rr := httptest.NewRecorder()
|
|
req := httptest.NewRequest(http.MethodGet, path, nil)
|
|
handler.ServeHTTP(rr, req)
|
|
|
|
require.Equal(t, exist, rr.Result().Header.Get("Permissions-Policy") != "")
|
|
}
|
|
|
|
test("/", true)
|
|
test("/index.html", true)
|
|
test("/api", false)
|
|
test("/an/image.png", false)
|
|
}
|
|
|
|
func TestRedirectInstanceDisabled(t *testing.T) {
|
|
handler := file.NewHandler("", false, func() bool { return true })
|
|
require.NotNil(t, handler)
|
|
|
|
test := func(path string) {
|
|
rr := httptest.NewRecorder()
|
|
req := httptest.NewRequest(http.MethodGet, path, nil)
|
|
handler.ServeHTTP(rr, req)
|
|
|
|
require.Equal(t, http.StatusTemporaryRedirect, rr.Result().StatusCode)
|
|
loc, err := rr.Result().Location()
|
|
require.NoError(t, err)
|
|
require.NotNil(t, loc)
|
|
require.Equal(t, "/timeout.html", loc.Path)
|
|
}
|
|
|
|
test("/")
|
|
test("/index.html")
|
|
}
|