75 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
|  | package core_test | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"net/http" | ||
|  | 	"strings" | ||
|  | 	"testing" | ||
|  | 
 | ||
|  | 	"github.com/pocketbase/pocketbase/core" | ||
|  | 	"github.com/pocketbase/pocketbase/tests" | ||
|  | ) | ||
|  | 
 | ||
|  | func TestInternalRequestValidate(t *testing.T) { | ||
|  | 	scenarios := []struct { | ||
|  | 		name           string | ||
|  | 		request        core.InternalRequest | ||
|  | 		expectedErrors []string | ||
|  | 	}{ | ||
|  | 		{ | ||
|  | 			"empty struct", | ||
|  | 			core.InternalRequest{}, | ||
|  | 			[]string{"method", "url"}, | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		// method
 | ||
|  | 		{ | ||
|  | 			"GET method", | ||
|  | 			core.InternalRequest{URL: "test", Method: http.MethodGet}, | ||
|  | 			[]string{}, | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			"POST method", | ||
|  | 			core.InternalRequest{URL: "test", Method: http.MethodPost}, | ||
|  | 			[]string{}, | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			"PUT method", | ||
|  | 			core.InternalRequest{URL: "test", Method: http.MethodPut}, | ||
|  | 			[]string{}, | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			"PATCH method", | ||
|  | 			core.InternalRequest{URL: "test", Method: http.MethodPatch}, | ||
|  | 			[]string{}, | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			"DELETE method", | ||
|  | 			core.InternalRequest{URL: "test", Method: http.MethodDelete}, | ||
|  | 			[]string{}, | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			"unknown method", | ||
|  | 			core.InternalRequest{URL: "test", Method: "unknown"}, | ||
|  | 			[]string{"method"}, | ||
|  | 		}, | ||
|  | 
 | ||
|  | 		// url
 | ||
|  | 		{ | ||
|  | 			"url <= 2000", | ||
|  | 			core.InternalRequest{URL: strings.Repeat("a", 2000), Method: http.MethodGet}, | ||
|  | 			[]string{}, | ||
|  | 		}, | ||
|  | 		{ | ||
|  | 			"url > 2000", | ||
|  | 			core.InternalRequest{URL: strings.Repeat("a", 2001), Method: http.MethodGet}, | ||
|  | 			[]string{"url"}, | ||
|  | 		}, | ||
|  | 	} | ||
|  | 
 | ||
|  | 	for _, s := range scenarios { | ||
|  | 		t.Run(s.name, func(t *testing.T) { | ||
|  | 			tests.TestValidationErrors(t, s.request.Validate(), s.expectedErrors) | ||
|  | 		}) | ||
|  | 	} | ||
|  | } |