...

Source file src/github.com/ory/x/jwksx/fetcher_test.go

Documentation: github.com/ory/x/jwksx

     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