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 }