mirror of
https://github.com/go-shiori/shiori.git
synced 2025-09-21 20:36:00 +08:00
* 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
56 lines
1.7 KiB
Go
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)
|
|
})
|
|
}
|