package api

import (
	"fmt"
	"net/http"
	"testing"

	"github.com/gin-gonic/gin"
	"github.com/pingcap-inc/clinic/pkg/auth/session"
	"github.com/stretchr/testify/assert"
	"github.com/tidbcloud/chaos-svc/idl/pbgen/proto/chaos"
)

func TestHandleUserToken(t *testing.T) {
	c := gin.Context{Request: &http.Request{Header: http.Header{}}}
	c.Request.Header.Set(session.CtxUserKey,
		"eyJ1c2VybmFtZSI6InpoYW5nc2hlbmFuQHBpbmdjYXAuY29tIiwidXNlcl9pZCI6NTIsImVtYWlsIjoiemhhbmdzaGVuYW5AcGluZ2"+
			"NhcC5jb20iLCJpbnRlcm5hbCI6dHJ1ZSwib3JnX2lkIjowfQ==")
	user, err := HandleUserToken(&c)
	assert.NoError(t, err)
	assert.Equal(t, session.CtxUser{
		Username:        "zhangshenan@pingcap.com",
		UserID:          52,
		Email:           "zhangshenan@pingcap.com",
		Internal:        true,
		OrgIDInApiToken: 0,
	}, *user)
}

func TestBackendStatusName(t *testing.T) {
	// show BackendStatusName
	for i := 0; i < len(chaos.ChaosBackendStatus_name); i++ {
		fmt.Println("//", chaos.ChaosBackendStatus_name[int32(i)],
			":", BackendStatusName[chaos.ChaosBackendStatus_name[int32(i)]])
	}
}
