67 lines
2.2 KiB
Go
67 lines
2.2 KiB
Go
package lifecycle
|
|
|
|
import (
|
|
"context"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/kandev/kandev/internal/task/models"
|
|
)
|
|
|
|
func TestAgentctlProviderMappingsPreserveProviderCapabilities(t *testing.T) {
|
|
providersByCase := map[string][]string{
|
|
"github-only": {"github"},
|
|
"gitlab-only": {"gitlab"},
|
|
"mixed": {"github", "gitlab"},
|
|
"empty": {},
|
|
"unsupported-filtered": {},
|
|
}
|
|
|
|
for name, providers := range providersByCase {
|
|
providers := providers
|
|
t.Run(name, func(t *testing.T) {
|
|
req := &ExecutorCreateRequest{McpProviders: providers}
|
|
standalone := buildStandaloneCreateInstanceRequest(req, nil, "", false, false, false, false, nil)
|
|
container := buildContainerCreateInstanceRequest(ContainerConfig{McpProviders: providers}, "", false, false, false, false, nil)
|
|
docker := buildReconnectCreateInstanceRequest(req, "previous-execution")
|
|
sprites := spriteCreateInstanceRequest(req)
|
|
ssh := buildSSHCreateInstanceRequest(req, "/workspace")
|
|
|
|
mapped := map[string][]string{
|
|
"standalone": standalone.McpProviders,
|
|
"container": container.McpProviders,
|
|
"docker": docker.McpProviders,
|
|
"sprites": sprites.McpProviders,
|
|
executorTypeSSH: ssh.McpProviders,
|
|
}
|
|
for backend, got := range mapped {
|
|
if !reflect.DeepEqual(got, providers) {
|
|
t.Errorf("%s provider mapping = %#v, want %#v", backend, got, providers)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestManagerLaunchCarriesMCPProvidersToExecutor(t *testing.T) {
|
|
mgr, backend := newEnvironmentExecutionTestManager(t, nil)
|
|
want := []string{"github", "gitlab"}
|
|
_, err := mgr.Launch(context.Background(), &LaunchRequest{
|
|
TaskID: "task-provider-launch",
|
|
SessionID: "session-provider-launch",
|
|
AgentProfileID: "profile-provider-launch",
|
|
ExecutorType: string(models.ExecutorTypeLocal),
|
|
IsEphemeral: true,
|
|
McpProviders: want,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Manager.Launch: %v", err)
|
|
}
|
|
if backend.lastRequest == nil {
|
|
t.Fatal("executor CreateInstance was not called")
|
|
}
|
|
if !reflect.DeepEqual(backend.lastRequest.McpProviders, want) {
|
|
t.Fatalf("executor McpProviders = %#v, want %#v", backend.lastRequest.McpProviders, want)
|
|
}
|
|
}
|