shiori/internal/http/routes/api/v1/system_test.go
Felipe Martin 72aecd2b60
feat: new system info panel in webui settings (#926)
* frontend

* fixed Database.DBx return value

* api endpoint

* updated swagger

* fix openbsd variable dereference

* tests

* only load information if user is owner

* memory improvement for other routes
2024-06-08 17:48:55 +02:00

56 lines
1.7 KiB
Go

package api_v1
import (
"context"
"net/http"
"testing"
"github.com/go-shiori/shiori/internal/testutil"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
)
func TestSystemRoute(t *testing.T) {
logger := logrus.New()
ctx := context.TODO()
t.Run("valid response", func(t *testing.T) {
g := testutil.NewGin()
g.Use(testutil.FakeAdminLoggedInMiddlewware)
_, deps := testutil.GetTestConfigurationAndDependencies(t, ctx, logger)
router := NewSystemAPIRoutes(logger, deps)
router.Setup(g.Group("/"))
w := testutil.PerformRequest(g, http.MethodGet, "/info")
response, err := testutil.NewTestResponseFromReader(w.Body)
require.NoError(t, err)
response.AssertOk(t)
})
t.Run("requires authentication", func(t *testing.T) {
g := testutil.NewGin()
_, deps := testutil.GetTestConfigurationAndDependencies(t, ctx, logger)
router := NewSystemAPIRoutes(logger, deps)
router.Setup(g.Group("/"))
w := testutil.PerformRequest(g, http.MethodGet, "/info")
response, err := testutil.NewTestResponseFromReader(w.Body)
require.NoError(t, err)
response.AssertNotOk(t)
require.Equal(t, http.StatusUnauthorized, w.Result().StatusCode)
})
t.Run("requires admin", func(t *testing.T) {
g := testutil.NewGin()
g.Use(testutil.FakeUserLoggedInMiddlewware)
_, deps := testutil.GetTestConfigurationAndDependencies(t, ctx, logger)
router := NewSystemAPIRoutes(logger, deps)
router.Setup(g.Group("/"))
w := testutil.PerformRequest(g, http.MethodGet, "/info")
response, err := testutil.NewTestResponseFromReader(w.Body)
require.NoError(t, err)
response.AssertNotOk(t)
require.Equal(t, http.StatusForbidden, w.Result().StatusCode)
})
}