[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 // NormalRoutes represents non install routes
func NormalRoutes() *web.Route { func NormalRoutes(middlewares ...any) *web.Route {
_ = templates.HTMLRenderer() _ = templates.HTMLRenderer()
r := web.NewRoute() r := web.NewRoute()
r.Use(common.ProtocolMiddlewares()...) r.Use(common.ProtocolMiddlewares()...)
r.Mount("/", web_routers.Routes()) r.Mount("/", web_routers.Routes(middlewares...))
r.Mount("/api/v1", apiv1.Routes()) r.Mount("/api/v1", apiv1.Routes())
r.Mount("/api/forgejo/v1", forgejo.Routes()) r.Mount("/api/forgejo/v1", forgejo.Routes())
r.Mount("/api/internal", private.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 // Routes returns all web routes
func Routes() *web.Route { func Routes(middlewares ...any) *web.Route {
routes := web.NewRoute() routes := web.NewRoute()
routes.Head("/", misc.DummyOK) // for health check - doesn't need to be passed through gzip handler 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, user.GetNotificationCount)
mid = append(mid, repo.GetActiveStopwatch) mid = append(mid, repo.GetActiveStopwatch)
mid = append(mid, goGet) mid = append(mid, goGet)
mid = append(mid, middlewares...)
others := web.NewRoute() others := web.NewRoute()
others.Use(mid...) others.Use(mid...)

View file

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

View file

@ -10,17 +10,16 @@ import (
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/routers"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func TestNodeinfo(t *testing.T) { func TestNodeinfo(t *testing.T) {
setting.Federation.Enabled = true setting.Federation.Enabled = true
c = routers.NormalRoutes() setNormalRoutes()
defer func() { defer func() {
setting.Federation.Enabled = false setting.Federation.Enabled = false
c = routers.NormalRoutes() setNormalRoutes()
}() }()
onGiteaRun(t, func(*testing.T, *url.URL) { 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/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/routers"
"code.gitea.io/gitea/tests" "code.gitea.io/gitea/tests"
"gitea.com/go-chi/session" "gitea.com/go-chi/session"
@ -56,7 +55,7 @@ func TestSessionFileCreation(t *testing.T) {
oldSessionConfig := setting.SessionConfig.ProviderConfig oldSessionConfig := setting.SessionConfig.ProviderConfig
defer func() { defer func() {
setting.SessionConfig.ProviderConfig = oldSessionConfig setting.SessionConfig.ProviderConfig = oldSessionConfig
c = routers.NormalRoutes() setNormalRoutes()
}() }()
var config session.Options var config session.Options
@ -75,7 +74,7 @@ func TestSessionFileCreation(t *testing.T) {
setting.SessionConfig.ProviderConfig = string(newConfigBytes) setting.SessionConfig.ProviderConfig = string(newConfigBytes)
c = routers.NormalRoutes() setNormalRoutes()
t.Run("NoSessionOnViewIssue", func(t *testing.T) { t.Run("NoSessionOnViewIssue", func(t *testing.T) {
defer tests.PrintCurrentTest(t)() defer tests.PrintCurrentTest(t)()

View file

@ -40,7 +40,19 @@ import (
"github.com/xeipuuv/gojsonschema" "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 { type NilResponseRecorder struct {
httptest.ResponseRecorder httptest.ResponseRecorder
@ -87,8 +99,7 @@ func TestMain(m *testing.M) {
defer cancel() defer cancel()
tests.InitTest(true) tests.InitTest(true)
c = routers.NormalRoutes() setNormalRoutes()
// integration test settings... // integration test settings...
if setting.CfgProvider != nil { if setting.CfgProvider != nil {
testingCfg := setting.CfgProvider.Section("integration-tests") testingCfg := setting.CfgProvider.Section("integration-tests")