35 lines
1.1 KiB
Go
35 lines
1.1 KiB
Go
package s3
|
|
|
|
import (
|
|
"context"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.yuntuo.hk/k2safe/go-omni/internal/storagefixture"
|
|
"git.yuntuo.hk/k2safe/go-omni/storage/storagetest"
|
|
"github.com/minio/minio-go/v7/pkg/credentials"
|
|
)
|
|
|
|
func TestUploadProtocol(t *testing.T) {
|
|
server := httptest.NewTLSServer(storagefixture.MultipartHandler())
|
|
defer server.Close()
|
|
s, err := Open(Config{Endpoint: strings.TrimPrefix(server.URL, "https://"), Region: "us-east-1", Bucket: "testbucket", Secure: true, MaxBytes: 6 << 20, Credentials: credentials.NewStaticV4("fixtureAccess", "fixtureSecret", ""), Transport: server.Client().Transport})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
storagetest.RunUploads(t, s, server.Client())
|
|
}
|
|
func TestR2UploadSigning(t *testing.T) {
|
|
cfg, _ := R2Config(strings.Repeat("a", 32), "testbucket", credentials.NewStaticV4("fixtureAccess", "fixtureSecret", ""))
|
|
s, err := Open(cfg)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
r, err := s.PresignPut(context.Background(), "file", 5, "text/plain", time.Minute)
|
|
if err != nil || !strings.Contains(r.URL, "/auto/s3/") && !strings.Contains(r.URL, "%2Fauto%2Fs3%2F") {
|
|
t.Fatal("R2 upload signing", err)
|
|
}
|
|
}
|