package backup

/*
import (
	"github.com/google/go-cmp/cmp"
	"github.com/tidbcloud/central-sdk/config"
	"github.com/tidbcloud/central-sdk/db/entity"
	runtimemanager "github.com/tidbcloud/central-sdk/runtime/manager"
	"github.com/tidbcloud/central-sdk/tenant"
	"github.com/tidbcloud/central-sdk/worker/operator"
	"github.com/pingcap/tidb-operator/pkg/apis/pingcap/v1alpha1"
	"github.com/tidbcloud/config-service/sdk/api"
	"github.com/tidbcloud/config-service/sdk/mock"
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/utils/pointer"
	"testing"
)

func TestAssembleTiDBRestore(t *testing.T) {
	client := mock.New()
	client.RestoreConfigOutput = &api.DescribeBRConfigOutput{
		Version: "v4.0.9",
		Config:  map[string]interface{}{"concurrency": float64(2)},
		Image: api.Image{
			BaseImage: "gcr.io/pingcap-public/dbaas/br",
			Tag:       pointer.StringPtr("v4.0.9-hotfix"),
		},
	}
	ctx := UserContext{
		Model: Model{
			runtimes: &runtimemanager.GardenerRuntimeManager{
				GardenProject: "mock-project",
			},
		},
		ConfigService: client,
		getAwsBaseRoleArn: func() (string, error) {
			return "mock-arn", nil
		},
		tenantAndUser: &entity.User{
			TenantID: entity.ID(456),
		},
	}
	bg := BgContext(ctx)
	var concurrency uint32 = 2
	cases := []struct {
		Description  string
		Values       operator.TidbRestoreVars
		ExpectResult *v1alpha1.Restore
	}{
		{
			Description: "gcp backup",
			Values: operator.TidbRestoreVars{
				Bucket:    "mock-bucket",
				ClusterID: entity.ID(123),
				Cloud:     config.Gcp,
			},
			ExpectResult: &v1alpha1.Restore{
				ObjectMeta: v1.ObjectMeta{Namespace: "tidb123"},
				Spec: v1alpha1.RestoreSpec{
					To:   &v1alpha1.TiDBAccessConfig{Port: 4000, User: "root"},
					Type: "full",
					StorageProvider: v1alpha1.StorageProvider{Gcs: &v1alpha1.GcsStorageProvider{
						Bucket:     "mock-bucket",
						SecretName: "gcp-br-credentials",
					}},
					BR: &v1alpha1.BRConfig{
						Cluster:          "db",
						ClusterNamespace: "tidb123",
						Concurrency:      &concurrency,
						SendCredToTikv:   pointer.BoolPtr(false),
					},
					ToolImage: "gcr.io/pingcap-public/dbaas/br:v4.0.9-hotfix",
				},
			},
		},
		{
			Description: "aws backup",
			Values: operator.TidbRestoreVars{
				Bucket:    "mock-bucket",
				ClusterID: entity.ID(123),
				Cloud:     config.Aws,
			},
			ExpectResult: &v1alpha1.Restore{
				ObjectMeta: v1.ObjectMeta{
					Namespace:   "tidb123",
					Annotations: map[string]string{"iam.amazonaws.com/role": "mock-arn/dbaas-mock-project-456-6c5cd137-bucket-reader"},
				},
				Spec: v1alpha1.RestoreSpec{
					To:   &v1alpha1.TiDBAccessConfig{Port: 4000, User: "root"},
					Type: "full",
					StorageProvider: v1alpha1.StorageProvider{S3: &v1alpha1.S3StorageProvider{
						Provider: "aws",
						Bucket:   "mock-bucket",
					}},
					BR: &v1alpha1.BRConfig{
						Cluster:          "db",
						ClusterNamespace: "tidb123",
						Concurrency:      &concurrency,
						SendCredToTikv:   pointer.BoolPtr(false),
					},
					ToolImage: "gcr.io/pingcap-public/dbaas/br:v4.0.9-hotfix",
				},
			},
		},
	}

	for _, tt := range cases {
		t.Run(tt.Description, func(t *testing.T) {
			backupCR, err := bg.assembleTiDBRestore(tt.Values)
			if err != nil {
				t.Fatal(err)
			}
			diff := cmp.Diff(backupCR, tt.ExpectResult)
			if diff != "" {
				t.Fatalf("mismatch (-want +got):\n%s", diff)
			}
		})
	}
}
*/
