mirror of
https://github.com/lukaszraczylo/kportal.git
synced 2026-06-12 00:19:24 +00:00
1167847fd4
* Add mDNS resolution. * Update the website and documentation
155 lines
3.5 KiB
Go
155 lines
3.5 KiB
Go
package mdns
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
// Note: Tests that actually register mDNS services require network I/O
|
|
// and can be slow or hang in CI environments. We test the logic paths
|
|
// without actually calling zeroconf for most tests.
|
|
|
|
func TestNewPublisher_Disabled(t *testing.T) {
|
|
p := NewPublisher(false)
|
|
|
|
assert.False(t, p.IsEnabled())
|
|
assert.Equal(t, 0, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestNewPublisher_Enabled(t *testing.T) {
|
|
p := NewPublisher(true)
|
|
|
|
assert.True(t, p.IsEnabled())
|
|
assert.Equal(t, 0, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestRegister_WhenDisabled_NoOp(t *testing.T) {
|
|
p := NewPublisher(false)
|
|
|
|
err := p.Register("forward-1", "test-alias", 8080)
|
|
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 0, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestRegister_EmptyAlias_NoOp(t *testing.T) {
|
|
p := NewPublisher(true)
|
|
|
|
err := p.Register("forward-1", "", 8080)
|
|
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 0, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestUnregister_WhenDisabled_NoOp(t *testing.T) {
|
|
p := NewPublisher(false)
|
|
|
|
// Should not panic
|
|
p.Unregister("forward-1")
|
|
}
|
|
|
|
func TestUnregister_NotRegistered_NoOp(t *testing.T) {
|
|
p := NewPublisher(true)
|
|
|
|
// Should not panic
|
|
p.Unregister("non-existent")
|
|
assert.Equal(t, 0, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestStop_WhenDisabled_NoOp(t *testing.T) {
|
|
p := NewPublisher(false)
|
|
|
|
// Should not panic
|
|
p.Stop()
|
|
}
|
|
|
|
func TestStop_WhenNoRegistrations(t *testing.T) {
|
|
p := NewPublisher(true)
|
|
|
|
// Should not panic
|
|
p.Stop()
|
|
assert.Equal(t, 0, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestGetLocalIPs(t *testing.T) {
|
|
ips := getLocalIPs()
|
|
|
|
// Should return at least one IP
|
|
assert.NotEmpty(t, ips, "getLocalIPs should return at least one IP")
|
|
|
|
// All IPs should be non-empty strings
|
|
for _, ip := range ips {
|
|
assert.NotEmpty(t, ip, "IP address should not be empty")
|
|
}
|
|
}
|
|
|
|
// Integration tests - only run when explicitly requested
|
|
// These tests actually register mDNS services and require network access
|
|
|
|
func TestRegister_Integration(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping mDNS integration test in short mode")
|
|
}
|
|
|
|
p := NewPublisher(true)
|
|
defer p.Stop()
|
|
|
|
err := p.Register("forward-1", "test-service", 8080)
|
|
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 1, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestRegister_Duplicate_Idempotent_Integration(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping mDNS integration test in short mode")
|
|
}
|
|
|
|
p := NewPublisher(true)
|
|
defer p.Stop()
|
|
|
|
// First registration
|
|
err := p.Register("forward-1", "test-service", 8080)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 1, p.GetRegisteredCount())
|
|
|
|
// Second registration with same ID should be idempotent
|
|
err = p.Register("forward-1", "test-service", 8080)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 1, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestRegister_MultipleForwards_Integration(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping mDNS integration test in short mode")
|
|
}
|
|
|
|
p := NewPublisher(true)
|
|
defer p.Stop()
|
|
|
|
err1 := p.Register("forward-1", "service-a", 8080)
|
|
err2 := p.Register("forward-2", "service-b", 8081)
|
|
err3 := p.Register("forward-3", "service-c", 8082)
|
|
|
|
assert.NoError(t, err1)
|
|
assert.NoError(t, err2)
|
|
assert.NoError(t, err3)
|
|
assert.Equal(t, 3, p.GetRegisteredCount())
|
|
}
|
|
|
|
func TestUnregister_Success_Integration(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping mDNS integration test in short mode")
|
|
}
|
|
|
|
p := NewPublisher(true)
|
|
defer p.Stop()
|
|
|
|
p.Register("forward-1", "test-service", 8080)
|
|
assert.Equal(t, 1, p.GetRegisteredCount())
|
|
|
|
p.Unregister("forward-1")
|
|
assert.Equal(t, 0, p.GetRegisteredCount())
|
|
}
|