package login

import (
	"fmt"
	"os"
	"testing"

	"github.com/pingcap/log"
	"go.uber.org/zap"

	"github.com/pingcap-inc/clinic/pkg/auth/session"
	"github.com/pingcap-inc/clinic/pkg/db_docker"
	"github.com/pingcap-inc/clinic/pkg/db_docker/db/impl"
	"github.com/pingcap-inc/clinic/pkg/es"
)

var service = LoginService{
	Session: &session.SessionManager{},
}

func TestMain(m *testing.M) {
	fmt.Println("start tests")
	impl.ReleaseAll()
	es.StopAllESKibanaDocker()

	_ = db_docker.TryInitDB()

	err := es.StartEsDocker()
	if err != nil {
		log.Error("failed to start es docker", zap.Error(err))
	}

	err = es.StartKibanaDocker()
	if err != nil {
		log.Error("failed to start kibana docker", zap.Error(err))
	}

	code := m.Run()
	es.StopAllESKibanaDocker()
	impl.ReleaseAll()
	os.Exit(code)
}
