1
0

nginx_conf_test.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package self_check
  2. import (
  3. "errors"
  4. "os"
  5. "strings"
  6. "testing"
  7. "github.com/0xJacky/Nginx-UI/settings"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/uozi-tech/cosy"
  10. "github.com/uozi-tech/cosy/logger"
  11. )
  12. func TestCheckNginxConfIncludeSites(t *testing.T) {
  13. // test ok
  14. logger.Init("debug")
  15. settings.NginxSettings.ConfigDir = "/etc/nginx"
  16. settings.NginxSettings.ConfigPath = "./test_cases/ok.conf"
  17. var result *cosy.Error
  18. errors.As(CheckNginxConfIncludeSites(), &result)
  19. assert.Nil(t, result)
  20. // test 4041 nginx.conf not found
  21. settings.NginxSettings.ConfigDir = "/etc/nginx"
  22. settings.NginxSettings.ConfigPath = "./test_cases/4041.conf"
  23. errors.As(CheckNginxConfIncludeSites(), &result)
  24. assert.Equal(t, int32(4041), result.Code)
  25. // test 5001 nginx.conf parse error
  26. settings.NginxSettings.ConfigDir = "/etc/nginx"
  27. settings.NginxSettings.ConfigPath = "./test_cases/5001.conf"
  28. errors.As(CheckNginxConfIncludeSites(), &result)
  29. assert.Equal(t, int32(5001), result.Code)
  30. // test 4042 nginx.conf no http block
  31. settings.NginxSettings.ConfigDir = "/etc/nginx"
  32. settings.NginxSettings.ConfigPath = "./test_cases/no-http-block.conf"
  33. errors.As(CheckNginxConfIncludeSites(), &result)
  34. assert.Equal(t, int32(4042), result.Code)
  35. // test 4043 nginx.conf not include sites-enabled
  36. settings.NginxSettings.ConfigDir = "/etc/nginx"
  37. settings.NginxSettings.ConfigPath = "./test_cases/no-http-sites-enabled.conf"
  38. errors.As(CheckNginxConfIncludeSites(), &result)
  39. assert.Equal(t, int32(4043), result.Code)
  40. }
  41. func TestCheckNginxConfIncludeStreams(t *testing.T) {
  42. // test ok
  43. logger.Init("debug")
  44. settings.NginxSettings.ConfigDir = "/etc/nginx"
  45. settings.NginxSettings.ConfigPath = "./test_cases/ok.conf"
  46. var result *cosy.Error
  47. errors.As(CheckNginxConfIncludeStreams(), &result)
  48. assert.Nil(t, result)
  49. // test 4041 nginx.conf not found
  50. settings.NginxSettings.ConfigDir = "/etc/nginx"
  51. settings.NginxSettings.ConfigPath = "./test_cases/4041.conf"
  52. errors.As(CheckNginxConfIncludeStreams(), &result)
  53. assert.Equal(t, int32(4041), result.Code)
  54. // test 5001 nginx.conf parse error
  55. settings.NginxSettings.ConfigDir = "/etc/nginx"
  56. settings.NginxSettings.ConfigPath = "./test_cases/5001.conf"
  57. errors.As(CheckNginxConfIncludeStreams(), &result)
  58. assert.Equal(t, int32(5001), result.Code)
  59. // test 4044 nginx.conf no stream block
  60. settings.NginxSettings.ConfigDir = "/etc/nginx"
  61. settings.NginxSettings.ConfigPath = "./test_cases/no-http-block.conf"
  62. errors.As(CheckNginxConfIncludeStreams(), &result)
  63. assert.Equal(t, int32(4044), result.Code)
  64. // test 4045 nginx.conf not include stream-enabled
  65. settings.NginxSettings.ConfigDir = "/etc/nginx"
  66. settings.NginxSettings.ConfigPath = "./test_cases/no-http-sites-enabled.conf"
  67. errors.As(CheckNginxConfIncludeStreams(), &result)
  68. assert.Equal(t, int32(4045), result.Code)
  69. }
  70. func TestFixNginxConfIncludeSites(t *testing.T) {
  71. logger.Init("debug")
  72. settings.NginxSettings.ConfigDir = "/etc/nginx"
  73. // copy file
  74. content, err := os.ReadFile("./test_cases/no-http-block.conf")
  75. assert.Nil(t, err)
  76. err = os.WriteFile("./test_cases/no-http-block-fixed.conf", content, 0644)
  77. assert.Nil(t, err)
  78. settings.NginxSettings.ConfigPath = "./test_cases/no-http-block-fixed.conf"
  79. var result *cosy.Error
  80. errors.As(FixNginxConfIncludeSites(), &result)
  81. assert.Nil(t, result)
  82. // copy file
  83. content, err = os.ReadFile("./test_cases/no-http-sites-enabled.conf")
  84. assert.Nil(t, err)
  85. err = os.WriteFile("./test_cases/no-http-sites-enabled-fixed.conf", content, 0644)
  86. assert.Nil(t, err)
  87. settings.NginxSettings.ConfigPath = "./test_cases/no-http-sites-enabled-fixed.conf"
  88. errors.As(FixNginxConfIncludeSites(), &result)
  89. assert.Nil(t, result)
  90. settings.NginxSettings.ConfigPath = "./test_cases/no-http-sites-enabled-fixed.conf"
  91. errors.As(FixNginxConfIncludeStreams(), &result)
  92. assert.Nil(t, result)
  93. // remove backup files (./test_cases/*.bak.*)
  94. files, err := os.ReadDir("./test_cases")
  95. assert.Nil(t, err)
  96. for _, file := range files {
  97. if strings.Contains(file.Name(), ".bak.") {
  98. err = os.Remove("./test_cases/" + file.Name())
  99. assert.Nil(t, err)
  100. }
  101. }
  102. }