config.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package apitest
  2. import (
  3. "os"
  4. "testing"
  5. "github.com/porter-dev/porter/api/server/shared"
  6. "github.com/porter-dev/porter/api/server/shared/envloader"
  7. "github.com/porter-dev/porter/internal/auth/sessionstore"
  8. "github.com/porter-dev/porter/internal/auth/token"
  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. envConf, err := envloader.FromEnv()
  23. if err != nil {
  24. return nil, err
  25. }
  26. store, err := sessionstore.NewStore(
  27. &sessionstore.NewStoreOpts{
  28. SessionRepository: repo.Session(),
  29. CookieSecrets: envConf.ServerConf.CookieSecrets,
  30. },
  31. )
  32. if err != nil {
  33. return nil, err
  34. }
  35. tokenConf := &token.TokenGeneratorConf{
  36. TokenSecret: envConf.ServerConf.TokenGeneratorSecret,
  37. }
  38. notifier := NewFakeUserNotifier()
  39. return &shared.Config{
  40. Logger: l,
  41. Repo: repo,
  42. Store: store,
  43. ServerConf: envConf.ServerConf,
  44. TokenConf: tokenConf,
  45. UserNotifier: notifier,
  46. }, nil
  47. }
  48. func LoadConfig(t *testing.T, failingRepoMethods ...string) *shared.Config {
  49. configLoader := NewTestConfigLoader(true, failingRepoMethods...)
  50. config, err := configLoader.LoadConfig()
  51. if err != nil {
  52. t.Fatal(err)
  53. }
  54. return config
  55. }