CreateAccount test and cleanup
This commit is contained in:
parent
55b4db0fe8
commit
6d34f39f12
2 changed files with 43 additions and 9 deletions
|
@ -342,14 +342,6 @@ func (s *Store) CreateAccount(email auth.Email, password auth.Password) (err err
|
||||||
|
|
||||||
var sqliteErr sqlite3.Error
|
var sqliteErr sqlite3.Error
|
||||||
if errors.As(err, &sqliteErr) {
|
if errors.As(err, &sqliteErr) {
|
||||||
// I initially expected to need to check for ErrConstraintUnique.
|
|
||||||
// Maybe for psql it will be?
|
|
||||||
// TODO - is this right? Does the above comment explain that it's backwards
|
|
||||||
// from what I would have expected? Or did I do this backwards?
|
|
||||||
// Or is this a holdover from when an account was attached to a walletstate?
|
|
||||||
if errors.Is(sqliteErr.ExtendedCode, sqlite3.ErrConstraintPrimaryKey) {
|
|
||||||
err = ErrDuplicateEmail
|
|
||||||
}
|
|
||||||
if errors.Is(sqliteErr.ExtendedCode, sqlite3.ErrConstraintUnique) {
|
if errors.Is(sqliteErr.ExtendedCode, sqlite3.ErrConstraintUnique) {
|
||||||
err = ErrDuplicateAccount
|
err = ErrDuplicateAccount
|
||||||
}
|
}
|
||||||
|
|
|
@ -453,8 +453,50 @@ func TestStoreGetWallet(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func expectAccountExists(t *testing.T, s *Store, email auth.Email, password auth.Password) {
|
||||||
|
_, err := s.GetUserId(email, password)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unexpected error in GetUserId: %+v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func expectAccountNotExists(t *testing.T, s *Store, email auth.Email, password auth.Password) {
|
||||||
|
_, err := s.GetUserId(email, password)
|
||||||
|
if err != ErrNoUId {
|
||||||
|
t.Fatalf("Expected ErrNoUId. err: %+v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test CreateAccount, using GetUserId as a helper
|
||||||
|
// Try CreateAccount twice with the same email and different password, error the second time
|
||||||
func TestStoreCreateAccount(t *testing.T) {
|
func TestStoreCreateAccount(t *testing.T) {
|
||||||
t.Fatalf("Test me: Account create success and failures")
|
s, sqliteTmpFile := StoreTestInit(t)
|
||||||
|
defer StoreTestCleanup(sqliteTmpFile)
|
||||||
|
|
||||||
|
email, password := auth.Email("abc@example.com"), auth.Password("123")
|
||||||
|
|
||||||
|
// Get an account, come back empty
|
||||||
|
expectAccountNotExists(t, &s, email, password)
|
||||||
|
|
||||||
|
// Create an account
|
||||||
|
if err := s.CreateAccount(email, password); err != nil {
|
||||||
|
t.Fatalf("Unexpected error in CreateAccount: %+v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get and confirm the account we just put in
|
||||||
|
expectAccountExists(t, &s, email, password)
|
||||||
|
|
||||||
|
newPassword := auth.Password("xyz")
|
||||||
|
|
||||||
|
// Try to create a new account with the same email and different password,
|
||||||
|
// fail because email already exists
|
||||||
|
if err := s.CreateAccount(email, newPassword); err != ErrDuplicateAccount {
|
||||||
|
t.Fatalf(`CreateAccount err: wanted "%+v", got "%+v"`, ErrDuplicateAccount, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the email and same *first* password we successfully put in, but not the second
|
||||||
|
expectAccountExists(t, &s, email, password)
|
||||||
|
expectAccountNotExists(t, &s, email, newPassword)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStoreGetUserId(t *testing.T) {
|
func TestStoreGetUserId(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue