package middleware

import (
	"github.com/gin-gonic/gin"
	"github.com/pingcap/dbaas/billing2/middleware"
	"github.com/pingcap/dbaas/billing2/utils/header"
	"github.com/pingcap/dbaas/billing2/utils/tests"
	"github.com/stretchr/testify/suite"
	"net/http"
	"testing"
)

type HeaderMiddlewareTestSuite struct {
	tests.BillingTestSuite
}

func TestHeaderMiddlewareTestSuite(t *testing.T) {
	suite.Run(t, new(HeaderMiddlewareTestSuite))
}

func (s *HeaderMiddlewareTestSuite) TestParseFieldsInfo() {
	assert := s.Assert()
	// mock gin.Context
	c := &gin.Context{
		Request: &http.Request{
			Header: http.Header{
				"X-Pressure-Test": {"true"},
				"X-Function-Test": {"true"},
				"B3":              {"traceID123-2222222222222-1"},
			},
		},
	}
	middleware.HeaderMiddleware(c)
	assert.Equal("true", header.GetFunctionTestValue())
	assert.Equal("true", header.GetPressureTestValue())
	assert.Equal("traceID123", header.GetTraceID())
}
