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) } }