Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
* Copyright (C) 2023-2024
* Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package config
import (
"os"
"testing"
"github.com/stretchr/testify/assert"
)
func TestLoadConfig(t *testing.T) {
t.Run("should load config from file", func(t *testing.T) {
config := LoadConfig()
expectedConfig := Config{}
expectedConfig.Http.Server.Port = 8082
expectedConfig.Grpc.Server.Mock = false
expectedConfig.Grpc.Server.Port = 50054
expectedConfig.Grpc.Router.Rueckfragen.Port = 50051
expectedConfig.Grpc.Router.Commands.Port = 50052
expectedConfig.Grpc.Router.Binaryfiles.Port = 50053
expectedConfig.Logging.Level = "DEBUG"
assert.Equal(t, expectedConfig, config)
})
t.Run("should load config from env", func(t *testing.T) {
envVars := map[string]string{
"HTTP_SERVER_PORT": "9090",
"GRPC_SERVER_PORT": "1234",
"GRPC_ROUTER_RUECKFRAGEN_PORT": "5678",
"GRPC_ROUTER_COMMANDS_PORT": "1357",
"GRPC_ROUTER_BINARYFILES_PORT": "2468",
"LOGGING_LEVEL": "ERROR",
}
for key, value := range envVars {
assert.NoError(t, os.Setenv(key, value), "Setenv "+key+" should not return an error")
}
config := LoadConfig("testdata/empty_test_config.yml")
for key := range envVars {
assert.NoError(t, os.Unsetenv(key), "Unsetenv "+key+" should not return an error")
}
expectedConfig := Config{}
expectedConfig.Http.Server.Port = 9090
expectedConfig.Grpc.Server.Mock = false
expectedConfig.Grpc.Server.Port = 1234
expectedConfig.Grpc.Router.Rueckfragen.Port = 5678
expectedConfig.Grpc.Router.Commands.Port = 1357
expectedConfig.Grpc.Router.Binaryfiles.Port = 2468
expectedConfig.Logging.Level = "ERROR"
assert.Equal(t, expectedConfig, config)
})
t.Run("should overwrite config with env", func(t *testing.T) {
envVars := map[string]string{
"HTTP_SERVER_PORT": "9090",
"GRPC_SERVER_PORT": "1234",
"GRPC_ROUTER_RUECKFRAGEN_PORT": "5678",
}
for key, value := range envVars {
assert.NoError(t, os.Setenv(key, value), "Setenv "+key+" should not return an error")
}
for key := range envVars {
assert.NoError(t, os.Unsetenv(key), "Unsetenv "+key+" should not return an error")
}
expectedConfig.Http.Server.Port = 9090
expectedConfig.Grpc.Server.Mock = false
expectedConfig.Grpc.Server.Port = 1234
expectedConfig.Grpc.Router.Rueckfragen.Port = 5678
expectedConfig.Grpc.Router.Commands.Port = 50052
expectedConfig.Grpc.Router.Binaryfiles.Port = 50053