github.com/clerkinc/clerk-sdk-go@v1.49.1/clerk/http_utils_test.go (about)

     1  package clerk
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"net/url"
     7  	"testing"
     8  )
     9  
    10  // setup sets up a test HTTP server along with a `clerk.Client` that is configured to talk to that test server.
    11  // Tests should register handlers on mux which provide mock responses for the API method being tested.
    12  func setup(token string) (client Client, mux *http.ServeMux, serverURL *url.URL, teardown func()) {
    13  	versionPath := "/v1"
    14  
    15  	mux = http.NewServeMux()
    16  	apiHandler := http.NewServeMux()
    17  	apiHandler.Handle(versionPath+"/", http.StripPrefix(versionPath, mux))
    18  
    19  	// server is a test HTTP server used to provide mock API responses.
    20  	server := httptest.NewServer(apiHandler)
    21  
    22  	baseURL, _ := url.Parse(server.URL + versionPath + "/")
    23  	client, _ = NewClient(token, WithBaseURL(baseURL.String()))
    24  
    25  	return client, mux, baseURL, server.Close
    26  }
    27  
    28  func testHttpMethod(t *testing.T, r *http.Request, want string) {
    29  	t.Helper()
    30  	if got := r.Method; got != want {
    31  		t.Errorf("Request method: %v, want %v", got, want)
    32  	}
    33  }
    34  
    35  func testHeader(t *testing.T, r *http.Request, header, want string) {
    36  	t.Helper()
    37  	if got := r.Header.Get(header); got != want {
    38  		t.Errorf("Header.Get(%q) returned %q, want %q", header, got, want)
    39  	}
    40  }
    41  
    42  func testQuery(t *testing.T, r *http.Request, want url.Values) {
    43  	t.Helper()
    44  
    45  	query := r.URL.Query()
    46  
    47  	for k := range want {
    48  		if query.Get(k) == "" {
    49  			t.Errorf("Request query doesn't match: have %v, want %v", query, want)
    50  		}
    51  	}
    52  }
    53  
    54  func stringToPtr(input string) *string {
    55  	return &input
    56  }
    57  
    58  func intToPtr(input int) *int {
    59  	return &input
    60  }
    61  
    62  func int64ToPtr(input int64) *int64 {
    63  	return &input
    64  }