|
|
|
package internal
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
"net/http/httptest"
|
|
|
|
"strings"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/zeromicro/go-zero/rest/pathvar"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestNewRequestParserNoVar(t *testing.T) {
|
|
|
|
req := httptest.NewRequest("GET", "/", http.NoBody)
|
|
|
|
parser, err := NewRequestParser(req, nil)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.NotNil(t, parser)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewRequestParserWithVars(t *testing.T) {
|
|
|
|
req := httptest.NewRequest("GET", "/", http.NoBody)
|
|
|
|
req = pathvar.WithVars(req, map[string]string{"a": "b"})
|
|
|
|
parser, err := NewRequestParser(req, nil)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.NotNil(t, parser)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewRequestParserNoVarWithBody(t *testing.T) {
|
|
|
|
req := httptest.NewRequest("GET", "/", strings.NewReader(`{"a": "b"}`))
|
|
|
|
parser, err := NewRequestParser(req, nil)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.NotNil(t, parser)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewRequestParserWithVarsWithBody(t *testing.T) {
|
|
|
|
req := httptest.NewRequest("GET", "/", strings.NewReader(`{"a": "b"}`))
|
|
|
|
req = pathvar.WithVars(req, map[string]string{"c": "d"})
|
|
|
|
parser, err := NewRequestParser(req, nil)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.NotNil(t, parser)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewRequestParserWithVarsWithWrongBody(t *testing.T) {
|
|
|
|
req := httptest.NewRequest("GET", "/", strings.NewReader(`{"a": "b"`))
|
|
|
|
req = pathvar.WithVars(req, map[string]string{"c": "d"})
|
|
|
|
parser, err := NewRequestParser(req, nil)
|
|
|
|
assert.NotNil(t, err)
|
|
|
|
assert.Nil(t, parser)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewRequestParserWithForm(t *testing.T) {
|
|
|
|
req := httptest.NewRequest("GET", "/val?a=b", http.NoBody)
|
|
|
|
parser, err := NewRequestParser(req, nil)
|
|
|
|
assert.Nil(t, err)
|
|
|
|
assert.NotNil(t, parser)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewRequestParserWithBadForm(t *testing.T) {
|
|
|
|
req := httptest.NewRequest("GET", "/val?a%1=b", http.NoBody)
|
|
|
|
parser, err := NewRequestParser(req, nil)
|
|
|
|
assert.NotNil(t, err)
|
|
|
|
assert.Nil(t, parser)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRequestParser_buildJsonRequestParser(t *testing.T) {
|
|
|
|
parser, err := buildJsonRequestParser(map[string]interface{}{"a": make(chan int)}, nil)
|
|
|
|
assert.NotNil(t, err)
|
|
|
|
assert.Nil(t, parser)
|
|
|
|
}
|