From 0467594a82af674b72d08799821a4313dfb46b35 Mon Sep 17 00:00:00 2001 From: Tim Wundenberg Date: Sat, 5 Oct 2024 23:54:33 +0200 Subject: [PATCH] fix: missing db/auth tests #181 --- db/auth_test.go | 101 +++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 56 deletions(-) diff --git a/db/auth_test.go b/db/auth_test.go index 95e714d..d47c319 100644 --- a/db/auth_test.go +++ b/db/auth_test.go @@ -4,12 +4,11 @@ import ( "me-fit/utils" "database/sql" - "errors" - "reflect" "testing" "time" "github.com/google/uuid" + "github.com/stretchr/testify/assert" ) func setupDb(t *testing.T) *sql.DB { @@ -29,7 +28,7 @@ func setupDb(t *testing.T) *sql.DB { return db } -func TestGetUser(t *testing.T) { +func TestUser(t *testing.T) { t.Parallel() t.Run("should return UserNotFound", func(t *testing.T) { @@ -39,12 +38,10 @@ func TestGetUser(t *testing.T) { underTest := DbAuthSqlite{db: db} _, err := underTest.GetUser("someNonExistentEmail") - if err != ErrUserNotFound { - t.Errorf("Expected UserNotFound, got %v", err) - } + assert.Equal(t, ErrUserNotFound, err) }) - t.Run("should find user in database", func(t *testing.T) { + t.Run("should insert and get user", func(t *testing.T) { t.Parallel() db := setupDb(t) @@ -52,52 +49,15 @@ func TestGetUser(t *testing.T) { verifiedAt := time.Date(2020, 1, 5, 13, 0, 0, 0, time.UTC) createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC) - user := NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt) + expected := NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt) - _, err := db.Exec(` - INSERT INTO user (user_uuid, email, email_verified, email_verified_at, is_admin, password, salt, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) - `, user.Id, user.Email, user.EmailVerified, user.EmailVerifiedAt, user.IsAdmin, user.Password, user.Salt, user.CreateAt) - if err != nil { - t.Fatalf("Error inserting user: %v", err) - } + err := underTest.InsertUser(expected) + assert.Nil(t, err) - actual, err := underTest.GetUser(user.Email) - if err != nil { - t.Fatalf("Error getting user: %v", err) - } + actual, err := underTest.GetUser(expected.Email) + assert.Nil(t, err) - if !reflect.DeepEqual(user, actual) { - t.Errorf("Expected %v, got %v", user, actual) - } - }) -} -func TestInsertUser(t *testing.T) { - t.Parallel() - - t.Run("should insert user", func(t *testing.T) { - t.Parallel() - db := setupDb(t) - - underTest := DbAuthSqlite{db: db} - - verifiedAt := time.Date(2020, 1, 5, 13, 0, 0, 0, time.UTC) - createAt := time.Date(2020, 1, 5, 12, 0, 0, 0, time.UTC) - user := NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt) - - err := underTest.InsertUser(user) - if err != nil { - t.Fatalf("Error inserting user: %v", err) - } - - actual, err := underTest.GetUser(user.Email) - if err != nil { - t.Fatalf("Error getting user: %v", err) - } - - if !reflect.DeepEqual(user, actual) { - t.Errorf("Expected %v, got %v", user, actual) - } + assert.Equal(t, expected, actual) }) t.Run("should throw error if user already exists", func(t *testing.T) { @@ -111,13 +71,42 @@ func TestInsertUser(t *testing.T) { user := NewUser(uuid.New(), "some@email.de", true, &verifiedAt, false, []byte("somePass"), []byte("someSalt"), createAt) err := underTest.InsertUser(user) - if err != nil { - t.Fatalf("Error inserting user: %v", err) - } + assert.Nil(t, err) err = underTest.InsertUser(user) - if !errors.Is(err, ErrUserExists) { - t.Fatalf("Error inserting user: %v", err) - } + assert.Equal(t, ErrUserExists, err) + }) +} + +func TestEmailVerification(t *testing.T) { + t.Parallel() + + t.Run("should return empty string if no token is safed", func(t *testing.T) { + t.Parallel() + db := setupDb(t) + + underTest := DbAuthSqlite{db: db} + + token, err := underTest.GetEmailVerificationToken(uuid.New()) + + assert.Nil(t, err) + assert.Equal(t, "", token) + }) + t.Run("should insert and return token", func(t *testing.T) { + t.Parallel() + db := setupDb(t) + + underTest := DbAuthSqlite{db: db} + + userId := uuid.New() + expectedToken := "someToken" + + err := underTest.InsertEmailVerificationToken(userId, expectedToken) + assert.Nil(t, err) + + actualToken, err := underTest.GetEmailVerificationToken(userId) + assert.Nil(t, err) + + assert.Equal(t, expectedToken, actualToken) }) }