This commit is contained in:
李琦
2026-05-28 16:39:51 +08:00
parent 1982d304ca
commit 6030c62e2a
42 changed files with 3360 additions and 100 deletions

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