package auth

import (
	"context"
	"testing"

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

type trackingSetupAuditRepo struct {
	called bool
	ctx    context.Context
}

func (r *trackingSetupAuditRepo) RecordSetupChange(ctx context.Context, action, section, display, userID string) error {
	r.called = true
	r.ctx = ctx
	return nil
}

func TestSetupAuditorRecordUsesCallerContextSynchronously(t *testing.T) {
	type ctxKey struct{}
	ctx := context.WithValue(context.Background(), ctxKey{}, "tx-sentinel")
	repo := &trackingSetupAuditRepo{}

	NewSetupAuditor(repo).Record(ctx, "Changed permission", "Permissions", "Display", "user-1")

	require.True(t, repo.called)
	require.Equal(t, "tx-sentinel", repo.ctx.Value(ctxKey{}))
}
