package config_test import ( "os" "testing" "github.com/stretchr/testify/assert" "edge-infra.dev/pkg/edge/datasync/internal/config" "edge-infra.dev/pkg/edge/datasync/internal/config/fake" ) func TestValidate(t *testing.T) { err := config.ValidateConfiguration() assert.Error(t, err) assert.Equal(t, "missing the following environment variables: ORGANIZATION_ID, ORGANIZATION_NAME, SITE_ID, SITE_NAME, TARGET_SETTINGS", err.Error()) } func TestGetRouteConfig(t *testing.T) { fake.SetEnv() tlog := config.GetRouteConfig("tlog", fake.InternalConfig) assert.Equal(t, "tlog", tlog.Type) assert.Equal(t, "tlog", tlog.Route) assert.Equal(t, "tlog", tlog.Topic) assert.Equal(t, 10, tlog.BulkSize) assert.Equal(t, true, tlog.Compression) assert.Equal(t, false, tlog.Signing) audit := config.GetRouteConfig("audit", fake.InternalConfig) assert.Equal(t, "audit", audit.Type) assert.Equal(t, "public", audit.Route) assert.Equal(t, "public", audit.Topic) assert.Equal(t, 20, audit.BulkSize) assert.Equal(t, true, audit.Compression) assert.Equal(t, false, audit.Signing) unknown := config.GetRouteConfig("unknown-message-type", fake.InternalConfig) assert.Equal(t, "unknown-message-type", unknown.Type) assert.Equal(t, "public", unknown.Route) assert.Equal(t, "public", unknown.Topic) assert.Equal(t, 20, unknown.BulkSize) assert.Equal(t, false, unknown.Compression) assert.Equal(t, false, unknown.Signing) } func TestAvailableRoutesConfig(t *testing.T) { fake.SetEnv() availableRoutes := config.GetRoutes(fake.InternalConfig) assert.NotEmpty(t, availableRoutes) assert.Len(t, availableRoutes, 2) assert.Equal(t, "tlog", availableRoutes[0]) assert.Equal(t, "public", availableRoutes[1]) } func TestBulkSizesConfig(t *testing.T) { fake.SetEnv() bulkSizes := config.GetBulkSizes(fake.InternalConfig) assert.Len(t, bulkSizes, 2) assert.Equal(t, 10, bulkSizes["tlog"]) assert.Equal(t, 20, bulkSizes["public"]) } func TestTopicConfig(t *testing.T) { fake.SetEnv() topics := config.GetTopics(fake.InternalConfig) assert.Len(t, topics, 2) assert.Equal(t, "tlog", topics["tlog"]) assert.Equal(t, "public", topics["public"]) } func TestOutboxPathConfig(t *testing.T) { fake.SetEnv() assert.Equal(t, "testdata/outbox", config.GetOutboxPath(fake.InternalConfig)) } func TestPartitionsConfigWithTrailingSlash(t *testing.T) { assert.Equal(t, "/app/cmd/data-sync-messaging/outbox", config.GetOutboxPath(fake.SlashConfig)) } func TestGetTargetConfig(t *testing.T) { fake.SetEnv() assert.Equal(t, "kafka", config.GetTarget()) } func TestGetTargetDefaultConfig(t *testing.T) { assert.Equal(t, "kafka", config.GetTarget()) } func TestGetKafkaSettingsConfig(t *testing.T) { fake.SetEnv() kafkaSettings, err := config.GetKafkaSettings() assert.NoError(t, err) assert.Equal(t, "redpanda.redpanda.svc.cluster.local:9092", kafkaSettings.KafkaEndpoint) assert.Equal(t, "SSL", kafkaSettings.SecurityProtocol) assert.Equal(t, "KeystoreLocation", kafkaSettings.KeystoreLocation) assert.Equal(t, "KeystorePassword", kafkaSettings.KeystorePassword) assert.Equal(t, "CaLocation", kafkaSettings.CaLocation) assert.Equal(t, false, kafkaSettings.EnableCertVerification) assert.Equal(t, "none", kafkaSettings.IdentificationAlgorithm) assert.Equal(t, int32(10485760), kafkaSettings.MessageMaxBytes) } func TestGetPubSubSettingsConfig(t *testing.T) { os.Setenv("TARGET", "pubsub") os.Setenv("TARGET_SETTINGS", `{"project_id": "proj-01"}`) pubsubSettings, err := config.GetPubSubSettings() assert.NoError(t, err) assert.Equal(t, "proj-01", pubsubSettings.ProjectID) }