mirror of
https://github.com/dutchcoders/transfer.sh.git
synced 2024-12-11 13:20:19 +01:00
cb6e5cb0c7
* use dep for vendoring * lets encrypt * moved web to transfer.sh-web repo * single command install * added first tests
72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestFavicon(t *testing.T) {
|
|
s := httptest.NewServer(FaviconHandlerFunc(
|
|
func(w http.ResponseWriter, r *http.Request) {
|
|
w.Write([]byte("ok"))
|
|
}, "./testdata/favicon.ico", time.Second))
|
|
defer s.Close()
|
|
|
|
res, err := http.Get(s.URL + "/favicon.ico")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer res.Body.Close()
|
|
assertStatus(http.StatusOK, res.StatusCode, t)
|
|
assertHeader("Content-Type", "image/x-icon", res, t)
|
|
assertHeader("Cache-Control", "public, max-age=1", res, t)
|
|
assertHeader("Content-Length", "1406", res, t)
|
|
}
|
|
|
|
func TestFaviconInvalidPath(t *testing.T) {
|
|
s := httptest.NewServer(FaviconHandlerFunc(
|
|
func(w http.ResponseWriter, r *http.Request) {
|
|
w.Write([]byte("ok"))
|
|
}, "./testdata/xfavicon.ico", time.Second))
|
|
defer s.Close()
|
|
|
|
res, err := http.Get(s.URL + "/favicon.ico")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer res.Body.Close()
|
|
assertStatus(http.StatusNotFound, res.StatusCode, t)
|
|
}
|
|
|
|
func TestFaviconFromCache(t *testing.T) {
|
|
s := httptest.NewServer(FaviconHandlerFunc(
|
|
func(w http.ResponseWriter, r *http.Request) {
|
|
w.Write([]byte("ok"))
|
|
}, "./testdata/favicon.ico", time.Second))
|
|
defer s.Close()
|
|
|
|
res, err := http.Get(s.URL + "/favicon.ico")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer res.Body.Close()
|
|
|
|
// Rename the file temporarily
|
|
err = os.Rename("./testdata/favicon.ico", "./testdata/xfavicon.ico")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer os.Rename("./testdata/xfavicon.ico", "./testdata/favicon.ico")
|
|
res, err = http.Get(s.URL + "/favicon.ico")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer res.Body.Close()
|
|
assertStatus(http.StatusOK, res.StatusCode, t)
|
|
assertHeader("Content-Type", "image/x-icon", res, t)
|
|
assertHeader("Cache-Control", "public, max-age=1", res, t)
|
|
assertHeader("Content-Length", "1406", res, t)
|
|
}
|