github.com/qiniu/go-sdk/v7@v7.27.0/storage/token_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package storage 5 6 import ( 7 "crypto/hmac" 8 "crypto/sha1" 9 "encoding/base64" 10 "encoding/json" 11 "fmt" 12 "strings" 13 "testing" 14 "time" 15 16 "github.com/qiniu/go-sdk/v7/auth" 17 ) 18 19 func TestResignToken(t *testing.T) { 20 p := PutPolicy{} 21 mac := auth.New("accessKeyAccessKey", "secretKeySecretKey") 22 token1 := p.UploadToken(mac) 23 token2 := p.UploadToken(mac) 24 if token1 != token2 { 25 t.Fail() 26 } 27 } 28 29 func TestForceSaveKeyFalse(t *testing.T) { 30 p := PutPolicy{} 31 pj, _ := json.Marshal(p) 32 s := string(pj) 33 t.Log(s) 34 if strings.Contains(s, "forceSaveKey") { 35 t.Fail() 36 } 37 } 38 39 func TestForceSaveKeyTrue(t *testing.T) { 40 p := PutPolicy{} 41 p.ForceSaveKey = true 42 pj, _ := json.Marshal(p) 43 s := string(pj) 44 t.Log(s) 45 if !strings.Contains(s, "forceSaveKey") { 46 t.Fail() 47 } 48 } 49 50 func TestGetAkBucketFromUploadToken(t *testing.T) { 51 bucketName := "fakebucket" 52 keyName := "fakekey" 53 accessKey := "fakeaccesskey" 54 secretKey := []byte("fakesecretkey") 55 policy := PutPolicy{Scope: fmt.Sprintf("%s:%s", bucketName, keyName), Expires: uint64(time.Now().Unix()) + 24*3600} 56 cred := auth.Credentials{AccessKey: accessKey, SecretKey: secretKey} 57 token := policy.UploadToken(&cred) 58 59 ak, bucket, err := getAkBucketFromUploadToken(token) 60 if err != nil { 61 t.Fatal(err) 62 } 63 if ak != accessKey || bucket != bucketName { 64 t.Fail() 65 } 66 67 b, _ := json.Marshal(policy) 68 data := base64.URLEncoding.EncodeToString(b) 69 suInfo := ":12345/0:" 70 hash := hmac.New(sha1.New, secretKey) 71 hash.Write([]byte(suInfo)) 72 hash.Write([]byte(data)) 73 sign := base64.URLEncoding.EncodeToString(hash.Sum(nil)) 74 suToken := fmt.Sprintf("%s%s:%s:%s", suInfo, accessKey, sign, data) 75 ak, bucket, err = getAkBucketFromUploadToken(suToken) 76 if err != nil { 77 t.Fatal(err) 78 } 79 if ak != accessKey || bucket != bucketName { 80 t.Fail() 81 } 82 }