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  }