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