// Copyright (c) 2017 Uber Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package jaeger

import (
	"testing"

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

func TestSetDefaultOrCustom(t *testing.T) {
	assert.Equal(t, (&HeadersConfig{}).applyDefaults(), getDefaultHeadersConfig())
	assert.Equal(t, (&HeadersConfig{
		JaegerDebugHeader: "custom-jaeger-debug-header",
	}).applyDefaults(), &HeadersConfig{
		JaegerDebugHeader:        "custom-jaeger-debug-header",
		JaegerBaggageHeader:      JaegerBaggageHeader,
		TraceContextHeaderName:   TraceContextHeaderName,
		TraceBaggageHeaderPrefix: TraceBaggageHeaderPrefix,
	})

	customHeaders := &HeadersConfig{
		JaegerDebugHeader:        "custom-jaeger-debug-header",
		JaegerBaggageHeader:      "custom-jaeger-baggage-header",
		TraceContextHeaderName:   "custom-tracer-state-header-name",
		TraceBaggageHeaderPrefix: "custom-tracer-baggage-header-prefix",
	}
	assert.Equal(t, customHeaders.applyDefaults(), customHeaders)
}

func TestGetDefaultHeadersConfig(t *testing.T) {
	assert.Equal(t, getDefaultHeadersConfig(), &HeadersConfig{
		JaegerDebugHeader:        JaegerDebugHeader,
		JaegerBaggageHeader:      JaegerBaggageHeader,
		TraceContextHeaderName:   TraceContextHeaderName,
		TraceBaggageHeaderPrefix: TraceBaggageHeaderPrefix,
	})
}
