65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
package web
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func TestBuildPageConsoleDataFiltersCommonFields(t *testing.T) {
|
|
payload := buildPageConsoleData("/detail/example", http.StatusOK, "detail.html", gin.H{
|
|
"title": "示例短剧",
|
|
"detail": gin.H{"id": 12, "slug": "example"},
|
|
"appConfig": "public config",
|
|
"headerNav": "navigation",
|
|
"footer": "footer data",
|
|
"pageConsoleData": "old payload",
|
|
})
|
|
|
|
if payload["path"] != "/detail/example" || payload["status"] != http.StatusOK || payload["template"] != "detail.html" {
|
|
t.Fatalf("unexpected page console metadata: %#v", payload)
|
|
}
|
|
pageData, ok := payload["data"].(gin.H)
|
|
if !ok {
|
|
t.Fatalf("payload data type = %T, want gin.H", payload["data"])
|
|
}
|
|
if _, ok := pageData["detail"]; !ok {
|
|
t.Fatalf("page response data was removed: %#v", pageData)
|
|
}
|
|
if payload["headerNav"] != "navigation" || payload["footer"] != "footer data" {
|
|
t.Fatalf("common navigation/footer data missing: %#v", payload)
|
|
}
|
|
for _, key := range []string{"appConfig", "headerNav", "pageConsoleData"} {
|
|
if _, ok := pageData[key]; ok {
|
|
t.Fatalf("excluded key %q remains in console data: %#v", key, pageData)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSetNoIndexAndPageNoIndex(t *testing.T) {
|
|
data := gin.H{}
|
|
setNoIndex(data, false)
|
|
if data["robots"] != "noindex,nofollow" || !pageNoIndex(data) {
|
|
t.Fatalf("noindex policy was not applied: %#v", data)
|
|
}
|
|
|
|
if pageNoIndex(gin.H{"robots": "index,follow"}) {
|
|
t.Fatal("indexable robots value was treated as noindex")
|
|
}
|
|
}
|
|
|
|
func TestRichtextIndexPolicy(t *testing.T) {
|
|
publicData := gin.H{}
|
|
applyRichtextIndexPolicy(publicData, "关于我们")
|
|
if pageNoIndex(publicData) {
|
|
t.Fatal("about page should remain indexable")
|
|
}
|
|
|
|
legalData := gin.H{}
|
|
applyRichtextIndexPolicy(legalData, "隐私政策")
|
|
if !pageNoIndex(legalData) || legalData["robots"] != "noindex,follow" {
|
|
t.Fatalf("privacy page policy = %#v, want noindex,follow", legalData)
|
|
}
|
|
}
|