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  }