From 3df33799c1b8775b4110ed11171a37f6c5ef4ae2 Mon Sep 17 00:00:00 2001 From: Dhruv Manilawala Date: Fri, 22 Jul 2022 03:01:22 +0530 Subject: [PATCH] Fix: Actor is required to get user repositories (#20443) Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Andrew Thornton --- models/repo/repo_list.go | 4 ++++ services/user/user.go | 1 + services/user/user_test.go | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/models/repo/repo_list.go b/models/repo/repo_list.go index a70fc8efd40..9de76fa5ffa 100644 --- a/models/repo/repo_list.go +++ b/models/repo/repo_list.go @@ -6,6 +6,7 @@ package repo import ( "context" + "errors" "fmt" "strings" @@ -695,6 +696,9 @@ func GetUserRepositories(opts *SearchRepoOptions) (RepositoryList, int64, error) } cond := builder.NewCond() + if opts.Actor == nil { + return nil, 0, errors.New("GetUserRepositories: Actor is needed but not given") + } cond = cond.And(builder.Eq{"owner_id": opts.Actor.ID}) if !opts.Private { cond = cond.And(builder.Eq{"is_private": false}) diff --git a/services/user/user.go b/services/user/user.go index 448b7c2daf8..1edd9294cbf 100644 --- a/services/user/user.go +++ b/services/user/user.go @@ -75,6 +75,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) error { }, Private: true, OwnerID: u.ID, + Actor: u, }) if err != nil { return fmt.Errorf("SearchRepositoryByName: %v", err) diff --git a/services/user/user_test.go b/services/user/user_test.go index aefbcd9ecb4..d8673593df2 100644 --- a/services/user/user_test.go +++ b/services/user/user_test.go @@ -60,6 +60,26 @@ func TestDeleteUser(t *testing.T) { assert.Error(t, DeleteUser(db.DefaultContext, org, false)) } +func TestPurgeUser(t *testing.T) { + test := func(userID int64) { + assert.NoError(t, unittest.PrepareTestDatabase()) + user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: userID}).(*user_model.User) + + err := DeleteUser(db.DefaultContext, user, true) + assert.NoError(t, err) + + unittest.AssertNotExistsBean(t, &user_model.User{ID: userID}) + unittest.CheckConsistencyFor(t, &user_model.User{}, &repo_model.Repository{}) + } + test(2) + test(4) + test(8) + test(11) + + org := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 3}).(*user_model.User) + assert.Error(t, DeleteUser(db.DefaultContext, org, false)) +} + func TestCreateUser(t *testing.T) { user := &user_model.User{ Name: "GiteaBot",