package execruntimeenv

import (
	"os"
	"testing"

	"github.com/stretchr/testify/require"
)

func TestFilterInheritedRemovesEveryExecVariableCaseInsensitively(t *testing.T) {
	env := FilterInherited([]string{
		"KEEP=1",
		BaseURL + "=http://127.0.0.1:1",
		"agentteam_exec_token=raw",
		"AgentTeam_Exec_Token_File=/private/token",
		"AGENTTEAM_EXTENSION_BASE_URL=http://127.0.0.1:2",
		"agentteam_extension_token_file=/private/extension-token",
		"AgentTeam_Extension_Token=raw",
		"MALFORMED",
	})

	require.Equal(t, []string{"KEEP=1", "MALFORMED"}, env)
	require.True(t, IsDaemonOwnedKey(" agentteam_exec_base_url "))
	require.False(t, IsDaemonOwnedKey("AGENTTEAM_EXEC_OTHER"))
}

func TestClearProcessRemovesInheritedExecCapability(t *testing.T) {
	t.Setenv(BaseURL, "http://127.0.0.1:1")
	t.Setenv(retiredRawToken, "raw")
	t.Setenv(TokenFile, "/private/token")
	t.Setenv(retiredExtensionBaseURL, "http://127.0.0.1:2")
	t.Setenv(retiredExtensionTokenFile, "/private/extension-token")
	t.Setenv(retiredExtensionRawToken, "raw")
	t.Setenv("AGENTTEAM_EXEC_OTHER", "kept")

	require.NoError(t, ClearProcess())
	_, basePresent := os.LookupEnv(BaseURL)
	_, tokenPresent := os.LookupEnv(retiredRawToken)
	_, filePresent := os.LookupEnv(TokenFile)
	_, extensionBasePresent := os.LookupEnv(retiredExtensionBaseURL)
	_, extensionFilePresent := os.LookupEnv(retiredExtensionTokenFile)
	_, extensionRawPresent := os.LookupEnv(retiredExtensionRawToken)
	require.False(t, basePresent)
	require.False(t, tokenPresent)
	require.False(t, filePresent)
	require.False(t, extensionBasePresent)
	require.False(t, extensionFilePresent)
	require.False(t, extensionRawPresent)
	require.Equal(t, "kept", os.Getenv("AGENTTEAM_EXEC_OTHER"))
}
