func (c *mockAWSClient) GetPublicAccessBlock(input *s3.GetPublicAccessBlockInput) (*s3.GetPublicAccessBlockOutput, error) {
	return c.s3Client.GetPublicAccessBlock(input)
}
GetPublicAccessBlock implements the GetPublicAccessBlock method for mockAWSClient.
package s3
import (
	"reflect"
	"testing"
	"time"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awserr"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3"
	"github.com/aws/aws-sdk-go/service/s3/s3iface"
	storageConstants "github.com/openshift/managed-velero-operator/pkg/storage/constants"
)
const (
	clusterInfraName = "fakeCluster"
	region           = "us-east-1"
)
var awsConfig = &aws.Config{Region: aws.String(region)}
var s, _ = session.NewSession(awsConfig)
var validBuckets = []*s3.Bucket{
	{
		CreationDate: &time.Time{},
		Name:         aws.String("testBucket"),
	},
}
var inconsistentBuckets = []*s3.Bucket{
	{
		CreationDate: &time.Time{},
		Name:         aws.String("inconsistentBucket"),
	},
	{
		CreationDate: &time.Time{},
		Name:         aws.String("testBucket"),
	},
}
var emptyBuckets = []*s3.Bucket{}
func newMockAWSClient(buckets []*s3.Bucket) *mockAWSClient {
	return &mockAWSClient{
		s3Client:    s3.New(s),
		Config:      awsConfig,
		Buckets:     buckets,
		BucketsTags: make(map[string]*s3.Tagging),
	}
}
var fakeClient = newMockAWSClient(validBuckets)
var fakeInconsistentClient = newMockAWSClient(inconsistentBuckets)
var fakeEmptyClient = newMockAWSClient(emptyBuckets)
type mockAWSClient struct {
	s3Client    s3iface.S3API
	Config      *aws.Config
	Buckets     []*s3.Bucket
	BucketsTags map[string]*s3.Tagging
}
func (c *mockAWSClient) CreateBucket(input *s3.CreateBucketInput) (*s3.CreateBucketOutput, error) {
	return &s3.CreateBucketOutput{
		Location: aws.String(region),
	}, nil
}
func (c *mockAWSClient) DeleteBucketTagging(input *s3.DeleteBucketTaggingInput) (*s3.DeleteBucketTaggingOutput, error) {
	return c.s3Client.DeleteBucketTagging(input)
}
func (c *mockAWSClient) GetAWSClientConfig() *aws.Config {
	return c.Config
}
func (c *mockAWSClient) HeadBucket(input *s3.HeadBucketInput) (*s3.HeadBucketOutput, error) {
	if *input.Bucket == "testBucket" {
		return &s3.HeadBucketOutput{}, nil
	}
	return &s3.HeadBucketOutput{}, awserr.New("NotFound", "Not Found", nil)
}
func (c *mockAWSClient) GetBucketLocation(input *s3.GetBucketLocationInput) (*s3.GetBucketLocationOutput, error) {
	if *input.Bucket == "testBucket" {
		return &s3.GetBucketLocationOutput{LocationConstraint: aws.String(region)}, nil
	}
	return &s3.GetBucketLocationOutput{}, awserr.New("NotFound", "Not Found", nil)
}
func (c *mockAWSClient) GetBucketTagging(input *s3.GetBucketTaggingInput) (*s3.GetBucketTaggingOutput, error) {
	if *input.Bucket == "testBucket" {
		return &s3.GetBucketTaggingOutput{
			TagSet: []*s3.Tag{
				{
					Key:   aws.String(bucketTagBackupLocation),
					Value: aws.String(storageConstants.DefaultVeleroBackupStorageLocation),
				},
				{
					Key:   aws.String(bucketTagInfraName),
					Value: aws.String(clusterInfraName),
				},
			},
		}, nil
	}
	return &s3.GetBucketTaggingOutput{
		TagSet: []*s3.Tag{},
	}, nil
}