github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/Client_test.go (about)

     1  package connectsdk
     2  
     3  import (
     4  	"encoding/base64"
     5  	"net/url"
     6  	"testing"
     7  
     8  	"github.com/Ingenico-ePayments/connect-sdk-go/configuration"
     9  	"github.com/Ingenico-ePayments/connect-sdk-go/defaultimpl"
    10  )
    11  
    12  var testConfiguration = configuration.CommunicatorConfiguration{
    13  	APIEndpoint: url.URL{
    14  		Scheme: "https",
    15  		Host:   "eu.sandbox.api-ingenico.com",
    16  	},
    17  	AuthorizationType: defaultimpl.V1HMAC,
    18  	MaxConnections:    100,
    19  	APIKeyID:          "someKey",
    20  	SecretAPIKey:      "someSecret",
    21  }
    22  
    23  func TestWithClientMetaInfo(t *testing.T) {
    24  	conf := testConfiguration
    25  	client1, err := CreateClientFromConfiguration(&conf)
    26  	if err != nil {
    27  		t.Fatalf("TestWithClientMetaInfo: %v", err)
    28  	}
    29  	if client1.apiResource == nil {
    30  		t.Fatal("TestWithClientMetaInfo: nil apiResource")
    31  	}
    32  
    33  	headers := client1.apiResource.ClientHeaders()
    34  	if headers != nil {
    35  		t.Fatal("TestWithClientMetaInfo: headers not nil")
    36  	}
    37  
    38  	client2, err := client1.WithClientMetaInfo("")
    39  	if err != nil {
    40  		t.Fatalf("TestWithClientMetaInfo: %v", err)
    41  	}
    42  	if client1 != client2 {
    43  		t.Fatal("TestWithClientMetaInfo: clients not equal")
    44  	}
    45  
    46  	marshaller, _ := defaultimpl.NewDefaultMarshaller()
    47  	clientMetaInfo, err := marshaller.Marshal(map[string]string{
    48  		"test": "test",
    49  	})
    50  	if err != nil {
    51  		t.Fatalf("TestWithClientMetaInfo: %v", err)
    52  	}
    53  	client3, err := client1.WithClientMetaInfo(clientMetaInfo)
    54  	if err != nil {
    55  		t.Fatalf("TestWithClientMetaInfo: %v", err)
    56  	}
    57  	if client3 == client1 {
    58  		t.Fatal("TestWithClientMetaInfo: clients equal")
    59  	}
    60  	headers = client3.apiResource.ClientHeaders()
    61  	if len(headers) != 1 {
    62  		t.Fatalf("TestWithClientMetaInfo: invalid headers len %d", len(headers))
    63  	}
    64  	headerValue := base64.StdEncoding.EncodeToString([]byte(clientMetaInfo))
    65  	if headers[0].Value() != headerValue {
    66  		t.Fatalf("TestWithClientMetaInfo: header value mismatch '%v' '%v'", headers[0].Value(), headerValue)
    67  	}
    68  
    69  	client4, err := client3.WithClientMetaInfo(clientMetaInfo)
    70  	if err != nil {
    71  		t.Fatalf("TestWithClientMetaInfo: %v", err)
    72  	}
    73  	if client3 != client4 {
    74  		t.Fatal("TestWithClientMetaInfo: clients not equal")
    75  	}
    76  
    77  	client5, err := client3.WithClientMetaInfo("")
    78  	if err != nil {
    79  		t.Fatal("TestWithClientMetaInfo: clients not equal")
    80  	}
    81  	if client3 == client5 {
    82  		t.Fatal("TestWithClientMetaInfo: clients equal")
    83  	}
    84  }