[bugfix] Fix NopDecoder

* Fixes #41
This commit is contained in:
Craig Peterson 2016-10-02 23:16:01 -06:00 committed by Matt Silverlock
parent c13558c2b1
commit fa5329f913
2 changed files with 31 additions and 4 deletions

View file

@ -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 -------------------------------------------------------------------

View file

@ -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))