blob: 69f76d36515ae3bb501132062163c9faf2f11e89 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package thrift
import (
"context"
"testing"
)
func TestResponseHelperContext(t *testing.T) {
ctx := context.Background()
t.Run(
"empty-noop",
func(t *testing.T) {
helper, ok := GetResponseHelper(ctx)
if ok {
t.Error("GetResponseHelper expected ok == false")
}
// Just make sure those function calls does not panic
helper.SetHeader("foo", "bar")
helper.ClearHeaders()
},
)
t.Run(
"set-get",
func(t *testing.T) {
trans := NewTHeaderTransport(NewTMemoryBuffer())
proto := NewTHeaderProtocol(trans)
ctx = SetResponseHelper(
ctx,
TResponseHelper{
THeaderResponseHelper: NewTHeaderResponseHelper(proto),
},
)
helper, ok := GetResponseHelper(ctx)
if !ok {
t.Error("GetResponseHelper expected ok == true")
}
if helper.THeaderResponseHelper == nil {
t.Error("GetResponseHelper expected THeaderResponseHelper to be non-nil")
}
},
)
}
func TestHeaderHelper(t *testing.T) {
t.Run(
"THeaderProtocol",
func(t *testing.T) {
trans := NewTHeaderTransport(NewTMemoryBuffer())
proto := NewTHeaderProtocol(trans)
helper := NewTHeaderResponseHelper(proto)
const (
key = "key"
value = "value"
)
helper.SetHeader(key, value)
if len(trans.writeHeaders) != 1 {
t.Errorf(
"Expected THeaderTransport.writeHeaders to be with size of 1, got %+v",
trans.writeHeaders,
)
}
actual := trans.writeHeaders[key]
if actual != value {
t.Errorf(
"Expected THeaderTransport.writeHeaders to have %q:%q, got %+v",
key,
value,
trans.writeHeaders,
)
}
helper.ClearHeaders()
if len(trans.writeHeaders) != 0 {
t.Errorf(
"Expected THeaderTransport.writeHeaders to be empty after ClearHeaders call, got %+v",
trans.writeHeaders,
)
}
},
)
t.Run(
"other-protocol",
func(t *testing.T) {
trans := NewTMemoryBuffer()
proto := NewTCompactProtocol(trans)
helper := NewTHeaderResponseHelper(proto)
// We only need to make sure that functions in helper
// don't panic here.
helper.SetHeader("foo", "bar")
helper.ClearHeaders()
},
)
t.Run(
"zero-value",
func(t *testing.T) {
var helper *THeaderResponseHelper
// We only need to make sure that functions in helper
// don't panic here.
helper.SetHeader("foo", "bar")
helper.ClearHeaders()
},
)
}
func TestTResponseHelperZeroValue(t *testing.T) {
var helper THeaderResponseHelper
// We only need to make sure that functions in helper
// don't panic here.
helper.SetHeader("foo", "bar")
helper.ClearHeaders()
}