-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoken_test.go
133 lines (113 loc) · 6.42 KB
/
token_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package appserver
import (
"encoding/json"
"fmt"
"sync"
"testing"
"time"
)
func TestTokenGenerate(t *testing.T) {
token := NewToken(&Config{
AccessKeyId: "yourAccessKeyId",
AccessKeySecret: "yourAccessKeySecret",
Host: "https://bucket-name.oss-cn-hangzhou.aliyuncs.com",
ExpireSecond: 600,
})
targetTime, _ := time.Parse("2006-01-02 15:04:05", "2025-01-01 00:00:00")
policy := new(Policy)
policy.SetExpireTime(targetTime)
tokenPayload, _ := token.SetPolicy(policy).Generate()
tokenJson, _ := json.Marshal(tokenPayload)
tokenJsonStr := string(tokenJson)
expectTokenStr := `{"OSSAccessKeyId":"yourAccessKeyId","policy":"eyJleHBpcmF0aW9uIjoiMjAyNS0wMS0wMVQwMDowMDowMFoiLCJjb25kaXRpb25zIjpudWxsfQ==","callback":"","signature":"S7QSuk+DEd0QdMRZFhwv3yjuE6g=","host":"https://bucket-name.oss-cn-hangzhou.aliyuncs.com","expire":1735689600,"directory":""}`
if tokenJsonStr != expectTokenStr {
t.Error("token error")
}
}
func TestTokenWithConfigGenerate(t *testing.T) {
token := NewToken(&Config{
AccessKeyId: "yourAccessKeyId",
AccessKeySecret: "yourAccessKeySecret",
Host: "https://bucket-name.oss-cn-hangzhou.aliyuncs.com",
Directory: "user-dir-prefix/",
ExpireSecond: 600,
CallbackUrl: "http://domain.com/oss/callback",
})
targetTime, _ := time.Parse("2006-01-02 15:04:05", "2025-01-01 00:00:00")
policy := new(Policy)
policy.SetExpireTime(targetTime)
policy.SetDirectory("user-dir-prefix/")
tokenPayload, _ := token.SetPolicy(policy).Generate()
tokenJson, _ := json.Marshal(tokenPayload)
tokenJsonStr := string(tokenJson)
expectTokenStr := `{"OSSAccessKeyId":"yourAccessKeyId","policy":"eyJleHBpcmF0aW9uIjoiMjAyNS0wMS0wMVQwMDowMDowMFoiLCJjb25kaXRpb25zIjpbWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJ1c2VyLWRpci1wcmVmaXgvIl1dfQ==","callback":"eyJjYWxsYmFja1VybCI6Imh0dHA6Ly9kb21haW4uY29tL29zcy9jYWxsYmFjayIsImNhbGxiYWNrQm9keSI6IntcImJ1Y2tldFwiOiR7YnVja2V0fSxcIm9iamVjdFwiOiR7b2JqZWN0fSxcImV0YWdcIjoke2V0YWd9LFwic2l6ZVwiOiR7c2l6ZX0sXCJtaW1lVHlwZVwiOiR7bWltZVR5cGV9LFwiaW1hZ2VJbmZvXCI6e1wiaGVpZ2h0XCI6JHtpbWFnZUluZm8uaGVpZ2h0fSxcIndpZHRoXCI6JHtpbWFnZUluZm8ud2lkdGh9LFwiZm9ybWF0XCI6JHtpbWFnZUluZm8uZm9ybWF0fX0sXCJjcmM2NFwiOiR7Y3JjNjR9LFwiY29udGVudE1kNVwiOiR7Y29udGVudE1kNX0sXCJ2cGNJZFwiOiR7dnBjSWR9LFwiY2xpZW50SXBcIjoke2NsaWVudElwfSxcInJlcUlkXCI6JHtyZXFJZH0sXCJvcGVyYXRpb25cIjoke29wZXJhdGlvbn19IiwiY2FsbGJhY2tCb2R5VHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifQ==","signature":"uXL82wU5IGCd7vcZKX9gua5TUJs=","host":"https://bucket-name.oss-cn-hangzhou.aliyuncs.com","expire":1735689600,"directory":"user-dir-prefix/"}`
if tokenJsonStr != expectTokenStr {
t.Error("token error")
}
//{
// "OSSAccessKeyId": "yourAccessKeyId",
// "policy": "eyJleHBpcmF0aW9uIjoiMjAyNS0wMS0wMVQwMDowMDowMFoiLCJjb25kaXRpb25zIjpbWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJ1c2VyLWRpci1wcmVmaXgvIl1dfQ==",
// "callback": "eyJjYWxsYmFja1VybCI6Imh0dHA6Ly9kb21haW4uY29tL29zcy9jYWxsYmFjayIsImNhbGxiYWNrQm9keSI6IntcImJ1Y2tldFwiOiR7YnVja2V0fSxcIm9iamVjdFwiOiR7b2JqZWN0fSxcImV0YWdcIjoke2V0YWd9LFwic2l6ZVwiOiR7c2l6ZX0sXCJtaW1lVHlwZVwiOiR7bWltZVR5cGV9LFwiaW1hZ2VJbmZvXCI6e1wiaGVpZ2h0XCI6JHtpbWFnZUluZm8uaGVpZ2h0fSxcIndpZHRoXCI6JHtpbWFnZUluZm8ud2lkdGh9LFwiZm9ybWF0XCI6JHtpbWFnZUluZm8uZm9ybWF0fX0sXCJjcmM2NFwiOiR7Y3JjNjR9LFwiY29udGVudE1kNVwiOiR7Y29udGVudE1kNX0sXCJ2cGNJZFwiOiR7dnBjSWR9LFwiY2xpZW50SXBcIjoke2NsaWVudElwfSxcInJlcUlkXCI6JHtyZXFJZH0sXCJvcGVyYXRpb25cIjoke29wZXJhdGlvbn19IiwiY2FsbGJhY2tCb2R5VHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifQ==",
// "signature": "uXL82wU5IGCd7vcZKX9gua5TUJs=",
// "host": "https://bucket-name.oss-cn-hangzhou.aliyuncs.com",
// "expire": 1735689600,
// "directory": "user-dir-prefix/"
//}
}
func TestTokenWithPolicyGenerate(t *testing.T) {
token := NewToken(&Config{
AccessKeyId: "yourAccessKeyId",
AccessKeySecret: "yourAccessKeySecret",
Host: "https://bucket-name.oss-cn-hangzhou.aliyuncs.com",
Directory: "user-dir-prefix/",
ExpireSecond: 600,
CallbackUrl: "http://domain.com/oss/callback",
})
targetTime, _ := time.Parse("2006-01-02 15:04:05", "2025-01-01 00:00:00")
policy := new(Policy)
policy.SetExpireTime(targetTime)
policy.SetDirectory("user-dir-prefix/")
policy.SetBucket("bucket-name")
policy.SetContentLengthRange(1, 10*1024*1024)
policy.SetContentType("image/jpeg", "image/png")
tokenPayload, _ := token.SetPolicy(policy).Generate()
tokenJson, _ := json.Marshal(tokenPayload)
tokenJsonStr := string(tokenJson)
expectTokenStr := `{"OSSAccessKeyId":"yourAccessKeyId","policy":"eyJleHBpcmF0aW9uIjoiMjAyNS0wMS0wMVQwMDowMDowMFoiLCJjb25kaXRpb25zIjpbWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJ1c2VyLWRpci1wcmVmaXgvIl0seyJidWNrZXQiOiJidWNrZXQtbmFtZSJ9LFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLDEsMTA0ODU3NjBdLFsiaW4iLCIkY29udGVudC10eXBlIixbImltYWdlL2pwZWciLCJpbWFnZS9wbmciXV1dfQ==","callback":"eyJjYWxsYmFja1VybCI6Imh0dHA6Ly9kb21haW4uY29tL29zcy9jYWxsYmFjayIsImNhbGxiYWNrQm9keSI6IntcImJ1Y2tldFwiOiR7YnVja2V0fSxcIm9iamVjdFwiOiR7b2JqZWN0fSxcImV0YWdcIjoke2V0YWd9LFwic2l6ZVwiOiR7c2l6ZX0sXCJtaW1lVHlwZVwiOiR7bWltZVR5cGV9LFwiaW1hZ2VJbmZvXCI6e1wiaGVpZ2h0XCI6JHtpbWFnZUluZm8uaGVpZ2h0fSxcIndpZHRoXCI6JHtpbWFnZUluZm8ud2lkdGh9LFwiZm9ybWF0XCI6JHtpbWFnZUluZm8uZm9ybWF0fX0sXCJjcmM2NFwiOiR7Y3JjNjR9LFwiY29udGVudE1kNVwiOiR7Y29udGVudE1kNX0sXCJ2cGNJZFwiOiR7dnBjSWR9LFwiY2xpZW50SXBcIjoke2NsaWVudElwfSxcInJlcUlkXCI6JHtyZXFJZH0sXCJvcGVyYXRpb25cIjoke29wZXJhdGlvbn19IiwiY2FsbGJhY2tCb2R5VHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifQ==","signature":"wQZPtbuNzqTOol/oXZHIv7SLhc0=","host":"https://bucket-name.oss-cn-hangzhou.aliyuncs.com","expire":1735689600,"directory":"user-dir-prefix/"}`
if tokenJsonStr != expectTokenStr {
t.Error("token error")
}
}
func TestTokenPolicy(t *testing.T) {
token := NewToken(&Config{
AccessKeyId: "yourAccessKeyId",
AccessKeySecret: "yourAccessKeySecret",
Host: "https://bucket-name.oss-cn-hangzhou.aliyuncs.com",
Directory: "user-dir-prefix/",
ExpireSecond: 600,
CallbackUrl: "http://domain.com/oss/callback",
})
g := sync.WaitGroup{}
for i := 0; i < 10; i++ {
g.Add(1)
go func(idx int) {
defer g.Done()
dir := fmt.Sprintf("user-%d-prefix/", idx)
policy := new(Policy)
policy.SetDirectory(dir)
tokenPayload, _ := token.SetPolicy(policy).Generate()
if tokenPayload.Directory != dir {
t.Error("dir error", dir)
}
}(i)
}
g.Wait()
}
func TestCallback(t *testing.T) {
t.Run("empty callback url", func(t *testing.T) {
cb := Callback{CallbackUrl: "", CallbackBody: CallbackBodyParam}
if err := cb.Validate(); err == nil {
t.Error("callback validate fail")
}
})
}