2016-04-08 13:08:22 -04:00
|
|
|
// Copyright 2016 The Go Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package jws
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/rand"
|
|
|
|
"crypto/rsa"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestSignAndVerify(t *testing.T) {
|
|
|
|
header := &Header{
|
|
|
|
Algorithm: "RS256",
|
|
|
|
Typ: "JWT",
|
|
|
|
}
|
|
|
|
payload := &ClaimSet{
|
|
|
|
Iss: "http://google.com/",
|
|
|
|
Aud: "",
|
|
|
|
Exp: 3610,
|
|
|
|
Iat: 10,
|
|
|
|
}
|
|
|
|
|
|
|
|
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
token, err := Encode(header, payload, privateKey)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
2016-05-03 18:20:30 -04:00
|
|
|
err = Verify(token, &privateKey.PublicKey)
|
2016-04-08 13:08:22 -04:00
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestVerifyFailsOnMalformedClaim(t *testing.T) {
|
|
|
|
err := Verify("abc.def", nil)
|
|
|
|
if err == nil {
|
|
|
|
t.Error("Improperly formed JWT should fail.")
|
|
|
|
}
|
|
|
|
}
|