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 }