chatai/auth_v2.169.0/internal/storage/dial_test.go

61 lines
1.5 KiB
Go

package storage
import (
"errors"
"testing"
"github.com/gofrs/uuid"
"github.com/stretchr/testify/require"
"github.com/supabase/auth/internal/conf"
)
type TestUser struct {
ID uuid.UUID
Role string `db:"role"`
Other string `db:"othercol"`
}
func TestGetExcludedColumns(t *testing.T) {
u := TestUser{}
cols, err := getExcludedColumns(u, "role")
require.NoError(t, err)
require.NotContains(t, cols, "role")
require.Contains(t, cols, "othercol")
}
func TestGetExcludedColumns_InvalidName(t *testing.T) {
u := TestUser{}
_, err := getExcludedColumns(u, "adsf")
require.Error(t, err)
}
func TestTransaction(t *testing.T) {
apiTestConfig := "../../hack/test.env"
config, err := conf.LoadGlobal(apiTestConfig)
require.NoError(t, err)
conn, err := Dial(config)
require.NoError(t, err)
require.NotNil(t, conn)
defer func() {
// clean up the test table created
require.NoError(t, conn.RawQuery("drop table if exists test").Exec(), "Error removing table")
}()
commitWithError := NewCommitWithError(errors.New("commit with error"))
err = conn.Transaction(func(tx *Connection) error {
require.NoError(t, tx.RawQuery("create table if not exists test()").Exec(), "Error saving creating test table")
return commitWithError
})
require.Error(t, err)
require.ErrorIs(t, err, commitWithError)
type TestData struct{}
// check that transaction is still being committed despite returning an error above
data := []TestData{}
err = conn.RawQuery("select * from test").All(&data)
require.NoError(t, err)
require.Empty(t, data)
}