diff options
Diffstat (limited to 'internal/route')
-rw-r--r-- | internal/route/api/v1/api.go | 2 | ||||
-rw-r--r-- | internal/route/lfs/route.go | 2 | ||||
-rw-r--r-- | internal/route/lfs/route_test.go | 24 | ||||
-rw-r--r-- | internal/route/repo/http.go | 2 |
4 files changed, 19 insertions, 11 deletions
diff --git a/internal/route/api/v1/api.go b/internal/route/api/v1/api.go index 62c933ad..9d256e3e 100644 --- a/internal/route/api/v1/api.go +++ b/internal/route/api/v1/api.go @@ -57,7 +57,7 @@ func repoAssignment() macaron.Handler { if c.IsTokenAuth && c.User.IsAdmin { c.Repo.AccessMode = db.AccessModeOwner } else { - c.Repo.AccessMode = db.Perms.AccessMode(c.UserID(), repo.ID, + c.Repo.AccessMode = db.Perms.AccessMode(c.Req.Context(), c.UserID(), repo.ID, db.AccessModeOptions{ OwnerID: repo.OwnerID, Private: repo.IsPrivate, diff --git a/internal/route/lfs/route.go b/internal/route/lfs/route.go index 23ece92b..f5195837 100644 --- a/internal/route/lfs/route.go +++ b/internal/route/lfs/route.go @@ -130,7 +130,7 @@ func authorize(mode db.AccessMode) macaron.Handler { return } - if !db.Perms.Authorize(actor.ID, repo.ID, mode, + if !db.Perms.Authorize(c.Req.Context(), actor.ID, repo.ID, mode, db.AccessModeOptions{ OwnerID: repo.OwnerID, Private: repo.IsPrivate, diff --git a/internal/route/lfs/route_test.go b/internal/route/lfs/route_test.go index a07121cc..57d0728f 100644 --- a/internal/route/lfs/route_test.go +++ b/internal/route/lfs/route_test.go @@ -5,6 +5,7 @@ package lfs import ( + "context" "fmt" "io/ioutil" "net/http" @@ -166,7 +167,7 @@ func Test_authorize(t *testing.T) { authroize macaron.Handler mockUsersStore *db.MockUsersStore mockReposStore *db.MockReposStore - mockPermsStore *db.MockPermsStore + mockPermsStore func() db.PermsStore expStatusCode int expBody string }{ @@ -208,10 +209,12 @@ func Test_authorize(t *testing.T) { return &db.Repository{Name: name}, nil }, }, - mockPermsStore: &db.MockPermsStore{ - MockAuthorize: func(userID, repoID int64, desired db.AccessMode, opts db.AccessModeOptions) bool { + mockPermsStore: func() db.PermsStore { + mock := db.NewMockPermsStore() + mock.AuthorizeFunc.SetDefaultHook(func(ctx context.Context, userID int64, repoID int64, desired db.AccessMode, opts db.AccessModeOptions) bool { return desired <= db.AccessModeRead - }, + }) + return mock }, expStatusCode: http.StatusNotFound, }, @@ -229,10 +232,12 @@ func Test_authorize(t *testing.T) { return &db.Repository{Name: name}, nil }, }, - mockPermsStore: &db.MockPermsStore{ - MockAuthorize: func(userID, repoID int64, desired db.AccessMode, opts db.AccessModeOptions) bool { + mockPermsStore: func() db.PermsStore { + mock := db.NewMockPermsStore() + mock.AuthorizeFunc.SetDefaultHook(func(ctx context.Context, userID int64, repoID int64, desired db.AccessMode, opts db.AccessModeOptions) bool { return desired <= db.AccessModeRead - }, + }) + return mock }, expStatusCode: http.StatusOK, expBody: "owner.Name: owner, repo.Name: repo", @@ -242,7 +247,10 @@ func Test_authorize(t *testing.T) { t.Run(test.name, func(t *testing.T) { db.SetMockUsersStore(t, test.mockUsersStore) db.SetMockReposStore(t, test.mockReposStore) - db.SetMockPermsStore(t, test.mockPermsStore) + + if test.mockPermsStore != nil { + db.SetMockPermsStore(t, test.mockPermsStore()) + } m := macaron.New() m.Use(macaron.Renderer()) diff --git a/internal/route/repo/http.go b/internal/route/repo/http.go index 0d6632be..7e970194 100644 --- a/internal/route/repo/http.go +++ b/internal/route/repo/http.go @@ -166,7 +166,7 @@ Please create and use personal access token on user settings page`) if isPull { mode = db.AccessModeRead } - if !db.Perms.Authorize(authUser.ID, repo.ID, mode, + if !db.Perms.Authorize(c.Req.Context(), authUser.ID, repo.ID, mode, db.AccessModeOptions{ OwnerID: repo.OwnerID, Private: repo.IsPrivate, |