blob: 8afb931e0db62f2bd59f8a6e26bda137d69e5ca5 [file] [log] [blame]
package jws
import (
"bytes"
"encoding/base64"
"encoding/json"
"testing"
)
type easy []byte
func (e *easy) UnmarshalJSON(b []byte) error {
// json.Marshal encodes easy as it would a []byte, so in
// `"base64"` format.
dst := make([]byte, base64.StdEncoding.DecodedLen(len(b)-2))
n, err := base64.StdEncoding.Decode(dst, b[1:len(b)-1])
if err != nil {
return err
}
*e = easy(dst[:n])
return nil
}
var _ json.Unmarshaler = (*easy)(nil)
var easyData = easy(`"easy data!"`)
func TestParseWithUnmarshaler(t *testing.T) {
j := New(easyData, SigningMethodRS512)
b, err := j.Flat(rsaPriv)
if err != nil {
t.Error(err)
}
var e easy
j2, err := Parse(b, &e)
if err != nil {
t.Error(err)
}
if !bytes.Equal(easyData, *j2.payload.v.(*easy)) {
Error(t, easyData, *j2.payload.v.(*easy))
}
}