61 lines
1.5 KiB
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)
|
|
}
|