...
1 package jwksx
2
3 import (
4 "fmt"
5 "net/http"
6 "net/http/httptest"
7 "testing"
8
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11 )
12
13 const (
14 keys = `{
15 "keys": [
16 {
17 "use": "sig",
18 "kty": "oct",
19 "kid": "7d5f5ad0674ec2f2960b1a34f33370a0f71471fa0e3ef0c0a692977d276dafe8",
20 "alg": "HS256",
21 "k": "Y2hhbmdlbWVjaGFuZ2VtZWNoYW5nZW1lY2hhbmdlbWU"
22 }
23 ]
24 }`
25 secret = "changemechangemechangemechangeme"
26 )
27
28 func TestFetcher(t *testing.T) {
29 var called int
30 var h http.HandlerFunc = func(w http.ResponseWriter, r *http.Request) {
31 called++
32 w.Write([]byte(keys))
33 }
34 ts := httptest.NewServer(h)
35 defer ts.Close()
36
37 f := NewFetcher(ts.URL)
38
39 k, err := f.GetKey("7d5f5ad0674ec2f2960b1a34f33370a0f71471fa0e3ef0c0a692977d276dafe8")
40 require.NoError(t, err)
41 assert.EqualValues(t, secret, fmt.Sprintf("%s", k.Key))
42 assert.Equal(t, 1, called)
43
44 k, err = f.GetKey("7d5f5ad0674ec2f2960b1a34f33370a0f71471fa0e3ef0c0a692977d276dafe8")
45 require.NoError(t, err)
46 assert.EqualValues(t, secret, fmt.Sprintf("%s", k.Key))
47 assert.Equal(t, 1, called)
48
49 _, err = f.GetKey("does-not-exist")
50 require.Error(t, err)
51 assert.Equal(t, 2, called)
52 }
53
View as plain text