onasty/e2e/e2e_utils_db_test.go(view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
package e2e
import (
"errors"
"time"
"github.com/gofrs/uuid/v5"
"github.com/henvic/pgq"
"github.com/jackc/pgx/v5"
"github.com/olexsmir/onasty/internal/models"
)
func (e *AppTestSuite) getUserFromDBByUsername(username string) models.User {
query, args, err := pgq.
Select("id", "username", "email", "password", "created_at", "last_login_at").
From("users").
Where(pgq.Eq{
"username": username,
}).
SQL()
e.require.NoError(err)
var user models.User
err = e.postgresDB.QueryRow(e.ctx, query, args...).
Scan(&user.ID, &user.Username, &user.Email, &user.Password, &user.CreatedAt, &user.LastLoginAt)
e.require.NoError(err)
return user
}
func (e *AppTestSuite) insertUserIntoDB(uname, email, passwd string) uuid.UUID {
p, err := e.hasher.Hash(passwd)
e.require.NoError(err)
query, args, err := pgq.
Insert("users").
Columns("username", "email", "password", "activated", "created_at", "last_login_at").
Values(uname, email, p, true, time.Now(), time.Now()).
Returning("id").
SQL()
e.require.NoError(err)
var id uuid.UUID
err = e.postgresDB.QueryRow(e.ctx, query, args...).Scan(&id)
e.require.NoError(err)
return id
}
func (e *AppTestSuite) getLastUserSessionByUserID(uid uuid.UUID) models.Session {
query, args, err := pgq.
Select("refresh_token", "expires_at").
From("sessions").
Where(pgq.Eq{"user_id": uid.String()}).
OrderBy("expires_at DESC").
SQL()
e.require.NoError(err)
var session models.Session
err = e.postgresDB.QueryRow(e.ctx, query, args...).
Scan(&session.RefreshToken, &session.ExpiresAt)
if errors.Is(pgx.ErrNoRows, err) {
return models.Session{}
}
e.require.NoError(err)
return session
}
func (e *AppTestSuite) getNoteFromDBbySlug(slug string) models.Note {
query, args, err := pgq.
Select("id", "content", "slug", "burn_before_expiration", "created_at", "expires_at").
From("notes").
Where("slug = ?", slug).
SQL()
e.require.NoError(err)
var note models.Note
err = e.postgresDB.QueryRow(e.ctx, query, args...).
Scan(¬e.ID, ¬e.Content, ¬e.Slug, ¬e.BurnBeforeExpiration, ¬e.CreatedAt, ¬e.ExpiresAt)
if errors.Is(err, pgx.ErrNoRows) {
return models.Note{}
}
e.require.NoError(err)
return note
}
type noteAuthorModel struct {
noteID uuid.UUID
userID uuid.UUID
}
func (e *AppTestSuite) getLastNoteAuthorsRecordByAuthorID(uid uuid.UUID) noteAuthorModel {
qeuery, args, err := pgq.
Select("note_id", "user_id").
From("notes_authors").
Where(pgq.Eq{"user_id": uid.String()}).
OrderBy("created_at DESC").
Limit(1).
SQL()
e.require.NoError(err)
var na noteAuthorModel
err = e.postgresDB.QueryRow(e.ctx, qeuery, args...).Scan(&na.noteID, &na.userID)
if errors.Is(err, pgx.ErrNoRows) {
return noteAuthorModel{}
}
e.require.NoError(err)
return na
}
|