settings_test.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package settings
  2. import (
  3. "github.com/stretchr/testify/assert"
  4. cSettings "github.com/uozi-tech/cosy/settings"
  5. "os"
  6. "testing"
  7. )
  8. func TestSetup(t *testing.T) {
  9. _ = os.Setenv("NGINX_UI_OFFICIAL_DOCKER", "true")
  10. // Server
  11. _ = os.Setenv("NGINX_UI_SERVER_HOST", "127.0.0.1")
  12. _ = os.Setenv("NGINX_UI_SERVER_PORT", "8080")
  13. _ = os.Setenv("NGINX_UI_SERVER_RUN_MODE", "testing")
  14. // App
  15. _ = os.Setenv("NGINX_UI_APP_PAGE_SIZE", "20")
  16. _ = os.Setenv("NGINX_UI_APP_JWT_SECRET", "newSecret123")
  17. // Database
  18. _ = os.Setenv("NGINX_UI_DB_NAME", "testDB")
  19. // Auth
  20. _ = os.Setenv("NGINX_UI_AUTH_IP_WHITE_LIST", "127.0.0.1,192.168.1.1")
  21. _ = os.Setenv("NGINX_UI_AUTH_BAN_THRESHOLD_MINUTES", "20")
  22. _ = os.Setenv("NGINX_UI_AUTH_MAX_ATTEMPTS", "20")
  23. // Casdoor
  24. _ = os.Setenv("NGINX_UI_CASDOOR_ENDPOINT", "https://casdoor.example.com")
  25. _ = os.Setenv("NGINX_UI_CASDOOR_CLIENT_ID", "clientId")
  26. _ = os.Setenv("NGINX_UI_CASDOOR_CLIENT_SECRET", "clientSecret")
  27. _ = os.Setenv("NGINX_UI_CASDOOR_CERTIFICATE_PATH", "cert.pem")
  28. _ = os.Setenv("NGINX_UI_CASDOOR_ORGANIZATION", "org1")
  29. _ = os.Setenv("NGINX_UI_CASDOOR_APPLICATION", "app1")
  30. _ = os.Setenv("NGINX_UI_CASDOOR_REDIRECT_URI", "https://redirect.example.com")
  31. // Cert
  32. _ = os.Setenv("NGINX_UI_CERT_EMAIL", "test")
  33. _ = os.Setenv("NGINX_UI_CERT_CA_DIR", "/test/ca")
  34. _ = os.Setenv("NGINX_UI_CERT_RENEWAL_INTERVAL", "14")
  35. _ = os.Setenv("NGINX_UI_CERT_RECURSIVE_NAMESERVERS", "8.8.8.8,1.1.1.1")
  36. _ = os.Setenv("NGINX_UI_CERT_HTTP_CHALLENGE_PORT", "1080")
  37. // Cluster
  38. _ = os.Setenv("NGINX_UI_CLUSTER_NODE",
  39. "http://10.0.0.1:9000?name=node1&node_secret=my-node-secret&enabled=true,"+
  40. "http://10.0.0.2:9000?name=node2&node_secret=my-node-secret&enabled=false")
  41. // Crypto
  42. _ = os.Setenv("NGINX_UI_CRYPTO_SECRET", "mySecret")
  43. // Http
  44. _ = os.Setenv("NGINX_UI_HTTP_GITHUB_PROXY", "http://proxy.example.com")
  45. _ = os.Setenv("NGINX_UI_HTTP_INSECURE_SKIP_VERIFY", "true")
  46. // Logrotate
  47. _ = os.Setenv("NGINX_UI_LOGROTATE_ENABLED", "true")
  48. _ = os.Setenv("NGINX_UI_LOGROTATE_CMD", "logrotate /custom/logrotate.conf")
  49. _ = os.Setenv("NGINX_UI_LOGROTATE_INTERVAL", "60")
  50. // Nginx
  51. _ = os.Setenv("NGINX_UI_NGINX_ACCESS_LOG_PATH", "/tmp/nginx/access.log")
  52. _ = os.Setenv("NGINX_UI_NGINX_ERROR_LOG_PATH", "/tmp/nginx/error.log")
  53. _ = os.Setenv("NGINX_UI_NGINX_CONFIG_DIR", "/etc/nginx/conf")
  54. _ = os.Setenv("NGINX_UI_NGINX_PID_PATH", "/var/run/nginx.pid")
  55. _ = os.Setenv("NGINX_UI_NGINX_TEST_CONFIG_CMD", "nginx -t")
  56. _ = os.Setenv("NGINX_UI_NGINX_RELOAD_CMD", "nginx -s reload")
  57. _ = os.Setenv("NGINX_UI_NGINX_RESTART_CMD", "nginx -s restart")
  58. _ = os.Setenv("NGINX_UI_NGINX_LOG_DIR_WHITE_LIST", "/var/log/nginx")
  59. // Node
  60. _ = os.Setenv("NGINX_UI_NODE_NAME", "test")
  61. _ = os.Setenv("NGINX_UI_NODE_SECRET", "nodeSecret")
  62. _ = os.Setenv("NGINX_UI_NODE_SKIP_INSTALLATION", "true")
  63. _ = os.Setenv("NGINX_UI_NODE_DEMO", "true")
  64. // OpenAI
  65. _ = os.Setenv("NGINX_UI_OPENAI_MODEL", "gpt4o")
  66. _ = os.Setenv("NGINX_UI_OPENAI_BASE_URL", "https://api.openai.com")
  67. _ = os.Setenv("NGINX_UI_OPENAI_PROXY", "https://proxy.openai.com")
  68. _ = os.Setenv("NGINX_UI_OPENAI_TOKEN", "token123")
  69. // Terminal
  70. _ = os.Setenv("NGINX_UI_TERMINAL_START_CMD", "bash")
  71. // WebAuthn
  72. _ = os.Setenv("NGINX_UI_WEBAUTHN_RP_DISPLAY_NAME", "WebAuthn")
  73. _ = os.Setenv("NGINX_UI_WEBAUTHN_RPID", "localhost")
  74. _ = os.Setenv("NGINX_UI_WEBAUTHN_RP_ORIGINS", "http://localhost:3002")
  75. Init("../app.example.ini")
  76. // Server
  77. assert.Equal(t, "127.0.0.1", cSettings.ServerSettings.Host)
  78. assert.Equal(t, uint(8080), cSettings.ServerSettings.Port)
  79. assert.Equal(t, "testing", cSettings.ServerSettings.RunMode)
  80. // App
  81. assert.Equal(t, 20, cSettings.AppSettings.PageSize)
  82. assert.Equal(t, "newSecret123", cSettings.AppSettings.JwtSecret)
  83. // Database
  84. assert.Equal(t, "testDB", DatabaseSettings.Name)
  85. // Auth
  86. assert.Equal(t, []string{"127.0.0.1", "192.168.1.1"}, AuthSettings.IPWhiteList)
  87. assert.Equal(t, 20, AuthSettings.BanThresholdMinutes)
  88. assert.Equal(t, 20, AuthSettings.MaxAttempts)
  89. // Casdoor
  90. assert.Equal(t, "https://casdoor.example.com", CasdoorSettings.Endpoint)
  91. assert.Equal(t, "clientId", CasdoorSettings.ClientId)
  92. assert.Equal(t, "clientSecret", CasdoorSettings.ClientSecret)
  93. assert.Equal(t, "cert.pem", CasdoorSettings.CertificatePath)
  94. assert.Equal(t, "org1", CasdoorSettings.Organization)
  95. assert.Equal(t, "app1", CasdoorSettings.Application)
  96. assert.Equal(t, "https://redirect.example.com", CasdoorSettings.RedirectUri)
  97. // Cert
  98. assert.Equal(t, "test", CertSettings.Email)
  99. assert.Equal(t, "1080", CertSettings.HTTPChallengePort)
  100. assert.Equal(t, "/test/ca", CertSettings.CADir)
  101. assert.Equal(t, 14, CertSettings.RenewalInterval)
  102. assert.Equal(t, []string{"8.8.8.8", "1.1.1.1"}, CertSettings.RecursiveNameservers)
  103. // Cluster
  104. assert.Equal(t,
  105. []string{
  106. "http://10.0.0.1:9000?name=node1&node_secret=my-node-secret&enabled=true",
  107. "http://10.0.0.2:9000?name=node2&node_secret=my-node-secret&enabled=false"},
  108. ClusterSettings.Node)
  109. // Crypto
  110. assert.Equal(t, "mySecret", CryptoSettings.Secret)
  111. // Http
  112. assert.Equal(t, "http://proxy.example.com", HTTPSettings.GithubProxy)
  113. assert.Equal(t, true, HTTPSettings.InsecureSkipVerify)
  114. // Logrotate
  115. assert.Equal(t, true, LogrotateSettings.Enabled)
  116. assert.Equal(t, "logrotate /custom/logrotate.conf", LogrotateSettings.CMD)
  117. assert.Equal(t, 60, LogrotateSettings.Interval)
  118. // Nginx
  119. assert.Equal(t, "/tmp/nginx/access.log", NginxSettings.AccessLogPath)
  120. assert.Equal(t, "/tmp/nginx/error.log", NginxSettings.ErrorLogPath)
  121. assert.Equal(t, "/etc/nginx/conf", NginxSettings.ConfigDir)
  122. assert.Equal(t, "/var/run/nginx.pid", NginxSettings.PIDPath)
  123. assert.Equal(t, "nginx -t", NginxSettings.TestConfigCmd)
  124. assert.Equal(t, "nginx -s reload", NginxSettings.ReloadCmd)
  125. assert.Equal(t, "nginx -s stop", NginxSettings.RestartCmd)
  126. assert.Equal(t, []string{"/var/log/nginx"}, NginxSettings.LogDirWhiteList)
  127. // Node
  128. assert.Equal(t, "test", NodeSettings.Name)
  129. assert.Equal(t, "nodeSecret", NodeSettings.Secret)
  130. assert.Equal(t, true, NodeSettings.SkipInstallation)
  131. assert.Equal(t, true, NodeSettings.Demo)
  132. // OpenAI
  133. assert.Equal(t, "gpt4o", OpenAISettings.Model)
  134. assert.Equal(t, "https://api.openai.com", OpenAISettings.BaseUrl)
  135. assert.Equal(t, "https://proxy.openai.com", OpenAISettings.Proxy)
  136. assert.Equal(t, "token123", OpenAISettings.Token)
  137. // Terminal
  138. assert.Equal(t, "bash", TerminalSettings.StartCmd)
  139. // WebAuthn
  140. assert.Equal(t, "WebAuthn", WebAuthnSettings.RPDisplayName)
  141. assert.Equal(t, "localhost", WebAuthnSettings.RPID)
  142. assert.Equal(t, []string{"http://localhost:3002"}, WebAuthnSettings.RPOrigins)
  143. os.Clearenv()
  144. }