config.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package apitest
  2. import (
  3. "os"
  4. "testing"
  5. "github.com/porter-dev/porter/internal/features"
  6. "github.com/porter-dev/porter/internal/telemetry"
  7. "github.com/porter-dev/porter/api/server/shared/config"
  8. "github.com/porter-dev/porter/api/server/shared/config/envloader"
  9. "github.com/porter-dev/porter/internal/analytics"
  10. "github.com/porter-dev/porter/internal/auth/sessionstore"
  11. "github.com/porter-dev/porter/internal/auth/token"
  12. "github.com/porter-dev/porter/internal/billing"
  13. "github.com/porter-dev/porter/internal/repository/test"
  14. "github.com/porter-dev/porter/pkg/logger"
  15. )
  16. type TestConfigLoader struct {
  17. canQuery bool
  18. failingRepoMethods []string
  19. }
  20. func NewTestConfigLoader(canQuery bool, failingRepoMethods ...string) config.ConfigLoader {
  21. return &TestConfigLoader{canQuery, failingRepoMethods}
  22. }
  23. func (t *TestConfigLoader) LoadConfig() (*config.Config, error) {
  24. l := logger.New(true, os.Stdout)
  25. repo := test.NewRepository(t.canQuery, t.failingRepoMethods...)
  26. envConf, err := envloader.FromEnv()
  27. if err != nil {
  28. return nil, err
  29. }
  30. store, err := sessionstore.NewStore(
  31. &sessionstore.NewStoreOpts{
  32. SessionRepository: repo.Session(),
  33. CookieSecrets: envConf.ServerConf.CookieSecrets,
  34. },
  35. )
  36. if err != nil {
  37. return nil, err
  38. }
  39. tokenConf := &token.TokenGeneratorConf{
  40. TokenSecret: envConf.ServerConf.TokenGeneratorSecret,
  41. }
  42. notifier := NewFakeUserNotifier()
  43. return &config.Config{
  44. Logger: l,
  45. Repo: repo,
  46. Store: store,
  47. ServerConf: envConf.ServerConf,
  48. TokenConf: tokenConf,
  49. UserNotifier: notifier,
  50. LaunchDarklyClient: &features.Client{},
  51. AnalyticsClient: analytics.InitializeAnalyticsSegmentClient("", l),
  52. BillingManager: &billing.NoopBillingManager{},
  53. TelemetryConfig: telemetry.TracerConfig{ServiceName: "fake", CollectorURL: "fake"},
  54. }, nil
  55. }
  56. func LoadConfig(t *testing.T, failingRepoMethods ...string) *config.Config {
  57. configLoader := NewTestConfigLoader(true, failingRepoMethods...)
  58. config, err := configLoader.LoadConfig()
  59. if err != nil {
  60. t.Fatal(err)
  61. }
  62. return config
  63. }