/
init.go
82 lines (67 loc) · 1.93 KB
/
init.go
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
package tests
import (
"context"
"github.com/DATA-DOG/go-sqlmock"
"github.com/alicebob/miniredis"
"github.com/go-redis/redis/v8"
"github.com/sirupsen/logrus"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"github.com/NKTKLN/todo-api/models"
"github.com/NKTKLN/todo-api/pkg/db"
pg "github.com/NKTKLN/todo-api/pkg/db/postgres"
)
// Test db initialization
func MockPostgresConnection() (db.PostgresDB, sqlmock.Sqlmock) {
db, mock, err := sqlmock.New()
if err != nil {
logrus.Fatalln(err)
}
DB, err := gorm.Open(postgres.New(postgres.Config{Conn: db}), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
})
if err != nil {
logrus.Fatalln(err)
}
return &pg.PDB{DB: DB}, mock
}
func TestRedisConnection() *redis.Client {
mr, err := miniredis.Run()
if err != nil {
logrus.Fatalln(err)
}
client := redis.NewClient(&redis.Options{
Addr: mr.Addr(),
})
return client
}
// Fake email provider
type fakeEmailAuthData struct {
email string
password string
server string
port int
}
type fakeEmailProvider interface {
UserEmailVerification(context.Context, db.RedisClient, models.UserData) error
UserPasswordReset(context.Context, db.RedisClient, string) error
UserEmailReset(context.Context, db.RedisClient, string, int) error
}
func NewFakeEmailProvider(senderEmail, emailPassword, emailServer string, emailServerPort int) fakeEmailProvider {
return &fakeEmailAuthData{
email: senderEmail,
password: emailPassword,
server: emailServer,
port: emailServerPort,
}
}
func (d *fakeEmailAuthData) UserEmailVerification(ctx context.Context, client db.RedisClient, data models.UserData) (err error) {
return
}
func (d *fakeEmailAuthData) UserPasswordReset(ctx context.Context, client db.RedisClient, userEmail string) (err error) {
return
}
func (d *fakeEmailAuthData) UserEmailReset(ctx context.Context, client db.RedisClient, userEmail string, userId int) (err error) {
return
}