Add config
This commit is contained in:
parent
3592ffd1b9
commit
3bac1ddadc
|
|
@ -0,0 +1,23 @@
|
|||
package config
|
||||
|
||||
import "github.com/jinzhu/configor"
|
||||
|
||||
// Configuration the application config can be set per env variables or config file (config.yml).
|
||||
type Configuration struct {
|
||||
Port int `default:"8080"`
|
||||
Database struct {
|
||||
Dialect string `default:"sqlite3"`
|
||||
Connection string `default:"memo.db"`
|
||||
}
|
||||
DefaultUser struct {
|
||||
Name string `default:"admin"`
|
||||
Pass string `default:"admin"`
|
||||
}
|
||||
}
|
||||
|
||||
// Get returns the configuration extracted from env variables or config file.
|
||||
func Get() *Configuration {
|
||||
conf := new(Configuration)
|
||||
configor.New(&configor.Config{ENVPrefix: "MEMO"}).Load(conf, "config.yml", "/etc/memo/config.yml")
|
||||
return conf
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestConfigEnv(t *testing.T) {
|
||||
os.Setenv("MEMO_DEFAULTUSER_NAME", "jmattheis")
|
||||
conf := Get()
|
||||
assert.Equal(t, 8080, conf.Port, "should use defaults")
|
||||
assert.Equal(t, "jmattheis", conf.DefaultUser.Name, "should not use default but env var")
|
||||
os.Unsetenv("MEMO_DEFAULTUSER_NAME")
|
||||
}
|
||||
|
||||
func TestConfigFile(t *testing.T) {
|
||||
file, err := os.Create("config.yml")
|
||||
defer func() {
|
||||
file.Close()
|
||||
}()
|
||||
assert.Nil(t, err)
|
||||
_, err = file.WriteString(`
|
||||
port: 1234
|
||||
database:
|
||||
dialect: mysql
|
||||
connection: user name
|
||||
defaultuser:
|
||||
name: nicories
|
||||
pass: 12345
|
||||
`)
|
||||
file.Close()
|
||||
assert.Nil(t, err)
|
||||
conf := Get()
|
||||
assert.Equal(t, 1234, conf.Port)
|
||||
assert.Equal(t, "nicories", conf.DefaultUser.Name)
|
||||
assert.Equal(t, "12345", conf.DefaultUser.Pass)
|
||||
assert.Equal(t, "mysql", conf.Database.Dialect)
|
||||
assert.Equal(t, "user name", conf.Database.Connection)
|
||||
|
||||
assert.Nil(t, os.Remove("config.yml"))
|
||||
}
|
||||
Loading…
Reference in New Issue