Files
silk/server-go/internal/handler/knowledge_image_test.go
T

67 lines
1.6 KiB
Go

package handler
import (
"strings"
"testing"
)
func TestValidateImageFileRejectsOversize(t *testing.T) {
if err := validateImageFile("a.png", maxImageSize+1); err == nil {
t.Error("超过 5MB 的图片应被拒绝")
}
}
func TestValidateImageFileRejectsEmptyAndBadExt(t *testing.T) {
if err := validateImageFile("a.png", 0); err == nil {
t.Error("空文件应被拒绝")
}
if err := validateImageFile("a.txt", 1024); err == nil {
t.Error("非图片扩展名应被拒绝")
}
}
func TestValidateImageFileAcceptsAllowed(t *testing.T) {
for _, name := range []string{"a.jpg", "a.jpeg", "a.png", "a.webp"} {
if err := validateImageFile(name, 1024); err != nil {
t.Errorf("%s 应被允许: %v", name, err)
}
}
}
func TestImageContentType(t *testing.T) {
cases := map[string]string{
".jpg": "image/jpeg",
".jpeg": "image/jpeg",
".png": "image/png",
".webp": "image/webp",
}
for ext, want := range cases {
got, ok := imageContentType(ext)
if !ok || got != want {
t.Errorf("imageContentType(%s) = %q, %v; want %q", ext, got, ok, want)
}
}
if _, ok := imageContentType(".gif"); ok {
t.Error(".gif 不应被支持")
}
}
func TestBuildImageKey(t *testing.T) {
key, ext, err := buildImageKey("病蚕照片.PNG")
if err != nil {
t.Fatalf("buildImageKey 失败: %v", err)
}
if !strings.HasPrefix(key, "knowledge/") {
t.Errorf("key 应以 knowledge/ 开头: %s", key)
}
if !strings.HasSuffix(key, ".png") {
t.Errorf("key 应以 .png 结尾: %s", key)
}
if ext != ".png" {
t.Errorf("ext = %s, want .png", ext)
}
if len(key) <= len("knowledge/")+8 {
t.Errorf("key 应包含日期与随机部分: %s", key)
}
}