package apiinterceptor

import (
	"errors"
	"net/http"
	"net/http/httptest"
	"testing"

	err "github.com/tidbcloud/observability/pkg/common/errors"

	"github.com/stretchr/testify/assert"

	"github.com/gin-gonic/gin"
)

func TestFail(t *testing.T) {
	t.Run("error", func(t *testing.T) {
		c, _ := gin.CreateTestContext(httptest.NewRecorder())
		c.Request, _ = http.NewRequest("POST", "/", nil)
		Fail(c, err.New(err.ParameterInvalid, ""))
		assert.Equal(t, err.ParameterInvalid.GetHttpCode(), c.Writer.Status())
	})

	t.Run("error", func(t *testing.T) {
		c, _ := gin.CreateTestContext(httptest.NewRecorder())
		c.Request, _ = http.NewRequest("POST", "/", nil)
		Fail(c, errors.New("sss"))
		assert.Equal(t, err.UnrecognizedError.GetHttpCode(), c.Writer.Status())
	})

}

func TestSucceed(t *testing.T) {
	c, _ := gin.CreateTestContext(httptest.NewRecorder())
	c.Request, _ = http.NewRequest("POST", "/", nil)
	Succeed(c, http.StatusUnauthorized, "{}")
	assert.Equal(t, http.StatusUnauthorized, c.Writer.Status())
}
