route/vendor/github.com/aws/aws-sdk-go/service/cloudfront/sign/sign_cookie_test.go

122 lines
2.8 KiB
Go

package sign
import (
"crypto/rsa"
"testing"
"time"
)
func TestNewCookieSigner(t *testing.T) {
privKey, err := rsa.GenerateKey(randReader, 1024)
if err != nil {
t.Fatalf("Unexpected priv key error, %#v", err)
}
signer := NewCookieSigner("keyID", privKey)
if e, a := "keyID", signer.keyID; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := privKey, signer.privKey; e != a {
t.Errorf("expect %v, got %v", e, a)
}
}
func TestSignCookie(t *testing.T) {
privKey, err := rsa.GenerateKey(randReader, 1024)
if err != nil {
t.Errorf("expect no error, got %v", err)
}
signer := NewCookieSigner("keyID", privKey)
cookies, err := signer.Sign("http*://*", time.Now().Add(1*time.Hour))
if err != nil {
t.Errorf("expect no error, got %v", err)
}
if e, a := CookiePolicyName, cookies[0].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := CookieSignatureName, cookies[1].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := CookieKeyIDName, cookies[2].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
}
func TestSignCookie_WithPolicy(t *testing.T) {
privKey, err := rsa.GenerateKey(randReader, 1024)
if err != nil {
t.Errorf("expect no error, got %v", err)
}
p := &Policy{
Statements: []Statement{
{
Resource: "*",
Condition: Condition{
DateLessThan: &AWSEpochTime{time.Now().Add(1 * time.Hour)},
},
},
},
}
signer := NewCookieSigner("keyID", privKey)
cookies, err := signer.SignWithPolicy(p)
if err != nil {
t.Errorf("expect no error, got %v", err)
}
if e, a := CookiePolicyName, cookies[0].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := CookieSignatureName, cookies[1].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := CookieKeyIDName, cookies[2].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
}
func TestSignCookie_WithCookieOptions(t *testing.T) {
privKey, err := rsa.GenerateKey(randReader, 1024)
if err != nil {
t.Errorf("expect no error, got %v", err)
}
expires := time.Now().Add(1 * time.Hour)
signer := NewCookieSigner("keyID", privKey)
cookies, err := signer.Sign("https://example.com/*", expires, func(o *CookieOptions) {
o.Path = "/"
o.Domain = ".example.com"
o.Secure = true
})
if err != nil {
t.Errorf("expect no error, got %v", err)
}
if e, a := CookiePolicyName, cookies[0].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := CookieSignatureName, cookies[1].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := CookieKeyIDName, cookies[2].Name; e != a {
t.Errorf("expect %v, got %v", e, a)
}
for _, c := range cookies {
if e, a := "/", c.Path; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if e, a := ".example.com", c.Domain; e != a {
t.Errorf("expect %v, got %v", e, a)
}
if !c.Secure {
t.Errorf("expect to be true")
}
}
}