测试
This commit is contained in:
85
internal/fileauth/parts_test.go
Normal file
85
internal/fileauth/parts_test.go
Normal file
@@ -0,0 +1,85 @@
|
||||
package fileauth
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBuildUploadTokenParts_matchesCreateUploadTokenAt(t *testing.T) {
|
||||
const (
|
||||
accessKey = "accessKey"
|
||||
secret = "secret"
|
||||
bucket = "other-doc"
|
||||
deadline = int64(1735689600)
|
||||
)
|
||||
want, err := CreateUploadTokenAt(accessKey, secret, bucket, deadline)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
parts, err := BuildUploadTokenParts(accessKey, secret, bucket, deadline)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if parts.UploadToken != want {
|
||||
t.Fatalf("token mismatch\ngot: %s\nwant: %s", parts.UploadToken, want)
|
||||
}
|
||||
if parts.AccessKey != accessKey {
|
||||
t.Fatalf("accessKey=%q", parts.AccessKey)
|
||||
}
|
||||
if parts.PolicyJSON != `{"scope":"other-doc","deadline":1735689600}` {
|
||||
t.Fatalf("policy=%q", parts.PolicyJSON)
|
||||
}
|
||||
if strings.Contains(parts.PolicyJSON, "returnBody") {
|
||||
t.Fatalf("upload profile must not include returnBody: %q", parts.PolicyJSON)
|
||||
}
|
||||
if parts.Algorithm != "ver233-upload" {
|
||||
t.Fatalf("algorithm=%q", parts.Algorithm)
|
||||
}
|
||||
if parts.SignInput != parts.EncodedPutPolicy {
|
||||
t.Fatal("ver233 signInput must be encodedPutPolicy")
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateUploadTokenFormat_golden(t *testing.T) {
|
||||
parts, err := BuildUploadTokenParts("accessKey", "secret", "other-doc", 1735689600)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
ok, checks := ValidateUploadTokenFormat(parts.UploadToken, "accessKey")
|
||||
if !ok {
|
||||
t.Fatalf("validate failed: %+v", checks)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSplitUploadToken_docExample(t *testing.T) {
|
||||
ak, sign, pol, ok := SplitUploadToken(DocExampleRegulatory)
|
||||
if !ok {
|
||||
t.Fatal("split failed")
|
||||
}
|
||||
if ak != "MY_ACCESS_KEY" {
|
||||
t.Fatalf("ak=%q", ak)
|
||||
}
|
||||
if sign != "wQ4ofysef1R7IKnrziqtomqyDvI=" {
|
||||
t.Fatalf("sign=%q", sign)
|
||||
}
|
||||
if !strings.HasPrefix(pol, "eyJ") {
|
||||
t.Fatalf("policy=%q", pol)
|
||||
}
|
||||
decoded, err := DecodePutPolicyB64(pol)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(decoded, "returnBody") {
|
||||
t.Fatalf("decoded missing returnBody: %s", decoded)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRegulatoryDocExample(t *testing.T) {
|
||||
ex := RegulatoryDocExample()
|
||||
if ex.AccessKeyPart != "MY_ACCESS_KEY" {
|
||||
t.Fatalf("ak=%q", ex.AccessKeyPart)
|
||||
}
|
||||
if ex.PolicyJSONDecoded == "" {
|
||||
t.Fatal("empty decoded policy")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user