124 lines
3.6 KiB
Go
124 lines
3.6 KiB
Go
|
|
package config_test
|
||
|
|
|
||
|
|
import (
|
||
|
|
"cursor-api-proxy/internal/config"
|
||
|
|
"cursor-api-proxy/internal/env"
|
||
|
|
"path/filepath"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestLoadBridgeConfig_Defaults(t *testing.T) {
|
||
|
|
cfg := config.LoadBridgeConfig(env.EnvSource{}, "/workspace")
|
||
|
|
|
||
|
|
if cfg.AgentBin != "agent" {
|
||
|
|
t.Errorf("AgentBin = %q, want %q", cfg.AgentBin, "agent")
|
||
|
|
}
|
||
|
|
if cfg.Host != "127.0.0.1" {
|
||
|
|
t.Errorf("Host = %q, want %q", cfg.Host, "127.0.0.1")
|
||
|
|
}
|
||
|
|
if cfg.Port != 8765 {
|
||
|
|
t.Errorf("Port = %d, want 8765", cfg.Port)
|
||
|
|
}
|
||
|
|
if cfg.RequiredKey != "" {
|
||
|
|
t.Errorf("RequiredKey = %q, want empty", cfg.RequiredKey)
|
||
|
|
}
|
||
|
|
if cfg.DefaultModel != "auto" {
|
||
|
|
t.Errorf("DefaultModel = %q, want %q", cfg.DefaultModel, "auto")
|
||
|
|
}
|
||
|
|
if cfg.Force {
|
||
|
|
t.Error("Force should be false")
|
||
|
|
}
|
||
|
|
if cfg.ApproveMcps {
|
||
|
|
t.Error("ApproveMcps should be false")
|
||
|
|
}
|
||
|
|
if !cfg.StrictModel {
|
||
|
|
t.Error("StrictModel should be true")
|
||
|
|
}
|
||
|
|
if cfg.Mode != "ask" {
|
||
|
|
t.Errorf("Mode = %q, want %q", cfg.Mode, "ask")
|
||
|
|
}
|
||
|
|
if cfg.Workspace != "/workspace" {
|
||
|
|
t.Errorf("Workspace = %q, want /workspace", cfg.Workspace)
|
||
|
|
}
|
||
|
|
if !cfg.ChatOnlyWorkspace {
|
||
|
|
t.Error("ChatOnlyWorkspace should be true")
|
||
|
|
}
|
||
|
|
if cfg.WinCmdlineMax != 30000 {
|
||
|
|
t.Errorf("WinCmdlineMax = %d, want 30000", cfg.WinCmdlineMax)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestLoadBridgeConfig_FromEnv(t *testing.T) {
|
||
|
|
e := env.EnvSource{
|
||
|
|
"CURSOR_AGENT_BIN": "/usr/bin/agent",
|
||
|
|
"CURSOR_BRIDGE_HOST": "0.0.0.0",
|
||
|
|
"CURSOR_BRIDGE_PORT": "9999",
|
||
|
|
"CURSOR_BRIDGE_API_KEY": "sk-secret",
|
||
|
|
"CURSOR_BRIDGE_DEFAULT_MODEL": "org/claude-3-opus",
|
||
|
|
"CURSOR_BRIDGE_FORCE": "true",
|
||
|
|
"CURSOR_BRIDGE_APPROVE_MCPS": "yes",
|
||
|
|
"CURSOR_BRIDGE_STRICT_MODEL": "false",
|
||
|
|
"CURSOR_BRIDGE_WORKSPACE": "./my-workspace",
|
||
|
|
"CURSOR_BRIDGE_TIMEOUT_MS": "60000",
|
||
|
|
"CURSOR_BRIDGE_CHAT_ONLY_WORKSPACE": "false",
|
||
|
|
"CURSOR_BRIDGE_VERBOSE": "1",
|
||
|
|
"CURSOR_BRIDGE_TLS_CERT": "./certs/test.crt",
|
||
|
|
"CURSOR_BRIDGE_TLS_KEY": "./certs/test.key",
|
||
|
|
}
|
||
|
|
cfg := config.LoadBridgeConfig(e, "/tmp/project")
|
||
|
|
|
||
|
|
if cfg.AgentBin != "/usr/bin/agent" {
|
||
|
|
t.Errorf("AgentBin = %q, want /usr/bin/agent", cfg.AgentBin)
|
||
|
|
}
|
||
|
|
if cfg.Host != "0.0.0.0" {
|
||
|
|
t.Errorf("Host = %q, want 0.0.0.0", cfg.Host)
|
||
|
|
}
|
||
|
|
if cfg.Port != 9999 {
|
||
|
|
t.Errorf("Port = %d, want 9999", cfg.Port)
|
||
|
|
}
|
||
|
|
if cfg.RequiredKey != "sk-secret" {
|
||
|
|
t.Errorf("RequiredKey = %q, want sk-secret", cfg.RequiredKey)
|
||
|
|
}
|
||
|
|
if cfg.DefaultModel != "claude-3-opus" {
|
||
|
|
t.Errorf("DefaultModel = %q, want claude-3-opus", cfg.DefaultModel)
|
||
|
|
}
|
||
|
|
if !cfg.Force {
|
||
|
|
t.Error("Force should be true")
|
||
|
|
}
|
||
|
|
if !cfg.ApproveMcps {
|
||
|
|
t.Error("ApproveMcps should be true")
|
||
|
|
}
|
||
|
|
if cfg.StrictModel {
|
||
|
|
t.Error("StrictModel should be false")
|
||
|
|
}
|
||
|
|
if !filepath.IsAbs(cfg.Workspace) {
|
||
|
|
t.Errorf("Workspace should be absolute, got %q", cfg.Workspace)
|
||
|
|
}
|
||
|
|
if !strings.Contains(cfg.Workspace, "my-workspace") {
|
||
|
|
t.Errorf("Workspace %q should contain 'my-workspace'", cfg.Workspace)
|
||
|
|
}
|
||
|
|
if cfg.TimeoutMs != 60000 {
|
||
|
|
t.Errorf("TimeoutMs = %d, want 60000", cfg.TimeoutMs)
|
||
|
|
}
|
||
|
|
if cfg.ChatOnlyWorkspace {
|
||
|
|
t.Error("ChatOnlyWorkspace should be false")
|
||
|
|
}
|
||
|
|
if !cfg.Verbose {
|
||
|
|
t.Error("Verbose should be true")
|
||
|
|
}
|
||
|
|
if cfg.TLSCertPath != "/tmp/project/certs/test.crt" {
|
||
|
|
t.Errorf("TLSCertPath = %q, want /tmp/project/certs/test.crt", cfg.TLSCertPath)
|
||
|
|
}
|
||
|
|
if cfg.TLSKeyPath != "/tmp/project/certs/test.key" {
|
||
|
|
t.Errorf("TLSKeyPath = %q, want /tmp/project/certs/test.key", cfg.TLSKeyPath)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestLoadBridgeConfig_WideHost(t *testing.T) {
|
||
|
|
cfg := config.LoadBridgeConfig(env.EnvSource{"CURSOR_BRIDGE_HOST": "0.0.0.0"}, "/workspace")
|
||
|
|
if cfg.Host != "0.0.0.0" {
|
||
|
|
t.Errorf("Host = %q, want 0.0.0.0", cfg.Host)
|
||
|
|
}
|
||
|
|
}
|