Esempio n. 1
0
func TestParseStructWithInvalidFieldKind(t *testing.T) {
	type config struct {
		WontWork int64 `env:"BLAH"`
	}
	os.Setenv("BLAH", "10")
	cfg := config{}
	assert.Error(t, env.Parse(&cfg))
}
Esempio n. 2
0
func TestParsesOptionalMissing(t *testing.T) {
	os.Setenv("somevar", "somevalue")
	os.Setenv("othervar", "true")
	os.Setenv("PORT", "8080")
	defer os.Setenv("somevar", "")
	defer os.Setenv("othervar", "")
	defer os.Setenv("PORT", "")

	cfg := Config{}
	assert.NoError(t, env.Parse(&cfg))
	assert.Equal(t, "", cfg.DatabaseURL)
}
Esempio n. 3
0
func TestInvalidInt(t *testing.T) {
	os.Setenv("somevar", "somevalue")
	os.Setenv("othervar", "true")
	defer os.Setenv("somevar", "")
	defer os.Setenv("othervar", "")

	os.Setenv("PORT", "should-be-an-int")
	defer os.Setenv("PORT", "")

	cfg := Config{}
	assert.Error(t, env.Parse(&cfg))
}
Esempio n. 4
0
func TestInvalidBool(t *testing.T) {
	os.Setenv("somevar", "somevalue")
	os.Setenv("PORT", "8080")
	defer os.Setenv("somevar", "")
	defer os.Setenv("PORT", "")

	os.Setenv("othervar", "should-be-a-bool")
	defer os.Setenv("othervar", "")

	cfg := Config{}
	assert.Error(t, env.Parse(&cfg))
}
Esempio n. 5
0
func TestParseStructWithoutEnvTag(t *testing.T) {
	os.Setenv("somevar", "somevalue")
	os.Setenv("othervar", "true")
	os.Setenv("PORT", "8080")
	defer os.Setenv("somevar", "")
	defer os.Setenv("othervar", "")
	defer os.Setenv("PORT", "")

	cfg := Config{}
	assert.NoError(t, env.Parse(&cfg))
	assert.Empty(t, cfg.NotAnEnv)
}
Esempio n. 6
0
func main() {
	os.Setenv("HOME", "/tmp/fakehome")
	fmt.Printf("PASSWORD before: '%s'\n", os.Getenv("PASSWORD"))
	cfg := config{}
	err := env.Parse(&cfg)
	if err == nil {
		fmt.Println(cfg)
	} else {
		fmt.Println(err)
	}
	fmt.Printf("PASSWORD after: '%s'\n", os.Getenv("PASSWORD"))
}
Esempio n. 7
0
func TestClearSensitiveOnError(t *testing.T) {
	os.Setenv("somevar", "somevalue")
	os.Setenv("othervar", "true")
	defer os.Setenv("somevar", "")
	defer os.Setenv("othervar", "")

	cfg := Config{}
	pw := "MrGoodbytes"
	os.Setenv("PASSWORD", pw)
	// Should get an error, since we didn't pass in PORT
	assert.Error(t, env.Parse(&cfg))
	assert.Equal(t, "", os.Getenv("PASSWORD"))
}
Esempio n. 8
0
func TestParsesOptionalPresent(t *testing.T) {
	os.Setenv("somevar", "somevalue")
	os.Setenv("othervar", "true")
	os.Setenv("PORT", "8080")
	defer os.Setenv("somevar", "")
	defer os.Setenv("othervar", "")
	defer os.Setenv("PORT", "")

	cfg := Config{}
	db := "postgres://localhost:5432/db"
	os.Setenv("DATABASE_URL", db)
	assert.NoError(t, env.Parse(&cfg))
	assert.Equal(t, db, cfg.DatabaseURL)
}
Esempio n. 9
0
func TestParsesEnv(t *testing.T) {
	os.Setenv("somevar", "somevalue")
	os.Setenv("othervar", "true")
	os.Setenv("PORT", "8080")
	defer os.Setenv("somevar", "")
	defer os.Setenv("othervar", "")
	defer os.Setenv("PORT", "")

	cfg := Config{}
	assert.NoError(t, env.Parse(&cfg))
	assert.Equal(t, "somevalue", cfg.Some)
	assert.Equal(t, true, cfg.Other)
	assert.Equal(t, 8080, cfg.Port)
}
Esempio n. 10
0
func TestParsesSensitive(t *testing.T) {
	os.Setenv("somevar", "somevalue")
	os.Setenv("othervar", "true")
	os.Setenv("PORT", "8080")
	defer os.Setenv("somevar", "")
	defer os.Setenv("othervar", "")
	defer os.Setenv("PORT", "")

	cfg := Config{}
	pw := "MrGoodbytes"
	os.Setenv("PASSWORD", pw)
	assert.NoError(t, env.Parse(&cfg))
	assert.Equal(t, pw, cfg.Password)
	assert.Equal(t, "", os.Getenv("PASSWORD"))
}
Esempio n. 11
0
func ExampleFail() {
	type config struct {
		Home         string `env:"HOME"`
		Port         int    `env:"PORT"`
		IsProduction bool   `env:"PRODUCTION,optional"`
	}
	os.Setenv("HOME", "/tmp/fakehome")
	defer os.Setenv("HOME", "")

	cfg := config{}
	err := env.Parse(&cfg)
	if err == nil {
		fmt.Println(cfg)
	} else {
		fmt.Println(err)
	}
	// Output: Missing config environment variable 'PORT'
}
Esempio n. 12
0
func ExampleParse() {
	type config struct {
		Home         string `env:"HOME"`
		Port         int    `env:"PORT"`
		IsProduction bool   `env:"PRODUCTION,optional"`
	}
	os.Setenv("HOME", "/tmp/fakehome")
	os.Setenv("PORT", "3000")
	defer os.Setenv("HOME", "")
	defer os.Setenv("PORT", "")

	cfg := config{}
	err := env.Parse(&cfg)
	if err == nil {
		fmt.Println(cfg)
	} else {
		fmt.Println(err)
	}
	// Output: {/tmp/fakehome 3000 false}
}
Esempio n. 13
0
func TestPassReference(t *testing.T) {
	cfg := Config{}
	assert.Error(t, env.Parse(cfg))
}
Esempio n. 14
0
func TestPassAnInvalidPtr(t *testing.T) {
	var thisShouldBreak int
	assert.Error(t, env.Parse(&thisShouldBreak))
}
Esempio n. 15
0
func TestEmptyVars(t *testing.T) {
	cfg := Config{}
	assert.Error(t, env.Parse(&cfg))
}