test_service.go raw
1 package tests
2
3 import (
4 "strconv"
5 "testing"
6
7 "github.com/sirupsen/logrus"
8
9 "github.com/getAlby/hub/apps"
10 "github.com/getAlby/hub/logger"
11 "github.com/getAlby/hub/tests/db"
12
13 "gorm.io/gorm"
14
15 "github.com/getAlby/hub/config"
16 "github.com/getAlby/hub/events"
17 "github.com/getAlby/hub/lnclient"
18 "github.com/getAlby/hub/service/keys"
19 )
20
21 func CreateTestService(t *testing.T) (svc *TestService, err error) {
22 return CreateTestServiceWithMnemonic(t, "", "")
23 }
24
25 func CreateTestServiceWithMnemonic(t *testing.T, mnemonic string, unlockPassword string) (svc *TestService, err error) {
26 logger.Init(strconv.Itoa(int(logrus.DebugLevel)))
27
28 gormDb, err := db.NewDB(t)
29 if err != nil {
30 return nil, err
31 }
32
33 mockLn, err := NewMockLn()
34 if err != nil {
35 return nil, err
36 }
37
38 appConfig := &config.AppConfig{
39 Workdir: ".test",
40 }
41
42 cfg, err := config.NewConfig(
43 appConfig,
44 gormDb,
45 )
46 if err != nil {
47 return nil, err
48 }
49 keys := keys.NewKeys()
50
51 if mnemonic != "" {
52 if err = cfg.SetUpdate("Mnemonic", mnemonic, unlockPassword); err != nil {
53 return nil, err
54 }
55 }
56
57 if err = keys.Init(cfg, unlockPassword); err != nil {
58 return nil, err
59 }
60
61 eventPublisher := events.NewEventPublisher()
62
63 appsService := apps.NewAppsService(gormDb, eventPublisher, keys, cfg)
64
65 return &TestService{
66 Cfg: cfg,
67 LNClient: mockLn,
68 EventPublisher: eventPublisher,
69 DB: gormDb,
70 Keys: keys,
71 AppsService: appsService,
72 }, nil
73 }
74
75 type TestService struct {
76 Keys keys.Keys
77 Cfg config.Config
78 LNClient lnclient.LNClient
79 EventPublisher events.EventPublisher
80 AppsService apps.AppsService
81 DB *gorm.DB
82 }
83
84 func (s *TestService) Remove() {
85 db.CloseDB(s.DB)
86 }
87