70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"scratchbox/internal/config"
|
|
)
|
|
|
|
func TestNewAccessLogWriterDisabled(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
cfg := config.Default()
|
|
cfg.Server.AccessLog.Enabled = false
|
|
writer, closeFn, err := newAccessLogWriter(cfg)
|
|
if err != nil {
|
|
t.Fatalf("newAccessLogWriter() error = %v", err)
|
|
}
|
|
if writer == nil {
|
|
t.Fatalf("newAccessLogWriter() writer = nil")
|
|
}
|
|
if err := closeFn(); err != nil {
|
|
t.Fatalf("closeFn() error = %v", err)
|
|
}
|
|
}
|
|
|
|
func TestRollingFileWriterRotatesAndKeepsBackups(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
logPath := filepath.Join(t.TempDir(), "access.log")
|
|
w, err := newRollingFileWriter(logPath, 10, 2)
|
|
if err != nil {
|
|
t.Fatalf("newRollingFileWriter() error = %v", err)
|
|
}
|
|
defer w.Close()
|
|
|
|
_, _ = w.Write([]byte("12345"))
|
|
_, _ = w.Write([]byte("67890"))
|
|
_, _ = w.Write([]byte("abc"))
|
|
_, _ = w.Write([]byte("defghijkl"))
|
|
|
|
if err := w.Close(); err != nil {
|
|
t.Fatalf("Close() error = %v", err)
|
|
}
|
|
|
|
current, err := os.ReadFile(logPath)
|
|
if err != nil {
|
|
t.Fatalf("ReadFile(current) error = %v", err)
|
|
}
|
|
backup1, err := os.ReadFile(logPath + ".1")
|
|
if err != nil {
|
|
t.Fatalf("ReadFile(backup1) error = %v", err)
|
|
}
|
|
backup2, err := os.ReadFile(logPath + ".2")
|
|
if err != nil {
|
|
t.Fatalf("ReadFile(backup2) error = %v", err)
|
|
}
|
|
if !bytes.Equal(current, []byte("defghijkl")) {
|
|
t.Fatalf("current log = %q, want %q", string(current), "defghijkl")
|
|
}
|
|
if !bytes.Equal(backup1, []byte("abc")) {
|
|
t.Fatalf("backup1 log = %q, want %q", string(backup1), "abc")
|
|
}
|
|
if !bytes.Equal(backup2, []byte("1234567890")) {
|
|
t.Fatalf("backup2 log = %q, want %q", string(backup2), "1234567890")
|
|
}
|
|
}
|