122 lines
2.5 KiB
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")
|
|
}
|
|
}
|