chatdesk-ui/auth_v2.169.0/internal/models/factor_test.go

75 lines
2.1 KiB
Go

package models
import (
"encoding/json"
"testing"
"github.com/gofrs/uuid"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"github.com/supabase/auth/internal/conf"
"github.com/supabase/auth/internal/storage"
"github.com/supabase/auth/internal/storage/test"
)
type FactorTestSuite struct {
suite.Suite
db *storage.Connection
TestFactor *Factor
}
func TestFactor(t *testing.T) {
globalConfig, err := conf.LoadGlobal(modelsTestConfig)
require.NoError(t, err)
conn, err := test.SetupDBConnection(globalConfig)
require.NoError(t, err)
ts := &FactorTestSuite{
db: conn,
}
defer ts.db.Close()
suite.Run(t, ts)
}
func (ts *FactorTestSuite) SetupTest() {
TruncateAll(ts.db)
user, err := NewUser("", "agenericemail@gmail.com", "secret", "test", nil)
require.NoError(ts.T(), err)
require.NoError(ts.T(), ts.db.Create(user))
factor := NewTOTPFactor(user, "asimplename")
require.NoError(ts.T(), factor.SetSecret("topsecret", false, "", ""))
require.NoError(ts.T(), ts.db.Create(factor))
ts.TestFactor = factor
}
func (ts *FactorTestSuite) TestFindFactorByFactorID() {
n, err := FindFactorByFactorID(ts.db, ts.TestFactor.ID)
require.NoError(ts.T(), err)
require.Equal(ts.T(), ts.TestFactor.ID, n.ID)
_, err = FindFactorByFactorID(ts.db, uuid.Nil)
require.EqualError(ts.T(), err, FactorNotFoundError{}.Error())
}
func (ts *FactorTestSuite) TestUpdateStatus() {
newFactorStatus := FactorStateVerified
require.NoError(ts.T(), ts.TestFactor.UpdateStatus(ts.db, newFactorStatus))
require.Equal(ts.T(), newFactorStatus.String(), ts.TestFactor.Status)
}
func (ts *FactorTestSuite) TestUpdateFriendlyName() {
newName := "newfactorname"
require.NoError(ts.T(), ts.TestFactor.UpdateFriendlyName(ts.db, newName))
require.Equal(ts.T(), newName, ts.TestFactor.FriendlyName)
}
func (ts *FactorTestSuite) TestEncodedFactorDoesNotLeakSecret() {
encodedFactor, err := json.Marshal(ts.TestFactor)
require.NoError(ts.T(), err)
decodedFactor := Factor{}
json.Unmarshal(encodedFactor, &decodedFactor)
require.Equal(ts.T(), decodedFactor.Secret, "")
}