Files
2026-07-23 12:38:13 +03:00

56 lines
2.0 KiB
Go

package keymgr
import (
"strings"
"testing"
"ssh-access-tui/internal/model"
)
func TestRenderInstructionsProxyJump(t *testing.T) {
forwards := []model.Forward{
{HostName: "db-prod-1", Address: "10.0.0.5", Port: 22, ServiceName: "ssh", Description: "primary db"},
{HostName: "db-prod-1", Address: "10.0.0.5", Port: 8080, ServiceName: "web-admin"},
}
out := RenderInstructionsProxyJump("a-makarov", "a-makarov_jump_key", forwards)
if !strings.Contains(out, "a-makarov") {
t.Errorf("expected username in output, got:\n%s", out)
}
// ProxyJump-mode instructions tell the user to run "ssh <alias>" per
// service, not to open one tunnel and point tools at a local port.
if strings.Contains(out, "127.0.0.1") {
t.Errorf("ProxyJump instructions must not reference local forwarded ports, got:\n%s", out)
}
if strings.Contains(out, "ssh -N jump") {
t.Errorf("ProxyJump instructions must not tell the user to open the always-on tunnel, got:\n%s", out)
}
for _, wantAlias := range []string{"ssh db-prod-1-ssh", "ssh db-prod-1-web-admin"} {
if !strings.Contains(out, wantAlias) {
t.Errorf("expected instructions to mention %q, got:\n%s", wantAlias, out)
}
}
}
func TestRenderInstructionsProxyJump_NoForwards(t *testing.T) {
out := RenderInstructionsProxyJump("nobody", "nobody_jump_key", nil)
if !strings.Contains(out, "обратитесь к администратору") {
t.Errorf("expected a no-services fallback message, got:\n%s", out)
}
}
func TestRenderConfigUpdateInstructionsProxyJump(t *testing.T) {
forwards := []model.Forward{
{HostName: "cache-1", Address: "10.0.0.9", Port: 6379, ServiceName: "redis"},
}
out := RenderConfigUpdateInstructionsProxyJump("a-makarov", forwards)
if strings.Contains(out, "127.0.0.1") {
t.Errorf("ProxyJump config-update instructions must not reference local ports, got:\n%s", out)
}
if !strings.Contains(out, "ssh cache-1") {
t.Errorf("expected instructions to mention the cache-1 alias, got:\n%s", out)
}
}