package automation

import (
	"context"
	"testing"
)

func TestAfterCommitScheduledFlowExecutionMarkerIsExactVersionOnly(t *testing.T) {
	ctx := WithAfterCommitScheduledFlowExecution(context.Background(), "version-1")
	if !AfterCommitScheduledFlowExecutionAuthorizesVersion(ctx, "version-1") {
		t.Fatal("exact version was not authorized")
	}
	if AfterCommitScheduledFlowExecutionAuthorizesVersion(ctx, "version-2") ||
		AfterCommitScheduledFlowExecutionAuthorizesVersion(ctx, "") ||
		AfterCommitScheduledFlowExecutionAuthorizesVersion(context.Background(), "version-1") {
		t.Fatal("marker authorized a different, blank, or unbound version")
	}
	identity := FlowExecutionIdentity{OwnerPack: "connector-pack", VersionID: "version-1", VersionSource: flowSourceStandard}
	if !connectorRemoteIdentityTransferExecutionAuthorized(ctx, identity) {
		t.Fatal("strict after-commit marker did not authorize exact transfer FlowVersion")
	}
	identity.VersionID = "version-2"
	if connectorRemoteIdentityTransferExecutionAuthorized(ctx, identity) {
		t.Fatal("strict after-commit marker authorized a different transfer FlowVersion")
	}
}
