s3manager-web/s3-client-mock.go

81 lines
1.5 KiB
Go
Raw Normal View History

2017-04-03 14:08:01 +02:00
package main
import (
2017-04-03 22:03:45 +02:00
"errors"
2017-04-03 14:08:01 +02:00
"io"
minio "github.com/minio/minio-go"
)
// S3ClientMock is a mocked S3 client
type S3ClientMock struct {
2017-04-03 23:52:41 +02:00
Buckets []minio.BucketInfo
Objects []minio.ObjectInfo
Err error
2017-04-03 14:08:01 +02:00
}
func (s S3ClientMock) CopyObject(string, string, string, minio.CopyConditions) error {
return s.Err
}
2017-04-03 23:52:41 +02:00
func (s S3ClientMock) GetObject(bucketName string, objectName string) (*minio.Object, error) {
if s.Err != nil {
return nil, s.Err
}
return &minio.Object{}, nil
2017-04-03 14:08:01 +02:00
}
func (s S3ClientMock) ListBuckets() ([]minio.BucketInfo, error) {
return s.Buckets, s.Err
}
2017-04-03 22:03:45 +02:00
func (s S3ClientMock) ListObjectsV2(bucketName string, p string, r bool, d <-chan struct{}) <-chan minio.ObjectInfo {
// Add error if exists
if s.Err != nil {
2017-04-03 23:52:41 +02:00
s.Objects = append(s.Objects, minio.ObjectInfo{
2017-04-03 22:03:45 +02:00
Err: s.Err,
})
}
// Check if bucket exists
found := false
for _, b := range s.Buckets {
if b.Name == bucketName {
found = true
2017-04-03 23:52:41 +02:00
break
2017-04-03 22:03:45 +02:00
}
}
if !found {
2017-04-03 23:52:41 +02:00
s.Objects = append(s.Objects, minio.ObjectInfo{
2017-04-03 22:03:45 +02:00
Err: errors.New("The specified bucket does not exist."),
})
}
2017-04-03 23:52:41 +02:00
objCh := make(chan minio.ObjectInfo, len(s.Objects))
2017-04-03 22:03:45 +02:00
defer close(objCh)
2017-04-03 23:52:41 +02:00
for _, obj := range s.Objects {
2017-04-03 22:03:45 +02:00
objCh <- obj
}
return objCh
2017-04-03 14:08:01 +02:00
}
func (s S3ClientMock) MakeBucket(string, string) error {
return s.Err
}
func (s S3ClientMock) PutObject(string, string, io.Reader, string) (int64, error) {
return 0, s.Err
}
func (s S3ClientMock) RemoveBucket(string) error {
return s.Err
}
func (s S3ClientMock) RemoveObject(string, string) error {
return s.Err
}