config.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package apitest
  2. import (
  3. "os"
  4. "testing"
  5. "github.com/porter-dev/porter/api/server/shared"
  6. "github.com/porter-dev/porter/internal/auth/sessionstore"
  7. "github.com/porter-dev/porter/internal/auth/token"
  8. "github.com/porter-dev/porter/internal/config"
  9. "github.com/porter-dev/porter/internal/logger"
  10. "github.com/porter-dev/porter/internal/repository/test"
  11. )
  12. type TestConfigLoader struct {
  13. canQuery bool
  14. failingRepoMethods []string
  15. }
  16. func NewTestConfigLoader(canQuery bool, failingRepoMethods ...string) shared.ConfigLoader {
  17. return &TestConfigLoader{canQuery, failingRepoMethods}
  18. }
  19. func (t *TestConfigLoader) LoadConfig() (*shared.Config, error) {
  20. l := logger.New(true, os.Stdout)
  21. repo := test.NewRepository(t.canQuery, t.failingRepoMethods...)
  22. configFromEnv := config.FromEnv()
  23. store, err := sessionstore.NewStore(repo, configFromEnv.Server)
  24. if err != nil {
  25. return nil, err
  26. }
  27. tokenConf := &token.TokenGeneratorConf{
  28. TokenSecret: configFromEnv.Server.TokenGeneratorSecret,
  29. }
  30. notifier := NewFakeUserNotifier()
  31. return &shared.Config{
  32. Logger: l,
  33. Repo: repo,
  34. Store: store,
  35. ServerConf: configFromEnv.Server,
  36. TokenConf: tokenConf,
  37. UserNotifier: notifier,
  38. }, nil
  39. }
  40. func LoadConfig(t *testing.T, failingRepoMethods ...string) *shared.Config {
  41. configLoader := NewTestConfigLoader(true, failingRepoMethods...)
  42. config, err := configLoader.LoadConfig()
  43. if err != nil {
  44. t.Fatal(err)
  45. }
  46. return config
  47. }