2023-06-03 19:33:06 +01:00
|
|
|
package favicons
|
|
|
|
|
|
|
|
import (
|
2023-06-05 17:26:56 +01:00
|
|
|
"bytes"
|
2024-03-08 16:05:39 +00:00
|
|
|
"context"
|
2023-06-03 19:33:06 +01:00
|
|
|
"database/sql"
|
|
|
|
_ "embed"
|
2024-03-08 16:05:39 +00:00
|
|
|
"github.com/1f349/violet"
|
|
|
|
"github.com/1f349/violet/database"
|
2023-06-03 19:33:06 +01:00
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
|
|
"github.com/stretchr/testify/assert"
|
2023-06-05 17:26:56 +01:00
|
|
|
"image/png"
|
2023-06-03 19:33:06 +01:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
//go:embed example.svg
|
|
|
|
exampleSvg []byte
|
|
|
|
//go:embed example.png
|
|
|
|
examplePng []byte
|
|
|
|
//go:embed example.ico
|
|
|
|
exampleIco []byte
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestFaviconsNew(t *testing.T) {
|
|
|
|
getFaviconViaRequest = func(_ string) ([]byte, error) { return exampleSvg, nil }
|
|
|
|
|
2024-03-08 16:05:39 +00:00
|
|
|
db, err := violet.InitDB("file:TestFaviconsNew?mode=memory&cache=shared")
|
2023-06-03 19:33:06 +01:00
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
favicons := New(db, "inkscape")
|
2024-03-08 16:05:39 +00:00
|
|
|
err = db.UpdateFaviconCache(context.Background(), database.UpdateFaviconCacheParams{
|
|
|
|
Host: "example.com",
|
|
|
|
Svg: sql.NullString{
|
|
|
|
String: "https://example.com/assets/logo.svg",
|
|
|
|
Valid: true,
|
|
|
|
},
|
|
|
|
})
|
2023-06-03 19:33:06 +01:00
|
|
|
assert.NoError(t, err)
|
|
|
|
favicons.cLock.Lock()
|
|
|
|
assert.NoError(t, favicons.internalCompile(favicons.faviconMap))
|
|
|
|
favicons.cLock.Unlock()
|
|
|
|
|
|
|
|
icons := favicons.GetIcons("example.com")
|
|
|
|
assert.Equal(t, "https://example.com/assets/logo.svg", icons.Svg.Url)
|
|
|
|
|
|
|
|
assert.Equal(t, "74cdc17d0502a690941799c327d9ca1ed042e76c784def43a42937f2eed270b4", icons.Svg.Hash)
|
2023-06-05 00:22:04 +01:00
|
|
|
assert.NotEqual(t, "", icons.Png.Hash)
|
|
|
|
assert.NotEqual(t, "", icons.Ico.Hash)
|
2023-06-05 17:26:56 +01:00
|
|
|
|
|
|
|
// verify png bytes are a valid png image
|
|
|
|
pngRaw := bytes.NewBuffer(icons.Png.Raw)
|
|
|
|
_, err = png.Decode(pngRaw)
|
|
|
|
assert.NoError(t, err)
|
2023-06-03 19:33:06 +01:00
|
|
|
}
|