feat: 0.0.1
This commit is contained in:
146 files changed
+10444
No files matched your search
@@ -0,0 +1,146 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/FernandoJVideira/simple_bank/internal/security"
|
||||
"github.com/FernandoJVideira/simple_bank/pkg/testutil"
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func createRandomUser(t *testing.T) User {
|
||||
hashedPassword, err := security.HashPassword(testutil.RandomString(6))
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create the user
|
||||
arg := CreateUserParams{
|
||||
Username: testutil.RandomOwner(),
|
||||
HashedPassword: hashedPassword,
|
||||
FullName: testutil.RandomOwner(),
|
||||
Email: testutil.RandomEmail(),
|
||||
}
|
||||
user, err := testStore.CreateUser(context.Background(), arg)
|
||||
require.NoError(t, err) // -> Err should be nil
|
||||
require.NotEmpty(t, user)
|
||||
|
||||
require.Equal(t, arg.Username, user.Username)
|
||||
require.Equal(t, arg.HashedPassword, user.HashedPassword)
|
||||
require.Equal(t, arg.FullName, user.FullName)
|
||||
require.Equal(t, arg.Email, user.Email)
|
||||
|
||||
require.True(t, user.PasswordChangedAt.IsZero())
|
||||
require.NotZero(t, user.CreatedAt)
|
||||
return user
|
||||
}
|
||||
|
||||
func TestCreateUser(t *testing.T) {
|
||||
createRandomUser(t)
|
||||
}
|
||||
|
||||
func TestGetUser(t *testing.T) {
|
||||
user1 := createRandomUser(t)
|
||||
user2, err := testStore.GetUser(context.Background(), user1.Username)
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, user2)
|
||||
|
||||
require.Equal(t, user1.Username, user2.Username)
|
||||
require.Equal(t, user1.HashedPassword, user2.HashedPassword)
|
||||
require.Equal(t, user1.FullName, user2.FullName)
|
||||
require.Equal(t, user1.Email, user2.Email)
|
||||
require.WithinDuration(t, user1.CreatedAt, user2.CreatedAt, time.Second)
|
||||
}
|
||||
|
||||
func TestUpdateUserOnlyFullName(t *testing.T) {
|
||||
oldUser := createRandomUser(t)
|
||||
|
||||
newFullName := testutil.RandomOwner()
|
||||
updatedUser, err := testStore.UpdateUser(context.Background(), UpdateUserParams{
|
||||
Username: oldUser.Username,
|
||||
FullName: pgtype.Text{
|
||||
String: newFullName,
|
||||
Valid: true,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotEqual(t, oldUser.FullName, updatedUser.FullName)
|
||||
require.Equal(t, newFullName, updatedUser.FullName)
|
||||
require.Equal(t, oldUser.HashedPassword, updatedUser.HashedPassword)
|
||||
require.Equal(t, oldUser.Email, updatedUser.Email)
|
||||
}
|
||||
|
||||
func TestUpdateUserOnlyEmail(t *testing.T) {
|
||||
oldUser := createRandomUser(t)
|
||||
|
||||
newEmail := testutil.RandomEmail()
|
||||
updatedUser, err := testStore.UpdateUser(context.Background(), UpdateUserParams{
|
||||
Username: oldUser.Username,
|
||||
Email: pgtype.Text{
|
||||
String: newEmail,
|
||||
Valid: true,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotEqual(t, oldUser.Email, updatedUser.Email)
|
||||
require.Equal(t, newEmail, updatedUser.Email)
|
||||
require.Equal(t, oldUser.HashedPassword, updatedUser.HashedPassword)
|
||||
require.Equal(t, oldUser.FullName, updatedUser.FullName)
|
||||
}
|
||||
|
||||
func TestUpdateUserOnlyPassword(t *testing.T) {
|
||||
oldUser := createRandomUser(t)
|
||||
|
||||
newPassword, err := security.HashPassword(testutil.RandomString(6))
|
||||
require.NoError(t, err)
|
||||
|
||||
updatedUser, err := testStore.UpdateUser(context.Background(), UpdateUserParams{
|
||||
Username: oldUser.Username,
|
||||
HashedPassword: pgtype.Text{
|
||||
String: newPassword,
|
||||
Valid: true,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotEqual(t, oldUser.HashedPassword, updatedUser.HashedPassword)
|
||||
require.Equal(t, newPassword, updatedUser.HashedPassword)
|
||||
require.Equal(t, oldUser.FullName, updatedUser.FullName)
|
||||
require.Equal(t, oldUser.Email, updatedUser.Email)
|
||||
}
|
||||
|
||||
func TestUpdateUserAllFields(t *testing.T) {
|
||||
oldUser := createRandomUser(t)
|
||||
|
||||
newFullName := testutil.RandomOwner()
|
||||
newEmail := testutil.RandomEmail()
|
||||
newPassword, err := security.HashPassword(testutil.RandomString(6))
|
||||
require.NoError(t, err)
|
||||
|
||||
updatedUser, err := testStore.UpdateUser(context.Background(), UpdateUserParams{
|
||||
Username: oldUser.Username,
|
||||
FullName: pgtype.Text{
|
||||
String: newFullName,
|
||||
Valid: true,
|
||||
},
|
||||
Email: pgtype.Text{
|
||||
String: newEmail,
|
||||
Valid: true,
|
||||
},
|
||||
HashedPassword: pgtype.Text{
|
||||
String: newPassword,
|
||||
Valid: true,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NotEqual(t, oldUser.FullName, updatedUser.FullName)
|
||||
require.Equal(t, newFullName, updatedUser.FullName)
|
||||
|
||||
require.NotEqual(t, oldUser.HashedPassword, updatedUser.HashedPassword)
|
||||
require.Equal(t, newPassword, updatedUser.HashedPassword)
|
||||
|
||||
require.NotEqual(t, oldUser.Email, updatedUser.Email)
|
||||
require.Equal(t, newEmail, updatedUser.Email)
|
||||
}
|
||||
Reference in new issue
Block a user