kra-new/internal/modules/system/data/repository/log_file_test.go

51 lines
1.5 KiB
Go

package system
import (
"context"
"errors"
"os"
"path/filepath"
"testing"
"kra/internal/conf"
"kra/internal/modules/system/biz"
)
func TestLogViewerReadsNestedCategoryFiles(t *testing.T) {
root := t.TempDir()
date := "2026-08-16"
path := filepath.Join(root, date, "http", "access.log")
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(path, []byte("first\nsecond\n"), 0o644); err != nil {
t.Fatal(err)
}
runtime := conf.NewRuntime(nil, &conf.AdminBackend{Zap: &conf.AdminBackend_Zap{Director: root}})
repo := &logFileRepo{data: &Data{runtime: runtime}}
files, err := repo.LogFiles(context.Background(), date)
if err != nil {
t.Fatal(err)
}
if len(files) != 1 || files[0].Path != "http/access.log" {
t.Fatalf("unexpected nested log files: %+v", files)
}
content, err := repo.LogContent(context.Background(), date, "http/access.log", nil)
if err != nil {
t.Fatal(err)
}
if content.Content != "first\nsecond\n" || content.LineCount != 2 || content.HasMore {
t.Fatalf("unexpected log content: %+v", content)
}
}
func TestLogViewerRejectsPathTraversal(t *testing.T) {
runtime := conf.NewRuntime(nil, &conf.AdminBackend{Zap: &conf.AdminBackend_Zap{Director: t.TempDir()}})
repo := &logFileRepo{data: &Data{runtime: runtime}}
_, err := repo.LogContent(context.Background(), "2026-08-16", "../application.log", nil)
if !errors.Is(err, biz.ErrInvalidLogPath) {
t.Fatalf("expected invalid path error, got %v", err)
}
}