wg-portal/internal/domain/peer_test.go
2025-03-23 23:09:47 +01:00

166 lines
4.0 KiB
Go

package domain
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestPeer_IsDisabled(t *testing.T) {
peer := &Peer{}
assert.False(t, peer.IsDisabled())
now := time.Now()
peer.Disabled = &now
assert.True(t, peer.IsDisabled())
}
func TestPeer_IsExpired(t *testing.T) {
peer := &Peer{}
assert.False(t, peer.IsExpired())
expiredTime := time.Now().Add(-time.Hour)
peer.ExpiresAt = &expiredTime
assert.True(t, peer.IsExpired())
futureTime := time.Now().Add(time.Hour)
peer.ExpiresAt = &futureTime
assert.False(t, peer.IsExpired())
}
func TestPeer_CheckAliveAddress(t *testing.T) {
peer := &Peer{}
assert.Equal(t, "", peer.CheckAliveAddress())
peer.Interface.CheckAliveAddress = "192.168.1.1"
assert.Equal(t, "192.168.1.1", peer.CheckAliveAddress())
peer.Interface.CheckAliveAddress = ""
peer.Interface.Addresses = []Cidr{{Addr: "10.0.0.1"}}
assert.Equal(t, "10.0.0.1", peer.CheckAliveAddress())
}
func TestPeer_GetConfigFileName(t *testing.T) {
peer := &Peer{DisplayName: "Test Peer"}
expected := "Test_Peer.conf"
assert.Equal(t, expected, peer.GetConfigFileName())
peer.DisplayName = ""
peer.Identifier = "12345678"
expected = "wg_12345678.conf"
assert.Equal(t, expected, peer.GetConfigFileName())
}
func TestPeer_ApplyInterfaceDefaults(t *testing.T) {
peer := &Peer{
Endpoint: ConfigOption[string]{
Value: "",
Overridable: true,
},
EndpointPublicKey: ConfigOption[string]{
Value: "",
Overridable: true,
},
AllowedIPsStr: ConfigOption[string]{
Value: "1.1.1.1/32",
Overridable: false,
},
}
iface := &Interface{
PeerDefEndpoint: "192.168.1.1",
KeyPair: KeyPair{
PublicKey: "publicKey",
},
PeerDefAllowedIPsStr: "8.8.8.8/32",
}
peer.ApplyInterfaceDefaults(iface)
assert.Equal(t, "192.168.1.1", peer.Endpoint.GetValue())
assert.Equal(t, "publicKey", peer.EndpointPublicKey.GetValue())
assert.Equal(t, "1.1.1.1/32", peer.AllowedIPsStr.GetValue())
}
func TestPeer_GenerateDisplayName(t *testing.T) {
peer := &Peer{Identifier: "12345678"}
peer.GenerateDisplayName("Prefix")
expected := "Prefix Peer 12345678"
assert.Equal(t, expected, peer.DisplayName)
peer.GenerateDisplayName("")
expected = "Peer 12345678"
assert.Equal(t, expected, peer.DisplayName)
}
func TestPeer_OverwriteUserEditableFields(t *testing.T) {
peer := &Peer{}
userPeer := &Peer{
DisplayName: "New DisplayName",
}
peer.OverwriteUserEditableFields(userPeer)
assert.Equal(t, "New DisplayName", peer.DisplayName)
}
func TestPeer_GetPresharedKey(t *testing.T) {
physicalPeer := PhysicalPeer{}
assert.Nil(t, physicalPeer.GetPresharedKey())
physicalPeer.PresharedKey = "Q0evIJTOjhyy2o5J7whvrsvQC+FRL8A74vrw44YHUAk="
key := physicalPeer.GetPresharedKey()
assert.NotNil(t, key)
}
func TestPeer_GetEndpointAddress(t *testing.T) {
physicalPeer := PhysicalPeer{}
assert.Nil(t, physicalPeer.GetEndpointAddress())
physicalPeer.Endpoint = "192.168.1.1:51820"
addr := physicalPeer.GetEndpointAddress()
assert.NotNil(t, addr)
assert.Equal(t, "192.168.1.1:51820", addr.String())
}
func TestPeer_GetPersistentKeepaliveTime(t *testing.T) {
physicalPeer := PhysicalPeer{}
assert.Nil(t, physicalPeer.GetPersistentKeepaliveTime())
physicalPeer.PersistentKeepalive = 25
duration := physicalPeer.GetPersistentKeepaliveTime()
assert.NotNil(t, duration)
assert.Equal(t, 25*time.Second, *duration)
}
func TestPeer_GetAllowedIPs(t *testing.T) {
physicalPeer := PhysicalPeer{}
assert.Empty(t, physicalPeer.GetAllowedIPs())
physicalPeer.AllowedIPs = []Cidr{
{
Cidr: "192.168.1.0/24",
Addr: "192.168.1.0",
NetLength: 24,
},
}
ips := physicalPeer.GetAllowedIPs()
assert.Len(t, ips, 1)
assert.Equal(t, "192.168.1.0/24", ips[0].String())
physicalPeer.AllowedIPs = []Cidr{
{
Cidr: "192.168.1.0/24",
Addr: "192.168.1.0",
NetLength: 24,
},
{
Cidr: "fe80::/64",
Addr: "fe80::",
NetLength: 64,
},
}
ips2 := physicalPeer.GetAllowedIPs()
assert.Len(t, ips2, 2)
assert.Equal(t, "192.168.1.0/24", ips2[0].String())
assert.Equal(t, "fe80::/64", ips2[1].String())
}