github.com/status-im/status-go@v1.1.0/services/wallet/thirdparty/http_client_test.go (about) 1 package thirdparty 2 3 import ( 4 "context" 5 "encoding/base64" 6 "fmt" 7 "net/http" 8 "net/http/httptest" 9 "net/url" 10 "testing" 11 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestHTTPClient_DoGetRequest(t *testing.T) { 16 // Create a new HTTPClient 17 client := NewHTTPClient() 18 19 expectedResponse := []byte("test response") 20 21 // Create a mock server 22 server := createMockServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 23 require.Equal(t, "GET", r.Method) 24 require.Equal(t, "/test", r.URL.Path) 25 require.Equal(t, "value1", r.URL.Query().Get("param1")) 26 require.Equal(t, "value2", r.URL.Query().Get("param2")) 27 28 authToken := base64.StdEncoding.EncodeToString([]byte("username:password")) 29 require.Equal(t, fmt.Sprintf("Basic %s", authToken), r.Header.Get("Authorization")) 30 31 // Set the response headers 32 w.Header().Set("Content-Type", "application/json") 33 // Set the response body 34 _, _ = w.Write(expectedResponse) 35 })) 36 defer server.Close() 37 38 // Set up test data 39 expectedURL := server.URL + "/test" 40 expectedParams := url.Values{} 41 expectedParams.Set("param1", "value1") 42 expectedParams.Set("param2", "value2") 43 expectedCreds := &BasicCreds{ 44 User: "username", 45 Password: "password", 46 } 47 48 // Make the GET request 49 ctx := context.Background() 50 response, err := client.DoGetRequest(ctx, expectedURL, expectedParams, expectedCreds) 51 52 // Verify the request 53 require.NoError(t, err) 54 require.Equal(t, expectedResponse, response) 55 } 56 57 func createMockServer(handler http.HandlerFunc) *httptest.Server { 58 return httptest.NewServer(handler) 59 }