package test

// import (
// 	"testing"

// 	"github.com/pingcap/dbaas/central/db"
// 	"github.com/tidbcloud/idl/pbgen/proto/central"
// 	"github.com/pingcap/dbaas/central/runtime"
// 	"github.com/pingcap/dbaas/central/tenant"
// 	"github.com/pingcap/dbaas/central/test/util"
// 	"github.com/pingcap/dbaas/pkg/docker_db"
//
// 	"github.com/pingcap/errcode"
// 	"github.com/stretchr/testify/assert"
// )

// func TestClusterAndBackup(t *testing.T) {
// 	tenantID, logDB := setupTests(t)
// 	users, err := db.ListUsers(tenant.GetDB(tenantID))
// 	assert.Nil(t, err)
// 	cluster, err := db.CreateClusterMachineType(tenant.GetCentralDB(), logDB, users[0], util.GetDefaultCluster(), int32(0))
// 	assert.NotNil(t, cluster)
// 	assert.Nil(t, err)

// 	clusters, err := db.ListClusters(logDB)
// 	assert.Nil(t, err)
// 	assert.Equal(t, 1, len(clusters))
// 	clusters, err = db.ClustersFetch(db.ClustersNotCleanedUp(logDB.DB()))
// 	assert.Nil(t, err)
// 	assert.Equal(t, 1, len(clusters))

// 	backup, err := db.CreateBackup(logDB, users[0], *cluster, db.CreateBackupRequired{
// 		Name:         "backup",
// 		Description:  "backup description",
// 		ClusterID:    db.ClusterID(cluster.ID),
// 		TidbCount:    1,
// 		TikvCount:    3,
// 		TiflashCount: 0,
// 		Type:         1,
// 	})
// 	assert.NotNil(t, backup)
// 	assert.Nil(t, err)

// 	jobID := runtime.ProviderID{Namespace: "test", ID: "backup"}
// 	err = db.CreateBackupOperation(logDB, backup, jobID)
// 	assert.Nil(t, err)

// 	backups, err := db.ListBackups(logDB, users[0], db.ClusterID(cluster.ID))
// 	assert.Nil(t, err)
// 	assert.Equal(t, 1, len(backups))
// 	backups, err = db.BackupsFetchNotCleanedUp(logDB, db.ClusterID(cluster.ID))
// 	assert.Nil(t, err)
// 	assert.Equal(t, 1, len(backups))

// 	err = db.UpdateBackupCleanedUp(logDB, backup, true)
// 	assert.Nil(t, err)
// 	backups, err = db.BackupsFetchNotCleanedUp(logDB, db.ClusterID(cluster.ID))
// 	assert.Nil(t, err)
// 	assert.Equal(t, 0, len(backups))

// 	err = db.DeleteCluster(logDB, users[0], db.ClusterID(cluster.ID))
// 	assert.Nil(t, err)

// 	clusters, err = db.ListClusters(logDB)
// 	assert.Nil(t, err)
// 	assert.Equal(t, 0, len(clusters))

// 	clusters, err = db.ClustersFetch(db.ClustersNotCleanedUp(logDB.DB()))
// 	assert.Nil(t, err)
// 	assert.Equal(t, 1, len(clusters))

// 	assert.Nil(t, db.DeleteDeletedClusterAndBackups(logDB, users[0], db.ClusterID(cluster.ID), central.BackupType_MANUAL, true))
// 	backups, err = db.ListBackups(logDB, users[0], db.ClusterID(cluster.ID))
// 	assert.Nil(t, err)
// 	assert.Equal(t, 0, len(backups))

// 	err = db.UpdateClusterCleanedUp(logDB, *cluster, true)
// 	assert.Nil(t, err)
// 	clusters, err = db.ClustersFetch(db.ClustersNotCleanedUp(logDB.DB()))
// 	assert.Nil(t, err)
// 	assert.Equal(t, 0, len(clusters))
// }

// func TestNotFound(t *testing.T) {
// 	tenantID, logDB := setupTests(t)
// 	_, err := db.UserFromEmail(logDB.DB(), "test@example.com")
// 	assert.Equal(t, 404, errcode.CodeChain(err).Code().HTTPCode())

// 	users, err := db.ListUsers(tenant.GetDB(tenantID))
// 	assert.Nil(t, err)
// 	_, err = db.UserFromEmail(logDB.DB(), users[0].Email)
// 	assert.Nil(t, err)
// }

// func TestAccessLog(t *testing.T) {
// 	_, _ = setupTests(t)
// 	err := db.AddAccessLog(tenant.GetCentralDB(), "user1", "add tenant 1", 100)
// 	assert.Nil(t, err)
// 	err = db.AddAccessLog(tenant.GetCentralDB(), "user", "add tenant 2", 200)
// 	assert.Nil(t, err)
// 	items, count, err := db.ListAccessLog(tenant.GetCentralDB(), &db.ListAccessLogQuery{Size: 10})
// 	assert.Nil(t, err)
// 	assert.Equal(t, 2, count)
// 	assert.Equal(t, 2, len(items))
// 	items, count, err = db.ListAccessLog(tenant.GetCentralDB(), &db.ListAccessLogQuery{From: 0, Size: 1, Content: "add tenant", StartTimeInSec: 1, EndTimeInSec: 201})
// 	assert.Nil(t, err)
// 	assert.Equal(t, 2, count)
// 	assert.Equal(t, 1, len(items))
// 	items, count, err = db.ListAccessLog(tenant.GetCentralDB(), &db.ListAccessLogQuery{From: 1, Size: 1, User: "user", StartTimeInSec: 1, EndTimeInSec: 201})
// 	assert.Nil(t, err)
// 	assert.Equal(t, 1, count)
// 	assert.Equal(t, 0, len(items))
// 	items, count, err = db.ListAccessLog(tenant.GetCentralDB(), &db.ListAccessLogQuery{From: 0, Size: 10, StartTimeInSec: 101, EndTimeInSec: 201})
// 	assert.Nil(t, err)
// 	assert.Equal(t, 1, count)
// 	assert.Equal(t, 1, len(items))
// }

// func setupTests(t *testing.T) (int64, tenant.TenantLogDB) {
// 	assert.Nil(t, docker_db.TryInitCentralDB(tenant.InitTenants))

// 	tenantID := tenant.GetAllTenantIDs()[0]
//
// 	logDB := tenant.NewLogDB(log, tenantID)
// 	return tenantID, logDB
// }
