103 lines
2.9 KiB
Go
103 lines
2.9 KiB
Go
package hws_test
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.haelnorr.com/h/golib/hws"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func Test_ConfigFromEnv(t *testing.T) {
|
|
t.Run("Default values when no env vars set", func(t *testing.T) {
|
|
// Clear any existing env vars
|
|
os.Unsetenv("HWS_HOST")
|
|
os.Unsetenv("HWS_PORT")
|
|
os.Unsetenv("HWS_GZIP")
|
|
os.Unsetenv("HWS_READ_HEADER_TIMEOUT")
|
|
os.Unsetenv("HWS_WRITE_TIMEOUT")
|
|
os.Unsetenv("HWS_IDLE_TIMEOUT")
|
|
|
|
config, err := hws.ConfigFromEnv()
|
|
require.NoError(t, err)
|
|
require.NotNil(t, config)
|
|
|
|
assert.Equal(t, "127.0.0.1", config.Host)
|
|
assert.Equal(t, uint64(3000), config.Port)
|
|
assert.Equal(t, false, config.GZIP)
|
|
assert.Equal(t, 2*time.Second, config.ReadHeaderTimeout)
|
|
assert.Equal(t, 10*time.Second, config.WriteTimeout)
|
|
assert.Equal(t, 120*time.Second, config.IdleTimeout)
|
|
})
|
|
|
|
t.Run("Custom host", func(t *testing.T) {
|
|
os.Setenv("HWS_HOST", "192.168.1.1")
|
|
defer os.Unsetenv("HWS_HOST")
|
|
|
|
config, err := hws.ConfigFromEnv()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "192.168.1.1", config.Host)
|
|
})
|
|
|
|
t.Run("Custom port", func(t *testing.T) {
|
|
os.Setenv("HWS_PORT", "8080")
|
|
defer os.Unsetenv("HWS_PORT")
|
|
|
|
config, err := hws.ConfigFromEnv()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, uint64(8080), config.Port)
|
|
})
|
|
|
|
t.Run("GZIP enabled", func(t *testing.T) {
|
|
os.Setenv("HWS_GZIP", "true")
|
|
defer os.Unsetenv("HWS_GZIP")
|
|
|
|
config, err := hws.ConfigFromEnv()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, true, config.GZIP)
|
|
})
|
|
|
|
t.Run("Custom timeouts", func(t *testing.T) {
|
|
os.Setenv("HWS_READ_HEADER_TIMEOUT", "5")
|
|
os.Setenv("HWS_WRITE_TIMEOUT", "30")
|
|
os.Setenv("HWS_IDLE_TIMEOUT", "300")
|
|
defer os.Unsetenv("HWS_READ_HEADER_TIMEOUT")
|
|
defer os.Unsetenv("HWS_WRITE_TIMEOUT")
|
|
defer os.Unsetenv("HWS_IDLE_TIMEOUT")
|
|
|
|
config, err := hws.ConfigFromEnv()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, 5*time.Second, config.ReadHeaderTimeout)
|
|
assert.Equal(t, 30*time.Second, config.WriteTimeout)
|
|
assert.Equal(t, 300*time.Second, config.IdleTimeout)
|
|
})
|
|
|
|
t.Run("All custom values", func(t *testing.T) {
|
|
os.Setenv("HWS_HOST", "0.0.0.0")
|
|
os.Setenv("HWS_PORT", "9000")
|
|
os.Setenv("HWS_GZIP", "true")
|
|
os.Setenv("HWS_READ_HEADER_TIMEOUT", "3")
|
|
os.Setenv("HWS_WRITE_TIMEOUT", "15")
|
|
os.Setenv("HWS_IDLE_TIMEOUT", "180")
|
|
defer func() {
|
|
os.Unsetenv("HWS_HOST")
|
|
os.Unsetenv("HWS_PORT")
|
|
os.Unsetenv("HWS_GZIP")
|
|
os.Unsetenv("HWS_READ_HEADER_TIMEOUT")
|
|
os.Unsetenv("HWS_WRITE_TIMEOUT")
|
|
os.Unsetenv("HWS_IDLE_TIMEOUT")
|
|
}()
|
|
|
|
config, err := hws.ConfigFromEnv()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "0.0.0.0", config.Host)
|
|
assert.Equal(t, uint64(9000), config.Port)
|
|
assert.Equal(t, true, config.GZIP)
|
|
assert.Equal(t, 3*time.Second, config.ReadHeaderTimeout)
|
|
assert.Equal(t, 15*time.Second, config.WriteTimeout)
|
|
assert.Equal(t, 180*time.Second, config.IdleTimeout)
|
|
})
|
|
}
|