initial
This commit is contained in:
105
rclone/minio_test.go
Executable file
105
rclone/minio_test.go
Executable file
@@ -0,0 +1,105 @@
|
||||
package rclone
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"local/sandbox/arlo-cleaner/config"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMinio(t *testing.T) {
|
||||
if _, ok := os.LookupEnv("INTEGRATION"); !ok {
|
||||
t.Log("$INTEGRATION not set")
|
||||
return
|
||||
}
|
||||
t.Log("docker run --rm -d --name minio -p 9000:9000 -e MINIO_ACCESS_KEY=accesskey -e MINIO_SECRET_KEY=secretkey minio/minio server /data && mc mb local/bucket")
|
||||
f, err := ioutil.TempFile(os.TempDir(), "minio.config.*")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.Remove(f.Name())
|
||||
f.Write([]byte(`
|
||||
[minio]
|
||||
type = s3
|
||||
provider = Minio
|
||||
env_auth = false
|
||||
access_key_id = accesskey
|
||||
secret_access_key = secretkey
|
||||
endpoint = http://localhost:9000
|
||||
acl = private
|
||||
`))
|
||||
f.Close()
|
||||
os.Setenv("RCCONF", f.Name())
|
||||
|
||||
was := os.Args
|
||||
defer func() {
|
||||
os.Args = was
|
||||
}()
|
||||
os.Args = []string{"a"}
|
||||
if err := config.Refresh(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
rc, err := New()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
name := "minio:bucket/key"
|
||||
|
||||
calls := []struct {
|
||||
foo func(*RClone, string) error
|
||||
ok bool
|
||||
}{
|
||||
{minioDel, true},
|
||||
{minioCopyFrom, false},
|
||||
{minioCopyTo, true},
|
||||
{minioList, true},
|
||||
{minioCopyFrom, true},
|
||||
{minioDel, true},
|
||||
{minioCopyFrom, false},
|
||||
}
|
||||
|
||||
for _, call := range calls {
|
||||
if err := call.foo(rc, name); (err == nil) != call.ok {
|
||||
t.Fatal(call)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func minioCopyTo(rc *RClone, name string) error {
|
||||
return rc.CopyTo(strings.NewReader("hello"), name)
|
||||
}
|
||||
|
||||
func minioCopyFrom(rc *RClone, name string) error {
|
||||
w := bytes.NewBuffer(nil)
|
||||
if err := rc.CopyFrom(w, name); err != nil {
|
||||
return err
|
||||
} else if v := string(w.Bytes()); v != "hello" {
|
||||
return errors.New(v)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func minioDel(rc *RClone, name string) error {
|
||||
return rc.Del(name)
|
||||
}
|
||||
|
||||
func minioList(rc *RClone, name string) error {
|
||||
names, err := rc.List(path.Dir(name))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(names) != 1 {
|
||||
return fmt.Errorf("%v", len(names))
|
||||
}
|
||||
if names[0] != "key" {
|
||||
return errors.New(names[0])
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user