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

     1  package communicator
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/Ingenico-ePayments/connect-sdk-go/communicator/communication"
     7  )
     8  
     9  type Parameter struct {
    10  	name    string
    11  	allowed bool
    12  }
    13  
    14  func TestWithAdditionalRequestHeader(t *testing.T) {
    15  	params := make(chan Parameter)
    16  	go func(params chan Parameter) {
    17  		for _, prohibitedHeaders := range ProhibitedHeaders {
    18  			params <- Parameter{prohibitedHeaders, false}
    19  		}
    20  		params <- Parameter{"Dummy", true}
    21  		params <- Parameter{"Accept", true}
    22  		params <- Parameter{"If-None-Match", true}
    23  		params <- Parameter{"If-Modified-Since", true}
    24  		close(params)
    25  	}(params)
    26  	for param := range params {
    27  		additionalRequestHeader, _ := communication.NewHeader(param.name, "value")
    28  		builder := MetaDataProviderBuilder{}
    29  		builder.AdditionalRequestHeaders = []communication.Header{*additionalRequestHeader}
    30  		metaDataProvider, err := builder.Build()
    31  		if err != nil && param.allowed {
    32  			t.Error("Cannot build MetaDataProvider")
    33  			continue
    34  		}
    35  		if err == nil && !param.allowed {
    36  			t.Error("Can build invalid MetaDataProvider")
    37  		} else {
    38  			continue
    39  		}
    40  		headers := metaDataProvider.metaDataHeaders
    41  		if len(headers) != 2 {
    42  			t.Error("Wrong amount of headers stored")
    43  		}
    44  		header := headers[0]
    45  		if "X-GCS-ServerMetaInfo" != header.Name() {
    46  			t.Error("X-GCS-ServerMetaInfo should always be set")
    47  		}
    48  		header = headers[1]
    49  		if param.name != header.Name() {
    50  			t.Error("No other headers should be set")
    51  		}
    52  	}
    53  }