github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/generic/http/client/integrationtest/client.service_test.go (about)

     1  package integrationtest
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/sirupsen/logrus"
     9  
    10  	"github.com/angryronald/go-kit/constant"
    11  	"github.com/angryronald/go-kit/generic/http/client"
    12  )
    13  
    14  var httpClient client.GenericHTTPClient
    15  
    16  // to run this test, please spin up mockserver first, due to an issue with mockserver and dockertest
    17  func TestGenericHTTPClient_CallClient_GET(t *testing.T) {
    18  	bearer := client.Bearer
    19  	bearer.Token = "token"
    20  	httpClient = client.NewHTTPClient(
    21  		client.HTTPClient{
    22  			APIURL:            fmt.Sprintf("http://localhost:%d", port),
    23  			MaxNetworkRetries: 2,
    24  			UseNormalSleep:    true,
    25  			AuthorizationTypes: []client.AuthorizationType{
    26  				bearer,
    27  			},
    28  			ClientName: "mockserver",
    29  		},
    30  		redisClient,
    31  		logrus.New(),
    32  	)
    33  
    34  	response := struct {
    35  		Message string `json:"message"`
    36  	}{}
    37  	if err := httpClient.CallClient(context.TODO(), "api/resource?param1=value1", constant.HTTP_GET, nil, &response); err.Error != nil {
    38  		t.Errorf("expected no error, got %v", err)
    39  	}
    40  
    41  	if response.Message != "Mocked response" {
    42  		t.Errorf("expected Mocked response, got %v", response.Message)
    43  	}
    44  }
    45  
    46  func TestGenericHTTPClient_CallClient_POST(t *testing.T) {
    47  	bearer := client.Bearer
    48  	bearer.Token = "token"
    49  	httpClient = client.NewHTTPClient(
    50  		client.HTTPClient{
    51  			APIURL:            fmt.Sprintf("http://localhost:%d", port),
    52  			MaxNetworkRetries: 2,
    53  			UseNormalSleep:    true,
    54  			AuthorizationTypes: []client.AuthorizationType{
    55  				bearer,
    56  			},
    57  			ClientName: "mockserver",
    58  		},
    59  		redisClient,
    60  		logrus.New(),
    61  	)
    62  
    63  	response := struct {
    64  		Message string `json:"message"`
    65  	}{}
    66  	request := struct {
    67  		Username string `json:"username"`
    68  		Password string `json:"password"`
    69  	}{
    70  		Username: "test",
    71  		Password: "password",
    72  	}
    73  	if err := httpClient.CallClient(context.TODO(), "api/resource", constant.HTTP_POST, &request, &response); err.Error != nil {
    74  		t.Errorf("expected no error, got %v", err)
    75  	}
    76  
    77  	if response.Message != "Mocked response with request body" {
    78  		t.Errorf("expected Mocked response with request body, got %v", response.Message)
    79  	}
    80  }