oss请求处理
This commit is contained in:
1 parent
18cb51670c
commit
a9a4cdf125
18 files changed
+450
-29
No files matched your search
@@ -9,6 +9,7 @@ import (
|
||||
"log"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ossClientStub struct {
|
||||
@@ -19,6 +20,9 @@ type ossClientStub struct {
|
||||
body []byte
|
||||
contentType string
|
||||
getErr, errorToReturn error
|
||||
signedRequest OSSObjectRequest
|
||||
signedTTL time.Duration
|
||||
signedURL string
|
||||
}
|
||||
|
||||
func (s *ossClientStub) Put(_ context.Context, r OSSPutRequest) error {
|
||||
@@ -41,6 +45,10 @@ func (s *ossClientStub) Delete(_ context.Context, r OSSObjectRequest) error {
|
||||
s.deletes = append(s.deletes, r)
|
||||
return s.errorToReturn
|
||||
}
|
||||
func (s *ossClientStub) SignGetURL(request OSSObjectRequest, ttl time.Duration) (string, error) {
|
||||
s.signedRequest, s.signedTTL = request, ttl
|
||||
return s.signedURL, s.errorToReturn
|
||||
}
|
||||
|
||||
func TestOSSPutUsesConfiguredAddressContentTypeAndPublicACL(t *testing.T) {
|
||||
client := &ossClientStub{}
|
||||
@@ -85,6 +93,23 @@ func TestOSSReadDeleteAndMissingMapping(t *testing.T) {
|
||||
t.Fatalf("delete missing=%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestOSSSignsExternalReadsAgainstPublicBucketBaseURL(t *testing.T) {
|
||||
client := &ossClientStub{signedURL: "https://bucket-a.oss-cn-test.aliyuncs.com/uploads/a.png?Signature=signed"}
|
||||
store, err := NewOSS(OSSConfig{
|
||||
Endpoint: "https://oss-cn-test-internal.aliyuncs.com", Bucket: "bucket-a", PublicBaseURL: "https://bucket-a.oss-cn-test.aliyuncs.com",
|
||||
}, client)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
got, err := store.SignReadURL("uploads/a.png", time.Hour)
|
||||
if err != nil || got != client.signedURL {
|
||||
t.Fatalf("signed URL = %q, err=%v", got, err)
|
||||
}
|
||||
if client.signedRequest.Endpoint != "https://bucket-a.oss-cn-test.aliyuncs.com" || client.signedRequest.Bucket != "bucket-a" || client.signedRequest.Key != "uploads/a.png" || client.signedTTL != time.Hour {
|
||||
t.Fatalf("signed request = %#v, ttl=%s", client.signedRequest, client.signedTTL)
|
||||
}
|
||||
}
|
||||
func TestOSSRejectsUnsafeKeysAndIncompleteConfiguration(t *testing.T) {
|
||||
if _, err := NewOSS(OSSConfig{Endpoint: "e", Bucket: "b"}, &ossClientStub{}); err == nil {
|
||||
t.Fatal("expected config error")
|
||||
|
||||
Reference in new issue
Block a user