mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 14:06:36 +08:00
101 lines
2.4 KiB
Go
101 lines
2.4 KiB
Go
package service
|
|
|
|
import (
|
|
"openflare/model"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestListAccessLogsIncludesSummaryTotals(t *testing.T) {
|
|
setupServiceTestDB(t)
|
|
|
|
now := time.Now()
|
|
if err := model.DB.Create(&model.Node{
|
|
NodeID: "node-a",
|
|
Name: "edge-a",
|
|
}).Error; err != nil {
|
|
t.Fatalf("failed to seed node-a: %v", err)
|
|
}
|
|
if err := model.DB.Create(&model.Node{
|
|
NodeID: "node-b",
|
|
Name: "edge-b",
|
|
}).Error; err != nil {
|
|
t.Fatalf("failed to seed node-b: %v", err)
|
|
}
|
|
|
|
logs := []*model.NodeAccessLog{
|
|
{
|
|
NodeID: "node-a",
|
|
LoggedAt: now.Add(-5 * time.Minute),
|
|
RemoteAddr: "1.1.1.1",
|
|
Region: "United States",
|
|
Host: "a.example.com",
|
|
Path: "/alpha",
|
|
StatusCode: 200,
|
|
},
|
|
{
|
|
NodeID: "node-a",
|
|
LoggedAt: now.Add(-4 * time.Minute),
|
|
RemoteAddr: "2.2.2.2",
|
|
Region: "China",
|
|
Host: "a.example.com",
|
|
Path: "/beta",
|
|
StatusCode: 404,
|
|
},
|
|
{
|
|
NodeID: "node-b",
|
|
LoggedAt: now.Add(-3 * time.Minute),
|
|
RemoteAddr: "1.1.1.1",
|
|
Region: "United States",
|
|
Host: "b.example.com",
|
|
Path: "/gamma",
|
|
StatusCode: 502,
|
|
},
|
|
{
|
|
NodeID: "node-b",
|
|
LoggedAt: now.Add(-2 * time.Minute),
|
|
RemoteAddr: "",
|
|
Host: "b.example.com",
|
|
Path: "/delta",
|
|
StatusCode: 200,
|
|
},
|
|
}
|
|
if err := model.DB.Create(&logs).Error; err != nil {
|
|
t.Fatalf("failed to seed access logs: %v", err)
|
|
}
|
|
|
|
result, err := ListAccessLogs("", 0, 2)
|
|
if err != nil {
|
|
t.Fatalf("ListAccessLogs failed: %v", err)
|
|
}
|
|
if result.TotalRecord != 4 {
|
|
t.Fatalf("expected total_record=4, got %d", result.TotalRecord)
|
|
}
|
|
if result.TotalIP != 2 {
|
|
t.Fatalf("expected total_ip=2, got %d", result.TotalIP)
|
|
}
|
|
if len(result.Items) != 2 {
|
|
t.Fatalf("expected current page items=2, got %d", len(result.Items))
|
|
}
|
|
if result.Items[1].Region == "" {
|
|
t.Fatalf("expected region to be returned, got %+v", result.Items[1])
|
|
}
|
|
if !result.HasMore {
|
|
t.Fatal("expected has_more to be true")
|
|
}
|
|
|
|
filtered, err := ListAccessLogs("node-a", 0, 50)
|
|
if err != nil {
|
|
t.Fatalf("ListAccessLogs filtered failed: %v", err)
|
|
}
|
|
if filtered.TotalRecord != 2 {
|
|
t.Fatalf("expected filtered total_record=2, got %d", filtered.TotalRecord)
|
|
}
|
|
if filtered.TotalIP != 2 {
|
|
t.Fatalf("expected filtered total_ip=2, got %d", filtered.TotalIP)
|
|
}
|
|
if len(filtered.Items) != 2 {
|
|
t.Fatalf("expected filtered items=2, got %d", len(filtered.Items))
|
|
}
|
|
}
|