Files
Prism/internal/mihomoapi/connections_test.go
T
renjue 2780eaf30c
CI / test (push) Successful in 1m55s
CI / docker (push) Failing after 24s
feat: Prism HTTP/SOCKS5 代理网关及管理台
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 15:11:50 +08:00

59 lines
1.3 KiB
Go

package mihomoapi
import (
"testing"
"time"
)
func TestParseConnectionSnapshot(t *testing.T) {
raw := []byte(`{
"downloadTotal": 200,
"uploadTotal": 100,
"connections": [{
"id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"metadata": {
"network": "tcp",
"type": "HTTP",
"sourceIP": "127.0.0.1",
"destinationIP": "142.250.185.78",
"destinationPort": "443",
"host": "www.google.com"
},
"upload": 100,
"download": 200,
"start": "2026-06-16T10:00:00Z",
"chains": ["DIRECT"],
"rule": "DOMAIN",
"rulePayload": "google.com"
}],
"memory": 0
}`)
snap, err := ParseConnectionSnapshot(raw)
if err != nil {
t.Fatalf("parse failed: %v", err)
}
if len(snap.Connections) != 1 {
t.Fatalf("expected 1 connection, got %d", len(snap.Connections))
}
conn := snap.Connections[0]
if conn.ID == "" {
t.Fatal("expected connection id")
}
if conn.Metadata.DestinationPort != "443" {
t.Fatalf("destination port: %q", conn.Metadata.DestinationPort)
}
if conn.RequestHost() != "www.google.com" {
t.Fatalf("host: %q", conn.RequestHost())
}
if conn.OutboundNode() != "DIRECT" {
t.Fatalf("outbound: %q", conn.OutboundNode())
}
if conn.Start.IsZero() {
t.Fatal("expected start time")
}
if conn.Start.UTC() != time.Date(2026, 6, 16, 10, 0, 0, 0, time.UTC) {
t.Fatalf("unexpected start: %v", conn.Start)
}
}