...
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))
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