Files
Mellaris/ruleset/interface_test.go

122 lines
2.5 KiB
Go

package ruleset
import (
"net"
"testing"
"git.difuse.io/Difuse/Mellaris/analyzer"
)
func TestAction_String(t *testing.T) {
tests := []struct {
action Action
want string
}{
{ActionMaybe, "maybe"},
{ActionAllow, "allow"},
{ActionBlock, "block"},
{ActionDrop, "drop"},
{ActionModify, "modify"},
{Action(99), "unknown"},
}
for _, tt := range tests {
t.Run(tt.want, func(t *testing.T) {
if got := tt.action.String(); got != tt.want {
t.Errorf("Action.String() = %q, want %q", got, tt.want)
}
})
}
}
func TestProtocol_String(t *testing.T) {
tests := []struct {
protocol Protocol
want string
}{
{ProtocolTCP, "tcp"},
{ProtocolUDP, "udp"},
{Protocol(99), "unknown"},
}
for _, tt := range tests {
t.Run(tt.want, func(t *testing.T) {
if got := tt.protocol.String(); got != tt.want {
t.Errorf("Protocol.String() = %q, want %q", got, tt.protocol)
}
})
}
}
func TestProtocol_Constants(t *testing.T) {
if ProtocolTCP != 0 {
t.Errorf("ProtocolTCP = %d, want 0", ProtocolTCP)
}
if ProtocolUDP != 1 {
t.Errorf("ProtocolUDP = %d, want 1", ProtocolUDP)
}
}
func TestAction_Constants(t *testing.T) {
if ActionMaybe != 0 {
t.Errorf("ActionMaybe = %d, want 0", ActionMaybe)
}
if ActionAllow != 1 {
t.Errorf("ActionAllow = %d, want 1", ActionAllow)
}
if ActionBlock != 2 {
t.Errorf("ActionBlock = %d, want 2", ActionBlock)
}
}
func TestStreamInfo_SrcString(t *testing.T) {
info := StreamInfo{
SrcIP: net.ParseIP("192.168.1.1"),
SrcPort: 8080,
}
want := "192.168.1.1:8080"
if got := info.SrcString(); got != want {
t.Errorf("SrcString() = %q, want %q", got, want)
}
}
func TestStreamInfo_DstString(t *testing.T) {
info := StreamInfo{
DstIP: net.ParseIP("10.0.0.1"),
DstPort: 443,
}
want := "10.0.0.1:443"
if got := info.DstString(); got != want {
t.Errorf("DstString() = %q, want %q", got, want)
}
}
func TestStreamInfo_SrcString_IPv6(t *testing.T) {
info := StreamInfo{
SrcIP: net.ParseIP("::1"),
SrcPort: 53,
}
want := "[::1]:53"
if got := info.SrcString(); got != want {
t.Errorf("SrcString() = %q, want %q", got, want)
}
}
func TestMatchResult_ZeroValue(t *testing.T) {
var mr MatchResult
if mr.Action != ActionMaybe {
t.Errorf("zero MatchResult.Action = %v, want ActionMaybe (0)", mr.Action)
}
}
func TestStreamInfo_PropsInitialization(t *testing.T) {
info := StreamInfo{
Props: analyzer.CombinedPropMap{
"tls": analyzer.PropMap{"sni": "example.com"},
},
}
if info.Props.Get("tls", "sni") != "example.com" {
t.Error("StreamInfo.Props not properly initialized")
}
}