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