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  }