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 }