requestparser_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package internal
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "strings"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/zeromicro/go-zero/rest/pathvar"
  9. )
  10. func TestNewRequestParserNoVar(t *testing.T) {
  11. req := httptest.NewRequest("GET", "/", http.NoBody)
  12. parser, err := NewRequestParser(req, nil)
  13. assert.Nil(t, err)
  14. assert.NotNil(t, parser)
  15. }
  16. func TestNewRequestParserWithVars(t *testing.T) {
  17. req := httptest.NewRequest("GET", "/", http.NoBody)
  18. req = pathvar.WithVars(req, map[string]string{"a": "b"})
  19. parser, err := NewRequestParser(req, nil)
  20. assert.Nil(t, err)
  21. assert.NotNil(t, parser)
  22. }
  23. func TestNewRequestParserNoVarWithBody(t *testing.T) {
  24. req := httptest.NewRequest("GET", "/", strings.NewReader(`{"a": "b"}`))
  25. parser, err := NewRequestParser(req, nil)
  26. assert.Nil(t, err)
  27. assert.NotNil(t, parser)
  28. }
  29. func TestNewRequestParserWithVarsWithBody(t *testing.T) {
  30. req := httptest.NewRequest("GET", "/", strings.NewReader(`{"a": "b"}`))
  31. req = pathvar.WithVars(req, map[string]string{"c": "d"})
  32. parser, err := NewRequestParser(req, nil)
  33. assert.Nil(t, err)
  34. assert.NotNil(t, parser)
  35. }
  36. func TestNewRequestParserWithVarsWithWrongBody(t *testing.T) {
  37. req := httptest.NewRequest("GET", "/", strings.NewReader(`{"a": "b"`))
  38. req = pathvar.WithVars(req, map[string]string{"c": "d"})
  39. parser, err := NewRequestParser(req, nil)
  40. assert.NotNil(t, err)
  41. assert.Nil(t, parser)
  42. }
  43. func TestNewRequestParserWithForm(t *testing.T) {
  44. req := httptest.NewRequest("GET", "/val?a=b", http.NoBody)
  45. parser, err := NewRequestParser(req, nil)
  46. assert.Nil(t, err)
  47. assert.NotNil(t, parser)
  48. }
  49. func TestNewRequestParserWithBadForm(t *testing.T) {
  50. req := httptest.NewRequest("GET", "/val?a%1=b", http.NoBody)
  51. parser, err := NewRequestParser(req, nil)
  52. assert.NotNil(t, err)
  53. assert.Nil(t, parser)
  54. }
  55. func TestRequestParser_buildJsonRequestParser(t *testing.T) {
  56. parser, err := buildJsonRequestParser(map[string]interface{}{"a": make(chan int)}, nil)
  57. assert.NotNil(t, err)
  58. assert.Nil(t, parser)
  59. }