parent
c13558c2b1
commit
fa5329f913
2 changed files with 31 additions and 4 deletions
|
@ -102,6 +102,7 @@ var (
|
|||
errTimestampExpired = cookieError{typ: decodeError, msg: "expired timestamp"}
|
||||
errDecryptionFailed = cookieError{typ: decodeError, msg: "the value could not be decrypted"}
|
||||
errValueNotByte = cookieError{typ: decodeError, msg: "value not a []byte."}
|
||||
errValueNotBytePtr = cookieError{typ: decodeError, msg: "value not a pointer to []byte."}
|
||||
|
||||
// ErrMacInvalid indicates that cookie decoding failed because the HMAC
|
||||
// could not be extracted and verified. Direct use of this error
|
||||
|
@ -474,12 +475,11 @@ func (e NopEncoder) Serialize(src interface{}) ([]byte, error) {
|
|||
|
||||
// Deserialize passes a []byte through as-is.
|
||||
func (e NopEncoder) Deserialize(src []byte, dst interface{}) error {
|
||||
if _, ok := dst.([]byte); ok {
|
||||
dst = src
|
||||
if dat, ok := dst.(*[]byte); ok {
|
||||
*dat = src
|
||||
return nil
|
||||
}
|
||||
|
||||
return errValueNotByte
|
||||
return errValueNotBytePtr
|
||||
}
|
||||
|
||||
// Encoding -------------------------------------------------------------------
|
||||
|
|
|
@ -193,6 +193,33 @@ func TestJSONSerialization(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestNopSerialization(t *testing.T) {
|
||||
cookieData := "fooobar123"
|
||||
sz := NopEncoder{}
|
||||
|
||||
if _, err := sz.Serialize(cookieData); err != errValueNotByte {
|
||||
t.Fatal("Expected error passing string")
|
||||
}
|
||||
dat, err := sz.Serialize([]byte(cookieData))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if (string(dat)) != cookieData {
|
||||
t.Fatal("Expected serialized data to be same as source")
|
||||
}
|
||||
|
||||
var dst []byte
|
||||
if err = sz.Deserialize(dat, dst); err != errValueNotBytePtr {
|
||||
t.Fatal("Expect error unless you pass a *[]byte")
|
||||
}
|
||||
if err = sz.Deserialize(dat, &dst); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if (string(dst)) != cookieData {
|
||||
t.Fatal("Expected deserialized data to be same as source")
|
||||
}
|
||||
}
|
||||
|
||||
func TestEncoding(t *testing.T) {
|
||||
for _, value := range testStrings {
|
||||
encoded := encode([]byte(value))
|
||||
|
|
Loading…
Reference in a new issue