mirror of
https://github.com/DeBrosOfficial/orama.git
synced 2026-03-27 16:44:11 +00:00
- replace `rw vault ssh` calls with `rwagent.Client` in PrepareNodeKeys, LoadAgentKeys, EnsureVaultEntry, ResolveVaultPublicKey - add vaultClient interface, newClient func, and wrapAgentError for testability and improved error messages - prefer pre-built systemd dir in installNamespaceTemplates
96 lines
2.4 KiB
Go
96 lines
2.4 KiB
Go
package ipfs
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/multiformats/go-multiaddr"
|
|
)
|
|
|
|
func TestExtractIPFromMultiaddr(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
addr string
|
|
expected string
|
|
}{
|
|
{
|
|
name: "ipv4 tcp address",
|
|
addr: "/ip4/10.0.0.1/tcp/4001",
|
|
expected: "10.0.0.1",
|
|
},
|
|
{
|
|
name: "ipv4 public address",
|
|
addr: "/ip4/203.0.113.5/tcp/4001",
|
|
expected: "203.0.113.5",
|
|
},
|
|
{
|
|
name: "ipv4 loopback",
|
|
addr: "/ip4/127.0.0.1/tcp/4001",
|
|
expected: "127.0.0.1",
|
|
},
|
|
{
|
|
name: "ipv6 address",
|
|
addr: "/ip6/::1/tcp/4001",
|
|
expected: "[::1]",
|
|
},
|
|
{
|
|
name: "wireguard ip with udp",
|
|
addr: "/ip4/10.0.0.3/udp/4001/quic",
|
|
expected: "10.0.0.3",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
ma, err := multiaddr.NewMultiaddr(tt.addr)
|
|
if err != nil {
|
|
t.Fatalf("failed to parse multiaddr %q: %v", tt.addr, err)
|
|
}
|
|
got := extractIPFromMultiaddr(ma)
|
|
if got != tt.expected {
|
|
t.Errorf("extractIPFromMultiaddr(%q) = %q, want %q", tt.addr, got, tt.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestExtractIPFromMultiaddr_Nil(t *testing.T) {
|
|
got := extractIPFromMultiaddr(nil)
|
|
if got != "" {
|
|
t.Errorf("extractIPFromMultiaddr(nil) = %q, want empty string", got)
|
|
}
|
|
}
|
|
|
|
// TestWireGuardIPFiltering verifies that only 10.0.0.x IPs would be selected
|
|
// for peer discovery queries. This tests the filtering logic used in
|
|
// DiscoverClusterPeersFromLibP2P.
|
|
func TestWireGuardIPFiltering(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
addr string
|
|
accepted bool
|
|
}{
|
|
{"wireguard ip", "/ip4/10.0.0.1/tcp/4001", true},
|
|
{"wireguard ip high", "/ip4/10.0.0.254/tcp/4001", true},
|
|
{"public ip", "/ip4/203.0.113.5/tcp/4001", false},
|
|
{"private 192.168", "/ip4/192.168.1.1/tcp/4001", false},
|
|
{"private 172.16", "/ip4/172.16.0.1/tcp/4001", false},
|
|
{"loopback", "/ip4/127.0.0.1/tcp/4001", false},
|
|
{"different 10.x subnet", "/ip4/10.1.0.1/tcp/4001", false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
ma, err := multiaddr.NewMultiaddr(tt.addr)
|
|
if err != nil {
|
|
t.Fatalf("failed to parse multiaddr: %v", err)
|
|
}
|
|
ip := extractIPFromMultiaddr(ma)
|
|
// Replicate the filtering logic from DiscoverClusterPeersFromLibP2P
|
|
accepted := ip != "" && len(ip) >= 7 && ip[:7] == "10.0.0."
|
|
if accepted != tt.accepted {
|
|
t.Errorf("IP %q: accepted=%v, want %v", ip, accepted, tt.accepted)
|
|
}
|
|
})
|
|
}
|
|
}
|