Compare commits
1 Commits
hwsauth/v0
...
hws/v0.2.1
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c2ca4d79a |
@@ -9,7 +9,6 @@ import (
|
|||||||
type Config struct {
|
type Config struct {
|
||||||
Host string // ENV HWS_HOST: Host to listen on (default: 127.0.0.1)
|
Host string // ENV HWS_HOST: Host to listen on (default: 127.0.0.1)
|
||||||
Port uint64 // ENV HWS_PORT: Port to listen on (default: 3000)
|
Port uint64 // ENV HWS_PORT: Port to listen on (default: 3000)
|
||||||
TrustedHost string // ENV HWS_TRUSTED_HOST: Domain/Hostname to accept as trusted (default: same as Host)
|
|
||||||
GZIP bool // ENV HWS_GZIP: Flag for GZIP compression on requests (default: false)
|
GZIP bool // ENV HWS_GZIP: Flag for GZIP compression on requests (default: false)
|
||||||
ReadHeaderTimeout time.Duration // ENV HWS_READ_HEADER_TIMEOUT: Timeout for reading request headers in seconds (default: 2)
|
ReadHeaderTimeout time.Duration // ENV HWS_READ_HEADER_TIMEOUT: Timeout for reading request headers in seconds (default: 2)
|
||||||
WriteTimeout time.Duration // ENV HWS_WRITE_TIMEOUT: Timeout for writing requests in seconds (default: 10)
|
WriteTimeout time.Duration // ENV HWS_WRITE_TIMEOUT: Timeout for writing requests in seconds (default: 10)
|
||||||
@@ -18,13 +17,9 @@ type Config struct {
|
|||||||
|
|
||||||
// ConfigFromEnv returns a Config struct loaded from the environment variables
|
// ConfigFromEnv returns a Config struct loaded from the environment variables
|
||||||
func ConfigFromEnv() (*Config, error) {
|
func ConfigFromEnv() (*Config, error) {
|
||||||
host := env.String("HWS_HOST", "127.0.0.1")
|
|
||||||
trustedHost := env.String("HWS_TRUSTED_HOST", host)
|
|
||||||
|
|
||||||
cfg := &Config{
|
cfg := &Config{
|
||||||
Host: host,
|
Host: env.String("HWS_HOST", "127.0.0.1"),
|
||||||
Port: env.UInt64("HWS_PORT", 3000),
|
Port: env.UInt64("HWS_PORT", 3000),
|
||||||
TrustedHost: trustedHost,
|
|
||||||
GZIP: env.Bool("HWS_GZIP", false),
|
GZIP: env.Bool("HWS_GZIP", false),
|
||||||
ReadHeaderTimeout: time.Duration(env.Int("HWS_READ_HEADER_TIMEOUT", 2)) * time.Second,
|
ReadHeaderTimeout: time.Duration(env.Int("HWS_READ_HEADER_TIMEOUT", 2)) * time.Second,
|
||||||
WriteTimeout: time.Duration(env.Int("HWS_WRITE_TIMEOUT", 10)) * time.Second,
|
WriteTimeout: time.Duration(env.Int("HWS_WRITE_TIMEOUT", 10)) * time.Second,
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ func Test_ConfigFromEnv(t *testing.T) {
|
|||||||
// Clear any existing env vars
|
// Clear any existing env vars
|
||||||
os.Unsetenv("HWS_HOST")
|
os.Unsetenv("HWS_HOST")
|
||||||
os.Unsetenv("HWS_PORT")
|
os.Unsetenv("HWS_PORT")
|
||||||
os.Unsetenv("HWS_TRUSTED_HOST")
|
|
||||||
os.Unsetenv("HWS_GZIP")
|
os.Unsetenv("HWS_GZIP")
|
||||||
os.Unsetenv("HWS_READ_HEADER_TIMEOUT")
|
os.Unsetenv("HWS_READ_HEADER_TIMEOUT")
|
||||||
os.Unsetenv("HWS_WRITE_TIMEOUT")
|
os.Unsetenv("HWS_WRITE_TIMEOUT")
|
||||||
@@ -27,7 +26,6 @@ func Test_ConfigFromEnv(t *testing.T) {
|
|||||||
|
|
||||||
assert.Equal(t, "127.0.0.1", config.Host)
|
assert.Equal(t, "127.0.0.1", config.Host)
|
||||||
assert.Equal(t, uint64(3000), config.Port)
|
assert.Equal(t, uint64(3000), config.Port)
|
||||||
assert.Equal(t, "127.0.0.1", config.TrustedHost)
|
|
||||||
assert.Equal(t, false, config.GZIP)
|
assert.Equal(t, false, config.GZIP)
|
||||||
assert.Equal(t, 2*time.Second, config.ReadHeaderTimeout)
|
assert.Equal(t, 2*time.Second, config.ReadHeaderTimeout)
|
||||||
assert.Equal(t, 10*time.Second, config.WriteTimeout)
|
assert.Equal(t, 10*time.Second, config.WriteTimeout)
|
||||||
@@ -41,7 +39,6 @@ func Test_ConfigFromEnv(t *testing.T) {
|
|||||||
config, err := hws.ConfigFromEnv()
|
config, err := hws.ConfigFromEnv()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, "192.168.1.1", config.Host)
|
assert.Equal(t, "192.168.1.1", config.Host)
|
||||||
assert.Equal(t, "192.168.1.1", config.TrustedHost) // Should match host by default
|
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Custom port", func(t *testing.T) {
|
t.Run("Custom port", func(t *testing.T) {
|
||||||
@@ -53,18 +50,6 @@ func Test_ConfigFromEnv(t *testing.T) {
|
|||||||
assert.Equal(t, uint64(8080), config.Port)
|
assert.Equal(t, uint64(8080), config.Port)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Custom trusted host", func(t *testing.T) {
|
|
||||||
os.Setenv("HWS_HOST", "127.0.0.1")
|
|
||||||
os.Setenv("HWS_TRUSTED_HOST", "example.com")
|
|
||||||
defer os.Unsetenv("HWS_HOST")
|
|
||||||
defer os.Unsetenv("HWS_TRUSTED_HOST")
|
|
||||||
|
|
||||||
config, err := hws.ConfigFromEnv()
|
|
||||||
require.NoError(t, err)
|
|
||||||
assert.Equal(t, "127.0.0.1", config.Host)
|
|
||||||
assert.Equal(t, "example.com", config.TrustedHost)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("GZIP enabled", func(t *testing.T) {
|
t.Run("GZIP enabled", func(t *testing.T) {
|
||||||
os.Setenv("HWS_GZIP", "true")
|
os.Setenv("HWS_GZIP", "true")
|
||||||
defer os.Unsetenv("HWS_GZIP")
|
defer os.Unsetenv("HWS_GZIP")
|
||||||
@@ -92,7 +77,6 @@ func Test_ConfigFromEnv(t *testing.T) {
|
|||||||
t.Run("All custom values", func(t *testing.T) {
|
t.Run("All custom values", func(t *testing.T) {
|
||||||
os.Setenv("HWS_HOST", "0.0.0.0")
|
os.Setenv("HWS_HOST", "0.0.0.0")
|
||||||
os.Setenv("HWS_PORT", "9000")
|
os.Setenv("HWS_PORT", "9000")
|
||||||
os.Setenv("HWS_TRUSTED_HOST", "myapp.com")
|
|
||||||
os.Setenv("HWS_GZIP", "true")
|
os.Setenv("HWS_GZIP", "true")
|
||||||
os.Setenv("HWS_READ_HEADER_TIMEOUT", "3")
|
os.Setenv("HWS_READ_HEADER_TIMEOUT", "3")
|
||||||
os.Setenv("HWS_WRITE_TIMEOUT", "15")
|
os.Setenv("HWS_WRITE_TIMEOUT", "15")
|
||||||
@@ -100,7 +84,6 @@ func Test_ConfigFromEnv(t *testing.T) {
|
|||||||
defer func() {
|
defer func() {
|
||||||
os.Unsetenv("HWS_HOST")
|
os.Unsetenv("HWS_HOST")
|
||||||
os.Unsetenv("HWS_PORT")
|
os.Unsetenv("HWS_PORT")
|
||||||
os.Unsetenv("HWS_TRUSTED_HOST")
|
|
||||||
os.Unsetenv("HWS_GZIP")
|
os.Unsetenv("HWS_GZIP")
|
||||||
os.Unsetenv("HWS_READ_HEADER_TIMEOUT")
|
os.Unsetenv("HWS_READ_HEADER_TIMEOUT")
|
||||||
os.Unsetenv("HWS_WRITE_TIMEOUT")
|
os.Unsetenv("HWS_WRITE_TIMEOUT")
|
||||||
@@ -111,7 +94,6 @@ func Test_ConfigFromEnv(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, "0.0.0.0", config.Host)
|
assert.Equal(t, "0.0.0.0", config.Host)
|
||||||
assert.Equal(t, uint64(9000), config.Port)
|
assert.Equal(t, uint64(9000), config.Port)
|
||||||
assert.Equal(t, "myapp.com", config.TrustedHost)
|
|
||||||
assert.Equal(t, true, config.GZIP)
|
assert.Equal(t, true, config.GZIP)
|
||||||
assert.Equal(t, 3*time.Second, config.ReadHeaderTimeout)
|
assert.Equal(t, 3*time.Second, config.ReadHeaderTimeout)
|
||||||
assert.Equal(t, 15*time.Second, config.WriteTimeout)
|
assert.Equal(t, 15*time.Second, config.WriteTimeout)
|
||||||
|
|||||||
Reference in New Issue
Block a user