config_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package config
  2. import (
  3. "os"
  4. "testing"
  5. )
  6. func TestGetPortOverride(t *testing.T) {
  7. tests := []struct {
  8. name string
  9. value string
  10. set bool
  11. wantPort int
  12. configured bool
  13. wantErr bool
  14. }{
  15. {name: "unset"},
  16. {name: "empty", value: "", set: true},
  17. {name: "whitespace", value: " ", set: true},
  18. {name: "minimum", value: "1", set: true, wantPort: 1, configured: true},
  19. {name: "default panel port", value: "2053", set: true, wantPort: 2053, configured: true},
  20. {name: "surrounding whitespace", value: " 8080 ", set: true, wantPort: 8080, configured: true},
  21. {name: "maximum", value: "65535", set: true, wantPort: 65535, configured: true},
  22. {name: "zero", value: "0", set: true, configured: true, wantErr: true},
  23. {name: "above maximum", value: "65536", set: true, configured: true, wantErr: true},
  24. {name: "negative", value: "-1", set: true, configured: true, wantErr: true},
  25. {name: "non-numeric", value: "abc", set: true, configured: true, wantErr: true},
  26. {name: "decimal", value: "8080.0", set: true, configured: true, wantErr: true},
  27. }
  28. for _, tt := range tests {
  29. t.Run(tt.name, func(t *testing.T) {
  30. if tt.set {
  31. t.Setenv("XUI_PORT", tt.value)
  32. } else {
  33. original, existed := os.LookupEnv("XUI_PORT")
  34. if err := os.Unsetenv("XUI_PORT"); err != nil {
  35. t.Fatalf("unset XUI_PORT: %v", err)
  36. }
  37. t.Cleanup(func() {
  38. if existed {
  39. _ = os.Setenv("XUI_PORT", original)
  40. } else {
  41. _ = os.Unsetenv("XUI_PORT")
  42. }
  43. })
  44. }
  45. port, configured, err := GetPortOverride()
  46. if port != tt.wantPort {
  47. t.Errorf("port = %d, want %d", port, tt.wantPort)
  48. }
  49. if configured != tt.configured {
  50. t.Errorf("configured = %t, want %t", configured, tt.configured)
  51. }
  52. if (err != nil) != tt.wantErr {
  53. t.Errorf("error = %v, wantErr %t", err, tt.wantErr)
  54. }
  55. })
  56. }
  57. }