package aws

import (
	"testing"

	"github.com/aws/aws-sdk-go-v2/service/s3"
	"github.com/stretchr/testify/require"
	"github.com/tidbcloud/serverless-service/internal/config"
)

func TestNewPresignerProviderDoesNotPanicWithoutS3Client(t *testing.T) {
	original := config.Global()
	t.Cleanup(func() { config.Set(original) })

	t.Run("gcp us-east4", func(t *testing.T) {
		config.Set(&config.CentralConfig{
			WorkerConfig: config.WorkerConfig{
				RegionalConfig: []config.RegionalConfig{
					{Provider: config.ProviderGCP, Region: "us-east4"},
				},
			},
		})
		require.NotPanics(t, func() {
			p := NewPresignerProvider(&S3ClientProvider{s3Clients: map[string]*s3.Client{}})
			_, err := p.GetPresignerClient(config.ProviderGCP, "us-east4")
			require.Error(t, err)
		})
	})

	t.Run("aws region listed but s3 client missing", func(t *testing.T) {
		config.Set(&config.CentralConfig{
			WorkerConfig: config.WorkerConfig{
				RegionalConfig: []config.RegionalConfig{
					{Provider: config.ProviderAWS, Region: "us-west-2"},
				},
			},
		})
		require.NotPanics(t, func() {
			p := NewPresignerProvider(&S3ClientProvider{s3Clients: map[string]*s3.Client{}})
			_, err := p.GetPresignerClient(config.ProviderAWS, "us-west-2")
			require.Error(t, err)
		})
	})
}
