[TESTS] testMiddlewareHook, dependency injection in integration tests

(cherry picked from commit 6623630d10)
(cherry picked from commit 5e30a4f950)
(cherry picked from commit 355a117e74)
(cherry picked from commit 2e98ceccbc)
(cherry picked from commit e1687f1e20)
This commit is contained in:
Earl Warren 2023-06-05 11:04:47 +02:00
parent cf7c08031f
commit 2b97800dd8
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
6 changed files with 32 additions and 18 deletions

View file

@ -14,6 +14,10 @@ import (
chi "github.com/go-chi/chi/v5"
)
type KeyTestMiddlewareHookType string
var KeyTestMiddlewareHook = KeyTestMiddlewareHookType("testMiddlewareHook")
// Bind binding an obj to a handler
func Bind[T any](_ T) any {
return func(ctx *context.Context) {

View file

@ -167,6 +167,10 @@ func Routes(ctx gocontext.Context) *web.Route {
mid = append(mid, user.GetNotificationCount)
mid = append(mid, repo.GetActiveStopwatch)
mid = append(mid, goGet)
middlewareHook := ctx.Value(web.KeyTestMiddlewareHook)
if middlewareHook != nil {
mid = append(mid, middlewareHook)
}
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(context.TODO())
setNormalRoutes()
defer func() {
setting.Federation.Enabled = false
c = routers.NormalRoutes(context.TODO())
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(context.TODO())
setNormalRoutes()
defer func() {
setting.Federation.Enabled = false
c = routers.NormalRoutes(context.TODO())
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(context.TODO())
setNormalRoutes()
defer func() {
setting.Federation.Enabled = false
c = routers.NormalRoutes(context.TODO())
setNormalRoutes()
}()
srv := httptest.NewServer(c)

View file

@ -4,24 +4,22 @@
package integration
import (
"context"
"net/http"
"net/url"
"testing"
"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(context.TODO())
setNormalRoutes()
defer func() {
setting.Federation.Enabled = false
c = routers.NormalRoutes(context.TODO())
setNormalRoutes()
}()
onGiteaRun(t, func(*testing.T, *url.URL) {

View file

@ -4,7 +4,6 @@
package integration
import (
"context"
"net/http"
"net/http/httptest"
"os"
@ -13,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"
@ -57,7 +55,7 @@ func TestSessionFileCreation(t *testing.T) {
oldSessionConfig := setting.SessionConfig.ProviderConfig
defer func() {
setting.SessionConfig.ProviderConfig = oldSessionConfig
c = routers.NormalRoutes(context.TODO())
setNormalRoutes()
}()
var config session.Options
@ -76,7 +74,7 @@ func TestSessionFileCreation(t *testing.T) {
setting.SessionConfig.ProviderConfig = string(newConfigBytes)
c = routers.NormalRoutes(context.TODO())
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(context.WithValue(context.Background(), web.KeyTestMiddlewareHook, middlewareHook))
}
type NilResponseRecorder struct {
httptest.ResponseRecorder
@ -87,8 +99,7 @@ func TestMain(m *testing.M) {
defer cancel()
tests.InitTest(true)
c = routers.NormalRoutes(context.TODO())
setNormalRoutes()
// integration test settings...
if setting.CfgProvider != nil {
testingCfg := setting.CfgProvider.Section("integration-tests")