package test import ( "context" "io" "log/slog" "testing" objectstore "queryorchestration/internal/serviceconfig/objectstore" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/s3" awstypes "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/stretchr/testify/require" ) func CreateBucket(t testing.TB, ctx context.Context, cfg objectstore.ConfigProvider, name string) { _, err := cfg.GetStoreClient().CreateBucket(ctx, &s3.CreateBucketInput{ Bucket: aws.String(name), }) require.NoError(t, err) slog.Info("create bucket", "bucket", name) err = cfg.PingStoreByName(ctx, name) require.NoError(t, err) } const BucketName = "documentbucket" func SetBucketNotifs(t testing.TB, ctx context.Context, cfg objectstore.ConfigProvider, name string) { arn := GetQueueArn(cfg, StoreEventRunnerName) _, err := cfg.GetStoreClient().PutBucketNotificationConfiguration(ctx, &s3.PutBucketNotificationConfigurationInput{ Bucket: &name, NotificationConfiguration: &awstypes.NotificationConfiguration{ QueueConfigurations: []awstypes.QueueConfiguration{ { QueueArn: &arn, Events: []awstypes.Event{ awstypes.EventS3ObjectCreated, }, }, }, }, }) require.NoError(t, err) slog.Info("set bucket notifs", "bucket", name, "queueARN", arn) } func SetStoreClient(t testing.TB, ctx context.Context, cfg objectstore.ConfigProvider, endpoint string) { cfg.SetS3Endpoint(endpoint) cfg.SetS3UsePathStyle(true) err := cfg.SetStoreClient(ctx) require.NoError(t, err) } type PutObjectParams struct { Key objectstore.BucketKey Bucket string File io.Reader } func PutObject(t testing.TB, ctx context.Context, cfg objectstore.ConfigProvider, params PutObjectParams) { key := params.Key.String() _, err := cfg.GetStoreClient().PutObject(ctx, &s3.PutObjectInput{ Bucket: ¶ms.Bucket, Key: &key, Body: params.File, }) require.NoError(t, err) slog.Info("put object", "bucket", params.Bucket, "key", key) }