github.com/Redstoneguy129/cli@v0.0.0-20230211220159-15dca4e91917/internal/functions/serve/serve_test.go (about) 1 package serve 2 3 import ( 4 "context" 5 "net/http" 6 "testing" 7 8 "github.com/docker/docker/api/types" 9 "github.com/spf13/afero" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 "github.com/Redstoneguy129/cli/internal/testing/apitest" 13 "github.com/Redstoneguy129/cli/internal/utils" 14 "gopkg.in/h2non/gock.v1" 15 ) 16 17 func TestServeCommand(t *testing.T) { 18 t.Run("serves function locally", func(t *testing.T) { 19 // Setup in-memory fs 20 fsys := afero.NewMemMapFs() 21 require.NoError(t, utils.WriteConfig(fsys, false)) 22 // Setup mock docker 23 require.NoError(t, apitest.MockDocker(utils.Docker)) 24 defer gock.OffAll() 25 gock.New(utils.Docker.DaemonHost()). 26 Get("/v" + utils.Docker.ClientVersion() + "/containers"). 27 Reply(http.StatusOK). 28 JSON(types.ContainerJSON{}) 29 gock.New(utils.Docker.DaemonHost()). 30 Delete("/v" + utils.Docker.ClientVersion() + "/containers"). 31 Reply(http.StatusOK) 32 utils.DenoRelayId = "test-deno" 33 apitest.MockDockerStart(utils.Docker, utils.GetRegistryImageUrl(utils.DenoRelayImage), utils.DenoRelayId) 34 gock.New(utils.Docker.DaemonHost()). 35 Post("/v" + utils.Docker.ClientVersion() + "/containers"). 36 Reply(http.StatusServiceUnavailable) 37 // Run test 38 err := Run(context.Background(), "test-func", "", nil, "", false, fsys) 39 // Check error 40 assert.ErrorContains(t, err, "request returned Service Unavailable for API route and version http://"+utils.Config.Hostname+"/v1.41/containers/supabase_deno_relay_serve/exec") 41 assert.Empty(t, apitest.ListUnmatchedRequests()) 42 }) 43 }