agent/pkg/agentic/remote_test.go
Virgil 2a95ba6ff5 fix(agentic): normalise remote host inputs
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-02 09:12:49 +00:00

91 lines
2.9 KiB
Go

// SPDX-License-Identifier: EUPL-1.2
package agentic
import (
"testing"
"github.com/stretchr/testify/assert"
)
// --- resolveHost (extended — base cases are in paths_test.go) ---
func TestRemote_ResolveHost_Good_CaseInsensitive(t *testing.T) {
assert.Equal(t, "10.69.69.165:9101", resolveHost("Charon"))
assert.Equal(t, "10.69.69.165:9101", resolveHost("CHARON"))
assert.Equal(t, "127.0.0.1:9101", resolveHost("Cladius"))
assert.Equal(t, "127.0.0.1:9101", resolveHost("LOCAL"))
}
func TestRemote_ResolveHost_Good_CustomHost(t *testing.T) {
assert.Equal(t, "my-server:9101", resolveHost("my-server"))
assert.Equal(t, "192.168.1.100:8080", resolveHost("192.168.1.100:8080"))
}
func TestRemote_ResolveHost_Good_TrimmedInput(t *testing.T) {
assert.Equal(t, "10.69.69.165:9101", resolveHost(" charon "))
assert.Equal(t, "my-server:9101", resolveHost(" my-server "))
}
// --- remoteToken ---
func TestRemote_RemoteToken_Good_FromEnv(t *testing.T) {
t.Setenv("AGENT_TOKEN_CHARON", "env-token-123")
token := remoteToken("CHARON")
assert.Equal(t, "env-token-123", token)
}
func TestRemote_RemoteToken_Good_FallbackMCPAuth(t *testing.T) {
t.Setenv("AGENT_TOKEN_TOKENTEST", "")
t.Setenv("MCP_AUTH_TOKEN", "mcp-fallback")
token := remoteToken("tokentest")
assert.Equal(t, "mcp-fallback", token)
}
func TestRemote_RemoteToken_Good_EnvPrecedence(t *testing.T) {
t.Setenv("AGENT_TOKEN_PRIO", "specific-token")
t.Setenv("MCP_AUTH_TOKEN", "generic-token")
token := remoteToken("PRIO")
assert.Equal(t, "specific-token", token, "host-specific env should take precedence")
}
func TestRemote_RemoteToken_Good_TrimmedInput(t *testing.T) {
t.Setenv("AGENT_TOKEN_CHARON", "trimmed-token")
token := remoteToken(" charon ")
assert.Equal(t, "trimmed-token", token)
}
// --- resolveHost Bad/Ugly ---
func TestRemote_ResolveHost_Bad(t *testing.T) {
// Empty string — returns empty host with default port appended
result := resolveHost("")
assert.Equal(t, ":9101", result)
}
func TestRemote_ResolveHost_Ugly(t *testing.T) {
// Unicode host name — not an alias, no colon, so default port appended
result := resolveHost("\u00e9nchantr\u00efx")
assert.Equal(t, "\u00e9nchantr\u00efx:9101", result)
}
// --- remoteToken Bad/Ugly ---
func TestRemote_RemoteToken_Bad(t *testing.T) {
// Host with no matching env var and no file — returns empty
t.Setenv("AGENT_TOKEN_NOHOST", "")
t.Setenv("MCP_AUTH_TOKEN", "")
t.Setenv("DIR_HOME", t.TempDir()) // no token files
token := remoteToken("nohost")
assert.Equal(t, "", token)
}
func TestRemote_RemoteToken_Ugly(t *testing.T) {
// Host name with dashes and dots — creates odd env key like AGENT_TOKEN_MY-HOST.LOCAL
// Env lookup will use the exact uppercased key
t.Setenv("AGENT_TOKEN_MY-HOST.LOCAL", "")
t.Setenv("MCP_AUTH_TOKEN", "")
t.Setenv("DIR_HOME", t.TempDir())
token := remoteToken("my-host.local")
assert.Equal(t, "", token)
}