mirror of
https://github.com/go-i2p/go-sam-go.git
synced 2025-06-08 01:09:13 -04:00
161 lines
3.2 KiB
Go
161 lines
3.2 KiB
Go
![]() |
package common
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestSetSAMAddress_Cases(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
addr string
|
||
|
wantHost string
|
||
|
wantPort int
|
||
|
}{
|
||
|
{
|
||
|
name: "empty address uses defaults",
|
||
|
addr: "",
|
||
|
wantHost: "127.0.0.1",
|
||
|
wantPort: 7656,
|
||
|
},
|
||
|
{
|
||
|
name: "valid host:port",
|
||
|
addr: "192.168.1.1:7000",
|
||
|
wantHost: "192.168.1.1",
|
||
|
wantPort: 7000,
|
||
|
},
|
||
|
{
|
||
|
name: "invalid port uses default",
|
||
|
addr: "localhost:99999",
|
||
|
wantHost: "localhost",
|
||
|
wantPort: 0,
|
||
|
},
|
||
|
{
|
||
|
name: "just IP address",
|
||
|
addr: "192.168.1.1",
|
||
|
wantHost: "192.168.1.1",
|
||
|
wantPort: 0,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
cfg := &I2PConfig{}
|
||
|
cfg.SetSAMAddress(tt.addr)
|
||
|
|
||
|
if cfg.SamHost != tt.wantHost {
|
||
|
t.Errorf("SetSAMAddress() host = %v, want %v", cfg.SamHost, tt.wantHost)
|
||
|
}
|
||
|
if cfg.SamPort != tt.wantPort {
|
||
|
t.Errorf("SetSAMAddress() port = %v, want %v", cfg.SamPort, tt.wantPort)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestID_Generation(t *testing.T) {
|
||
|
cfg := &I2PConfig{}
|
||
|
|
||
|
// Test when TunName is empty
|
||
|
id1 := cfg.ID()
|
||
|
if len(cfg.TunName) != 12 {
|
||
|
t.Errorf("ID() generated name length = %v, want 12", len(cfg.TunName))
|
||
|
}
|
||
|
|
||
|
// Verify format
|
||
|
if id1[:3] != "ID=" {
|
||
|
t.Errorf("ID() format incorrect, got %v, want prefix 'ID='", id1)
|
||
|
}
|
||
|
|
||
|
// Test with preset TunName
|
||
|
cfg.TunName = "testtunnel"
|
||
|
id2 := cfg.ID()
|
||
|
if id2 != "ID=testtunnel" {
|
||
|
t.Errorf("ID() = %v, want ID=testtunnel", id2)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestSam_AddressFormatting(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
host string
|
||
|
port int
|
||
|
want string
|
||
|
}{
|
||
|
{
|
||
|
name: "default values",
|
||
|
host: "",
|
||
|
port: 0,
|
||
|
want: "127.0.0.1:7656",
|
||
|
},
|
||
|
{
|
||
|
name: "custom host and port",
|
||
|
host: "localhost",
|
||
|
port: 7000,
|
||
|
want: "localhost:7000",
|
||
|
},
|
||
|
{
|
||
|
name: "only custom host",
|
||
|
host: "192.168.1.1",
|
||
|
port: 0,
|
||
|
want: "192.168.1.1:7656",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
cfg := &I2PConfig{
|
||
|
SamHost: tt.host,
|
||
|
SamPort: tt.port,
|
||
|
}
|
||
|
got := cfg.Sam()
|
||
|
if got != tt.want {
|
||
|
t.Errorf("Sam() = %v, want %v", got, tt.want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestLeaseSetSettings_Formatting(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
cfg I2PConfig
|
||
|
wantKey string
|
||
|
wantPrivKey string
|
||
|
wantSignKey string
|
||
|
}{
|
||
|
{
|
||
|
name: "empty settings",
|
||
|
cfg: I2PConfig{},
|
||
|
wantKey: "",
|
||
|
wantPrivKey: "",
|
||
|
wantSignKey: "",
|
||
|
},
|
||
|
{
|
||
|
name: "all settings populated",
|
||
|
cfg: I2PConfig{
|
||
|
LeaseSetKey: "testkey",
|
||
|
LeaseSetPrivateKey: "privkey",
|
||
|
LeaseSetPrivateSigningKey: "signkey",
|
||
|
},
|
||
|
wantKey: " i2cp.leaseSetKey=testkey ",
|
||
|
wantPrivKey: " i2cp.leaseSetPrivateKey=privkey ",
|
||
|
wantSignKey: " i2cp.leaseSetPrivateSigningKey=signkey ",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
key, priv, sign := tt.cfg.LeaseSetSettings()
|
||
|
if key != tt.wantKey {
|
||
|
t.Errorf("LeaseSetSettings() key = %v, want %v", key, tt.wantKey)
|
||
|
}
|
||
|
if priv != tt.wantPrivKey {
|
||
|
t.Errorf("LeaseSetSettings() private key = %v, want %v", priv, tt.wantPrivKey)
|
||
|
}
|
||
|
if sign != tt.wantSignKey {
|
||
|
t.Errorf("LeaseSetSettings() signing key = %v, want %v", sign, tt.wantSignKey)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|