github.com/Kong/go-pdk@v0.11.0/service/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 ) 11 12 func TestResponse(t *testing.T) { 13 h, err := bridge.WrapHeaders(map[string][]string{ 14 "Host": []string{"example.com"}, 15 "X-Two-Things": []string{"first", "second"}, 16 }) 17 assert.NoError(t, err) 18 19 body := `GET / HTTP/1.1 20 Host: example.com 21 Accept: * 22 23 this is the content` 24 25 response := Response{bridge.New(bridgetest.Mock(t, []bridgetest.MockStep{ 26 {"kong.service.response.get_status", nil, &kong_plugin_protocol.Int{V: 404}}, 27 {"kong.service.response.get_header", bridge.WrapString("Host"), bridge.WrapString("example.com")}, 28 {"kong.service.response.get_headers", &kong_plugin_protocol.Int{V: 30}, h}, 29 {"kong.service.response.get_raw_body", nil, bridge.WrapString(body)}, 30 }))} 31 32 res_n, err := response.GetStatus() 33 assert.NoError(t, err) 34 assert.Equal(t, 404, res_n) 35 36 res_s, err := response.GetHeader("Host") 37 assert.NoError(t, err) 38 assert.Equal(t, "example.com", res_s) 39 40 res_h, err := response.GetHeaders(30) 41 assert.NoError(t, err) 42 assert.Equal(t, map[string][]string{ 43 "Host": []string{"example.com"}, 44 "X-Two-Things": []string{"first", "second"}, 45 }, res_h) 46 47 res_b, err := response.GetRawBody() 48 assert.NoError(t, err) 49 assert.Equal(t, body, string(res_b)) 50 51 bodyRaw := []byte("a raw body") 52 53 responseRawBody := Response{bridge.New(bridgetest.Mock(t, []bridgetest.MockStep{ 54 {"kong.service.response.get_status", nil, &kong_plugin_protocol.Int{V: 404}}, 55 {"kong.service.response.get_header", bridge.WrapString("Host"), bridge.WrapString("example.com")}, 56 {"kong.service.response.get_headers", &kong_plugin_protocol.Int{V: 30}, h}, 57 {"kong.service.response.get_raw_body", nil, bridge.WrapByteString(bodyRaw)}, 58 }))} 59 60 res_n, err = responseRawBody.GetStatus() 61 assert.NoError(t, err) 62 assert.Equal(t, 404, res_n) 63 64 res_s, err = responseRawBody.GetHeader("Host") 65 assert.NoError(t, err) 66 assert.Equal(t, "example.com", res_s) 67 68 res_h, err = responseRawBody.GetHeaders(30) 69 assert.NoError(t, err) 70 assert.Equal(t, map[string][]string{ 71 "Host": []string{"example.com"}, 72 "X-Two-Things": []string{"first", "second"}, 73 }, res_h) 74 75 res_b, err = responseRawBody.GetRawBody() 76 assert.NoError(t, err) 77 assert.Equal(t, []byte("a raw body"), res_b) 78 79 80 }