github.com/Kong/go-pdk@v0.11.0/response/response_test.go (about)

     1  package response
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/Kong/go-pdk/bridge"
     7  	"github.com/Kong/go-pdk/bridge/bridgetest"
     8  	"github.com/Kong/go-pdk/server/kong_plugin_protocol"
     9  	"github.com/stretchr/testify/assert"
    10  	"google.golang.org/protobuf/types/known/structpb"
    11  )
    12  
    13  func mockResponse(t *testing.T, s []bridgetest.MockStep) Response {
    14  	return Response{bridge.New(bridgetest.Mock(t, s))}
    15  }
    16  
    17  func TestResponse(t *testing.T) {
    18  	h, err := bridge.WrapHeaders(map[string][]string{
    19  		"Host":   []string{"example.com"},
    20  		"X-Two-Things": []string{"first", "second"},
    21  	})
    22  	assert.NoError(t, err)
    23  
    24  	response := mockResponse(t, []bridgetest.MockStep{
    25  		{"kong.response.get_status", nil, &kong_plugin_protocol.Int{V: 404}},
    26  		{"kong.response.get_headers", &kong_plugin_protocol.Int{V: 30}, h},
    27  		{"kong.response.get_source", nil, bridge.WrapString("service")},
    28  		{"kong.response.set_status", &kong_plugin_protocol.Int{V: 201}, nil},
    29  		{"kong.response.set_header", &kong_plugin_protocol.KV{K: "key", V: structpb.NewStringValue("value")}, nil},
    30  		{"kong.response.add_header", &kong_plugin_protocol.KV{K: "key", V: structpb.NewStringValue("value")}, nil},
    31  		{"kong.response.clear_header", bridge.WrapString("key"), nil},
    32  		{"kong.response.set_headers", nil, nil},
    33  	})
    34  
    35  	res_n, err := response.GetStatus()
    36  	assert.NoError(t, err)
    37  	assert.Equal(t, 404, res_n)
    38  
    39  	res_h, err := response.GetHeaders(30)
    40  	assert.NoError(t, err)
    41  	assert.Equal(t, map[string][]string{
    42  		"Host":   []string{"example.com"},
    43  		"X-Two-Things": []string{"first", "second"},
    44  	}, res_h)
    45  
    46  	res_s, err := response.GetSource()
    47  	assert.NoError(t, err)
    48  	assert.Equal(t, "service", res_s)
    49  
    50  	assert.NoError(t, response.SetStatus(201))
    51  
    52  	assert.NoError(t, response.SetHeader("key", "value"))
    53  	assert.NoError(t, response.AddHeader("key", "value"))
    54  	assert.NoError(t, response.ClearHeader("key"))
    55  	assert.NoError(t, response.SetHeaders(map[string][]string{
    56  		"Host":   []string{"example.com"},
    57  		"X-Two-Things": []string{"first", "second"},
    58  	}))
    59  }