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  }