package extensionflow

import (
	"testing"

	"github.com/stretchr/testify/require"

	"github.com/tidbcloud/AgentTeam/internal/store/extension"
)

func TestRequireSameRuntimeConnectionIdentityRejectsAccountSwitch(t *testing.T) {
	expected := extension.RuntimeConnection{
		ID: "extconn_expected", WorkspaceID: "wsp_one",
		ServiceDefinitionID: "svcdef_one", ServiceInstallationID: "svcinst_one",
		ServiceKind:        "app",
		ExternalSubjectRef: "provider-account-one", Status: "active",
	}
	require.NoError(t, requireSameRuntimeConnectionIdentity(expected, expected))
	for name, mutate := range map[string]func(*extension.RuntimeConnection){
		"connection id": func(value *extension.RuntimeConnection) {
			value.ID = "extconn_other"
		},
		"provider subject": func(value *extension.RuntimeConnection) {
			value.ExternalSubjectRef = "provider-account-other"
		},
		"host installation": func(value *extension.RuntimeConnection) {
			value.ServiceInstallationID = "svcinst_other"
		},
	} {
		t.Run(name, func(t *testing.T) {
			current := expected
			mutate(&current)
			require.Error(t, requireSameRuntimeConnectionIdentity(
				current,
				expected,
			))
		})
	}
}
