...

Source file src/github.com/MicahParks/keyfunc/options_test.go

Documentation: github.com/MicahParks/keyfunc

     1  package keyfunc_test
     2  
     3  import (
     4  	"errors"
     5  	"net/http"
     6  	"net/http/httptest"
     7  	"sync"
     8  	"testing"
     9  
    10  	"github.com/MicahParks/keyfunc"
    11  )
    12  
    13  func TestResponseExtractorStatusOK(t *testing.T) {
    14  	var mux sync.Mutex
    15  	statusCode := http.StatusOK
    16  
    17  	server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
    18  		mux.Lock()
    19  		writer.WriteHeader(statusCode)
    20  		mux.Unlock()
    21  		_, _ = writer.Write([]byte(jwksJSON))
    22  	}))
    23  	defer server.Close()
    24  
    25  	options := keyfunc.Options{
    26  		ResponseExtractor: keyfunc.ResponseExtractorStatusOK,
    27  	}
    28  	jwks, err := keyfunc.Get(server.URL, options)
    29  	if err != nil {
    30  		t.Fatalf("Failed to get JWK Set from server.\nError: %s", err)
    31  	}
    32  
    33  	if len(jwks.ReadOnlyKeys()) == 0 {
    34  		t.Fatalf("Expected JWK Set to have keys.")
    35  	}
    36  
    37  	mux.Lock()
    38  	statusCode = http.StatusInternalServerError
    39  	mux.Unlock()
    40  
    41  	_, err = keyfunc.Get(server.URL, options)
    42  	if !errors.Is(err, keyfunc.ErrInvalidHTTPStatusCode) {
    43  		t.Fatalf("Expected error to be ErrInvalidHTTPStatusCode.\nError: %s", err)
    44  	}
    45  }
    46  
    47  func TestResponseExtractorStatusAny(t *testing.T) {
    48  	var mux sync.Mutex
    49  	statusCode := http.StatusOK
    50  
    51  	server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
    52  		mux.Lock()
    53  		writer.WriteHeader(statusCode)
    54  		mux.Unlock()
    55  		_, _ = writer.Write([]byte(jwksJSON))
    56  	}))
    57  	defer server.Close()
    58  
    59  	options := keyfunc.Options{
    60  		ResponseExtractor: keyfunc.ResponseExtractorStatusAny,
    61  	}
    62  	jwks, err := keyfunc.Get(server.URL, options)
    63  	if err != nil {
    64  		t.Fatalf("Failed to get JWK Set from server.\nError: %s", err)
    65  	}
    66  
    67  	if len(jwks.ReadOnlyKeys()) == 0 {
    68  		t.Fatalf("Expected JWK Set to have keys.")
    69  	}
    70  
    71  	mux.Lock()
    72  	statusCode = http.StatusInternalServerError
    73  	mux.Unlock()
    74  
    75  	_, err = keyfunc.Get(server.URL, options)
    76  	if err != nil {
    77  		t.Fatalf("Expected error no error for 500 status code.\nError: %s", err)
    78  	}
    79  }
    80  

View as plain text