1package jwt
2
3import (
4	"testing"
5
6	"github.com/stretchr/testify/require"
7	jose "gopkg.in/square/go-jose.v2"
8	"gopkg.in/square/go-jose.v2/jwt"
9)
10
11type noneSigner struct{}
12
13func sign(t *testing.T, key interface{}, claims interface{}) string {
14	t.Helper()
15
16	sig, err := jose.NewSigner(jose.SigningKey{Algorithm: jose.PS512, Key: key}, (&jose.SignerOptions{}).WithType("JWT"))
17	require.NoError(t, err)
18	token, err := jwt.Signed(sig).Claims(claims).CompactSerialize()
19	require.NoError(t, err)
20	return token
21}
22
23func (s noneSigner) Public() *jose.JSONWebKey {
24	return nil
25}
26
27func (s noneSigner) Algs() []jose.SignatureAlgorithm {
28	return []jose.SignatureAlgorithm{"none"}
29}
30
31func (s noneSigner) SignPayload(payload []byte, alg jose.SignatureAlgorithm) ([]byte, error) {
32	return nil, nil
33}
34
35func signNone(t *testing.T, claims interface{}) string {
36	t.Helper()
37
38	sig, err := jose.NewSigner(jose.SigningKey{Algorithm: "none", Key: noneSigner{}}, (&jose.SignerOptions{}).WithType("JWT"))
39	require.NoError(t, err)
40	token, err := jwt.Signed(sig).Claims(claims).CompactSerialize()
41	require.NoError(t, err)
42	return token
43}
44