// Copyright 2017 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package repository_test import ( "testing" actions_model "gitea.dev/models/actions" "gitea.dev/models/db" git_model "gitea.dev/models/git" "gitea.dev/models/organization" repo_model "gitea.dev/models/repo" "gitea.dev/models/unittest" user_model "gitea.dev/models/user" repo_service "gitea.dev/services/repository" "github.com/stretchr/testify/assert" ) func TestTeam_HasRepository(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) test := func(teamID, repoID int64, expected bool) { team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID}) assert.Equal(t, expected, repo_service.HasRepository(t.Context(), team, repoID)) } test(1, 1, false) test(1, 3, true) test(1, 5, true) test(1, unittest.NonexistentID, false) test(2, 3, true) test(2, 5, false) } func TestTeam_RemoveRepository(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) testSuccess := func(teamID, repoID int64) { team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID}) assert.NoError(t, repo_service.RemoveRepositoryFromTeam(t.Context(), team, repoID)) unittest.AssertNotExistsBean(t, &organization.TeamRepo{TeamID: teamID, RepoID: repoID}) unittest.CheckConsistencyFor(t, &organization.Team{ID: teamID}, &repo_model.Repository{ID: repoID}) } testSuccess(2, 3) testSuccess(2, 5) testSuccess(1, unittest.NonexistentID) } func TestDeleteOwnerRepositoriesDirectly(t *testing.T) { unittest.PrepareTestEnv(t) user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) assert.NoError(t, repo_service.DeleteOwnerRepositoriesDirectly(t.Context(), user)) } func TestDeleteRepositoryDirectlyPurgesRepoScopedRows(t *testing.T) { unittest.PrepareTestEnv(t) // One row per table that repository deletion used to leave behind (#38494). assert.NoError(t, db.Insert(t.Context(), &actions_model.ActionVariable{RepoID: 1, Name: "to_purge", Data: "value"}, &actions_model.ActionRunAttempt{RepoID: 1, RunID: unittest.NonexistentID, Attempt: 1}, &actions_model.ActionTasksVersion{RepoID: 1, Version: 1}, &git_model.RenamedBranch{RepoID: 1, From: "old-name", To: "new-name"}, &git_model.CommitStatusSummary{RepoID: 1, SHA: "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef", State: "success"}, &repo_model.RepoTransfer{RepoID: 1, DoerID: 2, RecipientID: 3}, )) unittest.AssertExistsAndLoadBean(t, &git_model.CommitStatusIndex{RepoID: 1}) assert.NoError(t, repo_service.DeleteRepositoryDirectly(t.Context(), 1)) unittest.AssertNotExistsBean(t, &actions_model.ActionVariable{RepoID: 1}) unittest.AssertNotExistsBean(t, &actions_model.ActionRunAttempt{RepoID: 1}) unittest.AssertNotExistsBean(t, &actions_model.ActionTasksVersion{RepoID: 1}) unittest.AssertNotExistsBean(t, &git_model.RenamedBranch{RepoID: 1}) unittest.AssertNotExistsBean(t, &git_model.CommitStatusSummary{RepoID: 1}) unittest.AssertNotExistsBean(t, &git_model.CommitStatusIndex{RepoID: 1}) unittest.AssertNotExistsBean(t, &repo_model.RepoTransfer{RepoID: 1}) }