package dispatcher

import (
	"os"
	"path/filepath"
	"testing"

	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/AgentTeam/desktop/internal/tokenanalysis"
)

func TestTokenAnalysisEnvReplacesUntrustedRuntimeValuesAndAddsAgentTeamBinary(t *testing.T) {
	d := &Dispatcher{
		serverURL: "http://127.0.0.1:43123/",
		tokenAnalysisToken: func(agentID string) (string, error) {
			require.Equal(t, "agent-1", agentID)
			return "issued-token", nil
		},
	}
	env := clearTokenAnalysisEnv(map[string]string{
		tokenanalysis.EnvBaseURL: "https://attacker.invalid",
		tokenanalysis.EnvToken:   "attacker-token",
		tokenanalysis.EnvAgentID: "other-agent",
		"PATH":                   "/usr/bin",
	})
	env, tokenValue := d.withTokenAnalysisEnv(env, "agent-1")

	require.Equal(t, "issued-token", tokenValue)
	require.Equal(t, "http://127.0.0.1:43123", env[tokenanalysis.EnvBaseURL])
	require.Equal(t, "issued-token", env[tokenanalysis.EnvToken])
	require.Equal(t, "agent-1", env[tokenanalysis.EnvAgentID])
	executable, err := os.Executable()
	require.NoError(t, err)
	require.True(t, pathListContains(env["PATH"], filepath.Dir(executable)))
}
