package tracing

import (
	"context"
	"testing"

	"go.opentelemetry.io/otel/propagation"
	"go.opentelemetry.io/otel/trace"
)

func TestNewPropagatorPrefersW3CTraceParent(t *testing.T) {
	carrier := propagation.MapCarrier{
		"X-Trace-ID":  "11111111111111111111111111111111",
		"traceparent": "00-22222222222222222222222222222222-3333333333333333-01",
	}

	ctx := NewPropagator().Extract(context.Background(), carrier)
	got := trace.SpanContextFromContext(ctx).TraceID().String()
	if got != "22222222222222222222222222222222" {
		t.Fatalf("trace ID = %s, want Kong W3C trace ID", got)
	}
}

func TestNewPropagatorFallsBackToXTraceID(t *testing.T) {
	carrier := propagation.MapCarrier{
		"X-Trace-ID": "11111111111111111111111111111111",
	}

	ctx := NewPropagator().Extract(context.Background(), carrier)
	got := trace.SpanContextFromContext(ctx).TraceID().String()
	if got != "11111111111111111111111111111111" {
		t.Fatalf("trace ID = %s, want X-Trace-ID", got)
	}
}
