1 package config_test
2
3 import (
4 "os"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8
9 "edge-infra.dev/pkg/edge/datasync/internal/config"
10 "edge-infra.dev/pkg/edge/datasync/internal/config/fake"
11 )
12
13 func TestValidate(t *testing.T) {
14 err := config.ValidateConfiguration()
15 assert.Error(t, err)
16 assert.Equal(t, "missing the following environment variables: ORGANIZATION_ID, ORGANIZATION_NAME, SITE_ID, SITE_NAME, TARGET_SETTINGS", err.Error())
17 }
18
19 func TestGetRouteConfig(t *testing.T) {
20 fake.SetEnv()
21
22 tlog := config.GetRouteConfig("tlog", fake.InternalConfig)
23 assert.Equal(t, "tlog", tlog.Type)
24 assert.Equal(t, "tlog", tlog.Route)
25 assert.Equal(t, "tlog", tlog.Topic)
26 assert.Equal(t, 10, tlog.BulkSize)
27 assert.Equal(t, true, tlog.Compression)
28 assert.Equal(t, false, tlog.Signing)
29
30 audit := config.GetRouteConfig("audit", fake.InternalConfig)
31 assert.Equal(t, "audit", audit.Type)
32 assert.Equal(t, "public", audit.Route)
33 assert.Equal(t, "public", audit.Topic)
34 assert.Equal(t, 20, audit.BulkSize)
35 assert.Equal(t, true, audit.Compression)
36 assert.Equal(t, false, audit.Signing)
37
38 unknown := config.GetRouteConfig("unknown-message-type", fake.InternalConfig)
39 assert.Equal(t, "unknown-message-type", unknown.Type)
40 assert.Equal(t, "public", unknown.Route)
41 assert.Equal(t, "public", unknown.Topic)
42 assert.Equal(t, 20, unknown.BulkSize)
43 assert.Equal(t, false, unknown.Compression)
44 assert.Equal(t, false, unknown.Signing)
45 }
46
47 func TestAvailableRoutesConfig(t *testing.T) {
48 fake.SetEnv()
49 availableRoutes := config.GetRoutes(fake.InternalConfig)
50 assert.NotEmpty(t, availableRoutes)
51 assert.Len(t, availableRoutes, 2)
52 assert.Equal(t, "tlog", availableRoutes[0])
53 assert.Equal(t, "public", availableRoutes[1])
54 }
55
56 func TestBulkSizesConfig(t *testing.T) {
57 fake.SetEnv()
58 bulkSizes := config.GetBulkSizes(fake.InternalConfig)
59 assert.Len(t, bulkSizes, 2)
60 assert.Equal(t, 10, bulkSizes["tlog"])
61 assert.Equal(t, 20, bulkSizes["public"])
62 }
63
64 func TestTopicConfig(t *testing.T) {
65 fake.SetEnv()
66 topics := config.GetTopics(fake.InternalConfig)
67 assert.Len(t, topics, 2)
68 assert.Equal(t, "tlog", topics["tlog"])
69 assert.Equal(t, "public", topics["public"])
70 }
71
72 func TestOutboxPathConfig(t *testing.T) {
73 fake.SetEnv()
74 assert.Equal(t, "testdata/outbox", config.GetOutboxPath(fake.InternalConfig))
75 }
76
77 func TestPartitionsConfigWithTrailingSlash(t *testing.T) {
78 assert.Equal(t, "/app/cmd/data-sync-messaging/outbox", config.GetOutboxPath(fake.SlashConfig))
79 }
80
81 func TestGetTargetConfig(t *testing.T) {
82 fake.SetEnv()
83 assert.Equal(t, "kafka", config.GetTarget())
84 }
85
86 func TestGetTargetDefaultConfig(t *testing.T) {
87 assert.Equal(t, "kafka", config.GetTarget())
88 }
89
90 func TestGetKafkaSettingsConfig(t *testing.T) {
91 fake.SetEnv()
92
93 kafkaSettings, err := config.GetKafkaSettings()
94 assert.NoError(t, err)
95 assert.Equal(t, "redpanda.redpanda.svc.cluster.local:9092", kafkaSettings.KafkaEndpoint)
96 assert.Equal(t, "SSL", kafkaSettings.SecurityProtocol)
97 assert.Equal(t, "KeystoreLocation", kafkaSettings.KeystoreLocation)
98 assert.Equal(t, "KeystorePassword", kafkaSettings.KeystorePassword)
99 assert.Equal(t, "CaLocation", kafkaSettings.CaLocation)
100 assert.Equal(t, false, kafkaSettings.EnableCertVerification)
101 assert.Equal(t, "none", kafkaSettings.IdentificationAlgorithm)
102 assert.Equal(t, int32(10485760), kafkaSettings.MessageMaxBytes)
103 }
104
105 func TestGetPubSubSettingsConfig(t *testing.T) {
106 os.Setenv("TARGET", "pubsub")
107 os.Setenv("TARGET_SETTINGS", `{"project_id": "proj-01"}`)
108
109 pubsubSettings, err := config.GetPubSubSettings()
110 assert.NoError(t, err)
111 assert.Equal(t, "proj-01", pubsubSettings.ProjectID)
112 }
113
View as plain text