mirror of
https://github.com/pocketbase/pocketbase.git
synced 2024-11-28 18:11:17 +02:00
123 lines
3.0 KiB
Go
123 lines
3.0 KiB
Go
package apis_test
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/labstack/echo/v5"
|
|
"github.com/pocketbase/pocketbase/tests"
|
|
"github.com/pocketbase/pocketbase/tools/rest"
|
|
)
|
|
|
|
func Test404(t *testing.T) {
|
|
scenarios := []tests.ApiScenario{
|
|
{
|
|
Method: http.MethodGet,
|
|
Url: "/api/missing",
|
|
ExpectedStatus: 404,
|
|
ExpectedContent: []string{`"data":{}`},
|
|
},
|
|
{
|
|
Method: http.MethodPost,
|
|
Url: "/api/missing",
|
|
ExpectedStatus: 404,
|
|
ExpectedContent: []string{`"data":{}`},
|
|
},
|
|
{
|
|
Method: http.MethodPatch,
|
|
Url: "/api/missing",
|
|
ExpectedStatus: 404,
|
|
ExpectedContent: []string{`"data":{}`},
|
|
},
|
|
{
|
|
Method: http.MethodDelete,
|
|
Url: "/api/missing",
|
|
ExpectedStatus: 404,
|
|
ExpectedContent: []string{`"data":{}`},
|
|
},
|
|
{
|
|
Method: http.MethodHead,
|
|
Url: "/api/missing",
|
|
ExpectedStatus: 404,
|
|
},
|
|
}
|
|
|
|
for _, scenario := range scenarios {
|
|
scenario.Test(t)
|
|
}
|
|
}
|
|
|
|
func TestCustomRoutesAndErrorsHandling(t *testing.T) {
|
|
scenarios := []tests.ApiScenario{
|
|
{
|
|
Name: "custom route",
|
|
Method: http.MethodGet,
|
|
Url: "/custom",
|
|
BeforeFunc: func(t *testing.T, app *tests.TestApp, e *echo.Echo) {
|
|
e.AddRoute(echo.Route{
|
|
Method: http.MethodGet,
|
|
Path: "/custom",
|
|
Handler: func(c echo.Context) error {
|
|
return c.String(200, "test123")
|
|
},
|
|
})
|
|
},
|
|
ExpectedStatus: 200,
|
|
ExpectedContent: []string{"test123"},
|
|
},
|
|
{
|
|
Name: "route with HTTPError",
|
|
Method: http.MethodGet,
|
|
Url: "/http-error",
|
|
BeforeFunc: func(t *testing.T, app *tests.TestApp, e *echo.Echo) {
|
|
e.AddRoute(echo.Route{
|
|
Method: http.MethodGet,
|
|
Path: "/http-error",
|
|
Handler: func(c echo.Context) error {
|
|
return echo.ErrBadRequest
|
|
},
|
|
})
|
|
},
|
|
ExpectedStatus: 400,
|
|
ExpectedContent: []string{`{"code":400,"message":"Bad Request.","data":{}}`},
|
|
},
|
|
{
|
|
Name: "route with api error",
|
|
Method: http.MethodGet,
|
|
Url: "/api-error",
|
|
BeforeFunc: func(t *testing.T, app *tests.TestApp, e *echo.Echo) {
|
|
e.AddRoute(echo.Route{
|
|
Method: http.MethodGet,
|
|
Path: "/api-error",
|
|
Handler: func(c echo.Context) error {
|
|
return rest.NewApiError(500, "test message", errors.New("internal_test"))
|
|
},
|
|
})
|
|
},
|
|
ExpectedStatus: 500,
|
|
ExpectedContent: []string{`{"code":500,"message":"Test message.","data":{}}`},
|
|
},
|
|
{
|
|
Name: "route with plain error",
|
|
Method: http.MethodGet,
|
|
Url: "/plain-error",
|
|
BeforeFunc: func(t *testing.T, app *tests.TestApp, e *echo.Echo) {
|
|
e.AddRoute(echo.Route{
|
|
Method: http.MethodGet,
|
|
Path: "/plain-error",
|
|
Handler: func(c echo.Context) error {
|
|
return errors.New("Test error")
|
|
},
|
|
})
|
|
},
|
|
ExpectedStatus: 400,
|
|
ExpectedContent: []string{`{"code":400,"message":"Something went wrong while processing your request.","data":{}}`},
|
|
},
|
|
}
|
|
|
|
for _, scenario := range scenarios {
|
|
scenario.Test(t)
|
|
}
|
|
}
|