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