...

Source file src/github.com/launchdarkly/go-server-sdk/v6/testhelpers/ldservices/polling_service_test.go

Documentation: github.com/launchdarkly/go-server-sdk/v6/testhelpers/ldservices

     1  package ldservices
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"testing"
     7  
     8  	"github.com/launchdarkly/go-test-helpers/v3/httphelpers"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestServerSidePollingEndpoint(t *testing.T) {
    15  	data := "fake data"
    16  	handler := ServerSidePollingServiceHandler(data)
    17  	client := httphelpers.ClientFromHandler(handler)
    18  
    19  	resp, err := client.Get(serverSideSDKPollingPath)
    20  	assert.NoError(t, err)
    21  	require.NotNil(t, resp)
    22  	assert.Equal(t, 200, resp.StatusCode)
    23  	assert.Equal(t, "application/json", resp.Header.Get("Content-Type"))
    24  	bytes, err := io.ReadAll(resp.Body)
    25  	assert.NoError(t, err)
    26  	assert.Equal(t, `"fake data"`, string(bytes)) // the extra quotes are because the value was marshalled to JSON
    27  }
    28  
    29  func TestServerSidePollingReturns404ForWrongURL(t *testing.T) {
    30  	data := "fake data"
    31  	handler := ServerSidePollingServiceHandler(data)
    32  	client := httphelpers.ClientFromHandler(handler)
    33  
    34  	resp, err := client.Get("/other/path")
    35  	assert.NoError(t, err)
    36  	require.NotNil(t, resp)
    37  	assert.Equal(t, 404, resp.StatusCode)
    38  }
    39  
    40  func TestServerSidePollingReturns405ForWrongMethod(t *testing.T) {
    41  	data := "fake data"
    42  	handler := ServerSidePollingServiceHandler(data)
    43  	client := httphelpers.ClientFromHandler(handler)
    44  
    45  	resp, err := client.Post(serverSideSDKPollingPath, "text/plain", bytes.NewBufferString("hello"))
    46  	assert.NoError(t, err)
    47  	require.NotNil(t, resp)
    48  	assert.Equal(t, 405, resp.StatusCode)
    49  }
    50  
    51  func TestServerSidePollingMarshalsDataAgainForEachRequest(t *testing.T) {
    52  	data := NewServerSDKData()
    53  	handler := ServerSidePollingServiceHandler(data)
    54  	client := httphelpers.ClientFromHandler(handler)
    55  
    56  	resp, err := client.Get(serverSideSDKPollingPath)
    57  	assert.NoError(t, err)
    58  	assert.NotNil(t, resp)
    59  	bytes, err := io.ReadAll(resp.Body)
    60  	assert.NoError(t, err)
    61  	assert.Equal(t, `{"flags":{},"segments":{}}`, string(bytes))
    62  
    63  	data.Flags(FlagOrSegment("flagkey", 1))
    64  	resp, err = client.Get(serverSideSDKPollingPath)
    65  	assert.NoError(t, err)
    66  	assert.NotNil(t, resp)
    67  	bytes, err = io.ReadAll(resp.Body)
    68  	assert.NoError(t, err)
    69  	assert.Equal(t, `{"flags":{"flagkey":{"key":"flagkey","version":1}},"segments":{}}`, string(bytes))
    70  }
    71  

View as plain text