Add tests for the configuration parsing
This commit is contained in:
89
config/config_test.go
Normal file
89
config/config_test.go
Normal file
@ -0,0 +1,89 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"os"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func newTestConfiguration() *configuration {
|
||||
return &configuration{
|
||||
Server: server{
|
||||
Address: "127.0.0.1",
|
||||
Port: 3000,
|
||||
},
|
||||
Nomad: nomad{
|
||||
Address: "127.0.0.2",
|
||||
Token: "SECRET",
|
||||
TLS: false,
|
||||
},
|
||||
Logger: logger{
|
||||
Level: "INFO",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (c *configuration) getReflectValue() reflect.Value {
|
||||
return reflect.ValueOf(c).Elem()
|
||||
}
|
||||
|
||||
func TestIntEnvironmentVariableOverwritesConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
_ = os.Setenv("POSEIDON_TEST_SERVER_PORT", "4000")
|
||||
readFromEnvironment("POSEIDON_TEST", config.getReflectValue())
|
||||
_ = os.Unsetenv("POSEIDON_TEST_SERVER_PORT")
|
||||
assert.Equal(t, 4000, config.Server.Port)
|
||||
}
|
||||
|
||||
func TestStringEnvironmentVariableOverwritesConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
_ = os.Setenv("POSEIDON_TEST_NOMAD_TOKEN", "ACCESS")
|
||||
readFromEnvironment("POSEIDON_TEST", config.getReflectValue())
|
||||
_ = os.Unsetenv("POSEIDON_TEST_NOMAD_TOKEN")
|
||||
assert.Equal(t, "ACCESS", config.Nomad.Token)
|
||||
}
|
||||
|
||||
func TestBoolEnvironmentVariableOverwritesConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
_ = os.Setenv("POSEIDON_TEST_NOMAD_TLS", "true")
|
||||
readFromEnvironment("POSEIDON_TEST", config.getReflectValue())
|
||||
_ = os.Unsetenv("POSEIDON_TEST_NOMAD_TLS")
|
||||
assert.Equal(t, true, config.Nomad.TLS)
|
||||
}
|
||||
|
||||
func TestUnsetEnvironmentVariableDoesNotChangeConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
readFromEnvironment("POSEIDON_TEST", config.getReflectValue())
|
||||
assert.Equal(t, "INFO", config.Logger.Level)
|
||||
}
|
||||
|
||||
func TestIntYamlVariableOverwritesConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
config.mergeYaml([]byte("server:\n port: 5000\n"))
|
||||
assert.Equal(t, 5000, config.Server.Port)
|
||||
}
|
||||
|
||||
func TestStringYamlVariableOverwritesConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
config.mergeYaml([]byte("logger:\n level: DEBUG\n"))
|
||||
assert.Equal(t, "DEBUG", config.Logger.Level)
|
||||
}
|
||||
|
||||
func TestBoolYamlVariableOverwritesConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
config.mergeYaml([]byte("nomad:\n tls: true\n"))
|
||||
assert.Equal(t, true, config.Nomad.TLS)
|
||||
}
|
||||
|
||||
func TestMissingYamlVariableDoesNotChangeConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
config.mergeYaml([]byte(""))
|
||||
assert.Equal(t, "127.0.0.2", config.Nomad.Address)
|
||||
}
|
||||
|
||||
func TestUnsetYamlVariableDoesNotChangeConfig(t *testing.T) {
|
||||
config := newTestConfiguration()
|
||||
config.mergeYaml([]byte("nomad:\n address:\n"))
|
||||
assert.Equal(t, "127.0.0.2", config.Nomad.Address)
|
||||
}
|
Reference in New Issue
Block a user