1
0

setting_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package controller
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "strings"
  6. "testing"
  7. "github.com/gin-gonic/gin"
  8. )
  9. func TestValidateRegex(t *testing.T) {
  10. gin.SetMode(gin.TestMode)
  11. router := gin.New()
  12. NewSettingController(router.Group("/panel/api"))
  13. tests := []struct {
  14. name string
  15. body string
  16. success bool
  17. }{
  18. {name: "Go RE2 inline flag", body: `{"regex":"(?m)^general-purpose$"}`, success: true},
  19. {name: "invalid expression", body: `{"regex":"["}`, success: false},
  20. }
  21. for _, tt := range tests {
  22. t.Run(tt.name, func(t *testing.T) {
  23. req := httptest.NewRequest(http.MethodPost, "/panel/api/setting/validateRegex", strings.NewReader(tt.body))
  24. req.Header.Set("Content-Type", "application/json")
  25. resp := httptest.NewRecorder()
  26. router.ServeHTTP(resp, req)
  27. if resp.Code != http.StatusOK {
  28. t.Fatalf("status = %d, want 200; body=%s", resp.Code, resp.Body.String())
  29. }
  30. needle := `"success":true`
  31. if !tt.success {
  32. needle = `"success":false`
  33. }
  34. if !strings.Contains(resp.Body.String(), needle) {
  35. t.Fatalf("body = %s, want %s", resp.Body.String(), needle)
  36. }
  37. })
  38. }
  39. }