github.com/supabase/cli@v1.168.1/internal/utils/tenant/postgrest_test.go (about) 1 package tenant 2 3 import ( 4 "context" 5 "errors" 6 "net/http" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "gopkg.in/h2non/gock.v1" 11 ) 12 13 func TestPostgrestVersion(t *testing.T) { 14 t.Run("appends prefix v", func(t *testing.T) { 15 // Setup mock api 16 defer gock.OffAll() 17 gock.New("http://127.0.0.1"). 18 Get("/rest/v1/"). 19 Reply(http.StatusOK). 20 JSON(SwaggerResponse{Info: SwaggerInfo{Version: "11.1.0"}}) 21 // Run test 22 version, err := mockApi.GetPostgrestVersion(context.Background()) 23 // Check error 24 assert.NoError(t, err) 25 assert.Equal(t, "v11.1.0", version) 26 }) 27 28 t.Run("ignores commit hash", func(t *testing.T) { 29 // Setup mock api 30 defer gock.OffAll() 31 gock.New("http://127.0.0.1"). 32 Get("/rest/v1/"). 33 Reply(http.StatusOK). 34 JSON(SwaggerResponse{Info: SwaggerInfo{Version: "11.2.0 (c820efb)"}}) 35 // Run test 36 version, err := mockApi.GetPostgrestVersion(context.Background()) 37 // Check error 38 assert.NoError(t, err) 39 assert.Equal(t, "v11.2.0", version) 40 }) 41 42 t.Run("throws error on network error", func(t *testing.T) { 43 // Setup mock api 44 defer gock.OffAll() 45 gock.New("http://127.0.0.1"). 46 Get("/rest/v1/"). 47 ReplyError(errors.New("network error")) 48 // Run test 49 version, err := mockApi.GetPostgrestVersion(context.Background()) 50 // Check error 51 assert.ErrorContains(t, err, "network error") 52 assert.Empty(t, version) 53 }) 54 55 t.Run("throws error on missing version", func(t *testing.T) { 56 // Setup mock api 57 defer gock.OffAll() 58 gock.New("http://127.0.0.1"). 59 Get("/rest/v1/"). 60 Reply(http.StatusOK). 61 JSON(SwaggerResponse{}) 62 // Run test 63 version, err := mockApi.GetPostgrestVersion(context.Background()) 64 // Check error 65 assert.ErrorIs(t, err, errPostgrestVersion) 66 assert.Empty(t, version) 67 }) 68 }