32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
package oss
|
|
|
|
import (
|
|
"context"
|
|
"git.yuntuo.hk/k2safe/go-omni/internal/storagefixture"
|
|
"git.yuntuo.hk/k2safe/go-omni/storage/storagetest"
|
|
sdk "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
|
|
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestSDKProtocolContract(t *testing.T) {
|
|
server := httptest.NewTLSServer(storagefixture.Handler())
|
|
defer server.Close()
|
|
cfg := sdk.LoadDefaultConfig().WithRegion("cn-hangzhou").WithEndpoint(server.URL).WithUsePathStyle(true).WithCredentialsProvider(credentials.NewStaticCredentialsProvider("fixtureAccess", "fixtureSecret")).WithHttpClient(server.Client())
|
|
store, err := New(sdk.NewClient(cfg), "testbucket", 64)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
storagetest.Run(t, store)
|
|
u, err := store.PresignGet(context.Background(), "a/file.txt", time.Minute)
|
|
if err != nil || u.Query().Get("x-oss-signature") == "" || !strings.Contains(u.Path, "a/file.txt") {
|
|
t.Fatal("invalid signed URL", err)
|
|
}
|
|
if _, err = store.PresignGet(context.Background(), "a", 2*time.Hour); err == nil {
|
|
t.Fatal("TTL accepted")
|
|
}
|
|
}
|