package profile

import (
	"testing"

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

func TestUpsertMachineBindingReconcilesExistingServerIdentity(t *testing.T) {
	manager := New(t.TempDir())
	server := &AgentTeamServer{
		ID:          "server-a",
		Enabled:     true,
		ServerURL:   "https://agentteam.example.test",
		WorkspaceID: "wsp_1",
		MachineID:   "mch_old",
		APIKey:      "key-old",
	}
	require.NoError(t, manager.Servers().Add(server))
	var previous, current *AgentTeamServer
	participant := &testServerRuntimeParticipant{
		reconcile: func(before, after *AgentTeamServer) error {
			previous = cloneAgentTeamServerPointer(before)
			current = cloneAgentTeamServerPointer(after)
			return nil
		},
	}
	activateTestServerRuntime(t, manager, participant)

	updated, err := manager.Servers().UpsertMachineBinding(MachineBinding{
		ServerURL:   server.ServerURL,
		WorkspaceID: server.WorkspaceID,
		MachineID:   "mch_new",
		APIKey:      "key-new",
	})
	require.NoError(t, err)
	require.Equal(t, server.ID, updated.ID)
	require.Equal(t, "mch_new", updated.MachineID)
	require.Equal(t, "key-new", updated.APIKey)
	require.NotNil(t, previous)
	require.NotNil(t, current)
	require.Equal(t, "mch_old", previous.MachineID)
	require.Equal(t, "mch_new", current.MachineID)
}
