package security

import (
	"context"
	"log"
	"os"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/smartystreets/goconvey/convey"
	"github.com/tidbcloud/account/internel/dao/security"
	"github.com/tidbcloud/account/pkg/docker_db"
	"gorm.io/gorm"
)

var db *gorm.DB

func init() {
	var err error
	db, err = docker_db.TryInitCentralDB(true)
	if err != nil {
		log.Printf("Failed to init docker db: %s", err)
		os.Exit(-1)
		return
	}
}

func TestSecuritySvc_CreateAuditLog(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()
	ctx := context.TODO()
	mockedSecurityDao := security.NewMockSecurityDaoIface(ctrl)
	svc := NewSecuritySvc(db, mockedSecurityDao)

	convey.Convey("CreateAuditLog", t, func() {
		email := "example@pingcap.com"
		content := "this is content"
		var orgID uint64 = 1
		mockedSecurityDao.EXPECT().CreateAuditLog(ctx, gomock.Any(), orgID, email, content)
		_, err := svc.CreateAuditLog(ctx, orgID, email, content)
		convey.So(err, convey.ShouldBeNil)
	})
}
