[TESTS] testMiddlewareHook, dependency injection in integration tests

(cherry picked from commit 6623630d10)
(cherry picked from commit d30b9dc5b4)
(cherry picked from commit 8e790a65ba)
(cherry picked from commit 9d98ba7e5c)
(cherry picked from commit 07fc55a3a7)
(cherry picked from commit f9d054d17f)
This commit is contained in:
Earl Warren 2023-06-05 11:04:47 +02:00
parent 61a3cf77df
commit c7dc1e1c7f
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
6 changed files with 28 additions and 19 deletions

View file

@ -169,12 +169,12 @@ func InitWebInstalled(ctx context.Context) {
}
// NormalRoutes represents non install routes
func NormalRoutes() *web.Route {
func NormalRoutes(middlewares ...any) *web.Route {
_ = templates.HTMLRenderer()
r := web.NewRoute()
r.Use(common.ProtocolMiddlewares()...)
r.Mount("/", web_routers.Routes())
r.Mount("/", web_routers.Routes(middlewares...))
r.Mount("/api/v1", apiv1.Routes())
r.Mount("/api/forgejo/v1", forgejo.Routes())
r.Mount("/api/internal", private.Routes())

View file

@ -104,7 +104,7 @@ func ctxDataSet(args ...any) func(ctx *context.Context) {
}
// Routes returns all web routes
func Routes() *web.Route {
func Routes(middlewares ...any) *web.Route {
routes := web.NewRoute()
routes.Head("/", misc.DummyOK) // for health check - doesn't need to be passed through gzip handler
@ -159,6 +159,7 @@ func Routes() *web.Route {
mid = append(mid, user.GetNotificationCount)
mid = append(mid, repo.GetActiveStopwatch)
mid = append(mid, goGet)
mid = append(mid, middlewares...)
others := web.NewRoute()
others.Use(mid...)

View file

@ -14,7 +14,6 @@ import (
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/activitypub"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/routers"
ap "github.com/go-ap/activitypub"
"github.com/stretchr/testify/assert"
@ -22,10 +21,10 @@ import (
func TestActivityPubPerson(t *testing.T) {
setting.Federation.Enabled = true
c = routers.NormalRoutes()
setNormalRoutes()
defer func() {
setting.Federation.Enabled = false
c = routers.NormalRoutes()
setNormalRoutes()
}()
onGiteaRun(t, func(*testing.T, *url.URL) {
@ -60,10 +59,10 @@ func TestActivityPubPerson(t *testing.T) {
func TestActivityPubMissingPerson(t *testing.T) {
setting.Federation.Enabled = true
c = routers.NormalRoutes()
setNormalRoutes()
defer func() {
setting.Federation.Enabled = false
c = routers.NormalRoutes()
setNormalRoutes()
}()
onGiteaRun(t, func(*testing.T, *url.URL) {
@ -75,10 +74,10 @@ func TestActivityPubMissingPerson(t *testing.T) {
func TestActivityPubPersonInbox(t *testing.T) {
setting.Federation.Enabled = true
c = routers.NormalRoutes()
setNormalRoutes()
defer func() {
setting.Federation.Enabled = false
c = routers.NormalRoutes()
setNormalRoutes()
}()
srv := httptest.NewServer(c)

View file

@ -10,17 +10,16 @@ import (
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/routers"
"github.com/stretchr/testify/assert"
)
func TestNodeinfo(t *testing.T) {
setting.Federation.Enabled = true
c = routers.NormalRoutes()
setNormalRoutes()
defer func() {
setting.Federation.Enabled = false
c = routers.NormalRoutes()
setNormalRoutes()
}()
onGiteaRun(t, func(*testing.T, *url.URL) {

View file

@ -12,7 +12,6 @@ import (
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/routers"
"code.gitea.io/gitea/tests"
"gitea.com/go-chi/session"
@ -56,7 +55,7 @@ func TestSessionFileCreation(t *testing.T) {
oldSessionConfig := setting.SessionConfig.ProviderConfig
defer func() {
setting.SessionConfig.ProviderConfig = oldSessionConfig
c = routers.NormalRoutes()
setNormalRoutes()
}()
var config session.Options
@ -75,7 +74,7 @@ func TestSessionFileCreation(t *testing.T) {
setting.SessionConfig.ProviderConfig = string(newConfigBytes)
c = routers.NormalRoutes()
setNormalRoutes()
t.Run("NoSessionOnViewIssue", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()

View file

@ -40,7 +40,19 @@ import (
"github.com/xeipuuv/gojsonschema"
)
var c *web.Route
var (
c *web.Route
testMiddlewareHook func(*gitea_context.Context)
)
func setNormalRoutes() {
middlewareHook := func(ctx *gitea_context.Context) {
if testMiddlewareHook != nil {
testMiddlewareHook(ctx)
}
}
c = routers.NormalRoutes(middlewareHook)
}
type NilResponseRecorder struct {
httptest.ResponseRecorder
@ -87,8 +99,7 @@ func TestMain(m *testing.M) {
defer cancel()
tests.InitTest(true)
c = routers.NormalRoutes()
setNormalRoutes()
// integration test settings...
if setting.CfgProvider != nil {
testingCfg := setting.CfgProvider.Section("integration-tests")