port_env_test.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package config
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func TestApplyPortEnvironmentOverride(t *testing.T) {
  7. t.Setenv("PORT", "8080")
  8. cfg := DefaultConfig()
  9. cfg.ListenAddressSingleHTTPFrontend = "0.0.0.0:1337"
  10. applyPortEnvironmentOverride(cfg)
  11. assert.Equal(t, "0.0.0.0:8080", cfg.ListenAddressSingleHTTPFrontend)
  12. }
  13. func TestApplyPortEnvironmentOverridePreservesHost(t *testing.T) {
  14. t.Setenv("PORT", "9000")
  15. cfg := DefaultConfig()
  16. cfg.ListenAddressSingleHTTPFrontend = "127.0.0.1:1337"
  17. applyPortEnvironmentOverride(cfg)
  18. assert.Equal(t, "127.0.0.1:9000", cfg.ListenAddressSingleHTTPFrontend)
  19. }
  20. func TestApplyPortEnvironmentOverrideUnsetLeavesConfig(t *testing.T) {
  21. t.Setenv("PORT", "")
  22. cfg := DefaultConfig()
  23. cfg.ListenAddressSingleHTTPFrontend = "0.0.0.0:2337"
  24. applyPortEnvironmentOverride(cfg)
  25. assert.Equal(t, "0.0.0.0:2337", cfg.ListenAddressSingleHTTPFrontend)
  26. }
  27. func TestApplyPortEnvironmentOverrideIgnoresInvalid(t *testing.T) {
  28. // parseEnvPort accepts only 1..65535; port 0 and out-of-range values are ignored.
  29. cases := []struct {
  30. name string
  31. port string
  32. }{
  33. {name: "non-numeric", port: "not-a-port"},
  34. {name: "above max", port: "65536"},
  35. {name: "negative", port: "-1"},
  36. {name: "zero ignored", port: "0"},
  37. }
  38. for _, tc := range cases {
  39. t.Run(tc.name, func(t *testing.T) {
  40. t.Setenv("PORT", tc.port)
  41. cfg := DefaultConfig()
  42. cfg.ListenAddressSingleHTTPFrontend = "0.0.0.0:1337"
  43. applyPortEnvironmentOverride(cfg)
  44. assert.Equal(t, "0.0.0.0:1337", cfg.ListenAddressSingleHTTPFrontend)
  45. })
  46. }
  47. }
  48. func TestApplyPortEnvironmentOverrideEmptyListenAddressDefaultsHost(t *testing.T) {
  49. t.Setenv("PORT", "8080")
  50. cfg := DefaultConfig()
  51. cfg.ListenAddressSingleHTTPFrontend = ""
  52. applyPortEnvironmentOverride(cfg)
  53. assert.Equal(t, "0.0.0.0:8080", cfg.ListenAddressSingleHTTPFrontend)
  54. }
  55. func TestApplyPortEnvironmentOverrideRejectsMalformedListenAddress(t *testing.T) {
  56. t.Setenv("PORT", "8080")
  57. cfg := DefaultConfig()
  58. cfg.ListenAddressSingleHTTPFrontend = "not-a-valid-address"
  59. applyPortEnvironmentOverride(cfg)
  60. assert.Equal(t, "not-a-valid-address", cfg.ListenAddressSingleHTTPFrontend)
  61. }