diff --git a/services/repository/delete.go b/services/repository/delete.go index 3ea7e51a9b..8766204f34 100644 --- a/services/repository/delete.go +++ b/services/repository/delete.go @@ -13,6 +13,7 @@ import ( activities_model "forgejo.org/models/activities" admin_model "forgejo.org/models/admin" asymkey_model "forgejo.org/models/asymkey" + auth_model "forgejo.org/models/auth" "forgejo.org/models/db" git_model "forgejo.org/models/git" issues_model "forgejo.org/models/issues" @@ -189,6 +190,7 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID &actions_model.ActionUser{RepoID: repoID}, &repo_model.RepoArchiveDownloadCount{RepoID: repoID}, &actions_model.ActionRunnerToken{RepoID: optional.Some(repoID)}, + &auth_model.AccessTokenResourceRepo{RepoID: repoID}, ); err != nil { return fmt.Errorf("deleteBeans: %w", err) } diff --git a/services/repository/repository_test.go b/services/repository/repository_test.go index 5f63e4d9cb..e5ae3ecb32 100644 --- a/services/repository/repository_test.go +++ b/services/repository/repository_test.go @@ -6,6 +6,7 @@ package repository import ( "testing" + auth_model "forgejo.org/models/auth" "forgejo.org/models/db" repo_model "forgejo.org/models/repo" "forgejo.org/models/unit" @@ -62,3 +63,19 @@ func TestDeleteRepository(t *testing.T) { doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) require.NoError(t, DeleteRepository(t.Context(), doer, repo, false)) } + +func TestDeleteRepositoryWithReferences(t *testing.T) { + require.NoError(t, unittest.PrepareTestDatabase()) + + repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) + + token1 := unittest.AssertExistsAndLoadBean(t, &auth_model.AccessToken{ID: 1}) + err := db.Insert(t.Context(), &auth_model.AccessTokenResourceRepo{ + TokenID: token1.ID, + RepoID: repo.ID, + }) + require.NoError(t, err) + + doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) + require.NoError(t, DeleteRepository(t.Context(), doer, repo, false)) +}